###l
用C语言实现了很多种常见的加密算法:
三个组件:
1、libcrypto 库文件 专门实现加密解密的库文件,
2、libssl 库文件,主要是实现https这样协议
3、openssl 多用途加密工具,还可以制作一个CA出来
一般来讲openssl都会装上,使用一个openssl加一个错误的选项就能看见它的使用
选项
单项加密时的用法:
openssl enc -des3 -salt -a -in inittab -out inittab.des3
实现对于一个文件加密 enc是加密 -des3是加密算法 -salt 加入杂质
-in后面跟文件名 -out加密后放在哪个文件里
openssl enc -d -des3 -salt -a -in inittab.des3 -out inittab
-d表示解密
openssl dgst -sha inittab 表示计算inittab文件的特征值
用户认证时passwd的用法,怎么去帮你生成一个类似于保存在/etc/shadow文件里的密码一样
openssl passwd -1 -1表示使用MD5算法
[root@server46 ~]# openssl passwd -1
Password:
Verifying - Password:
$1$7HW0kv8y$IntkyNppqtTQ2fHAJ1FMk1
openssl passwd -1 -salt 杂质 这样计算结果就一样了
[root@server46 ~]# openssl passwd -1
Password:
Verifying - Password:
$1$7HW0kv8y$IntkyNppqtTQ2fHAJ1FMk1
[root@server46 ~]# openssl passwd -1 -salt 7HW0kv8y
Password:
$1$7HW0kv8y$IntkyNppqtTQ2fHAJ1FMk1
man sslpasswd可以查看用法
非对称加密:
openssl怎样发证:
切换目录到/etc/pki/tls/certs
make *.key就可以产生一个密钥
make *.cert可以生成一个证书,主要是看文件后缀生成文件,是redhat提供的便捷方式
make my.key就可以生成一个密钥
(umask 66;openssl genrsa 1024 > my.key)
生成私钥文件
这是在一个子shell里进行,umask只对后面的这一个命令有效,umask执行完以后就恢复到原来
提取公钥:
openssl rsa -in my.key -pubout -out myr.pubkey
[root@server46 certs]# (umask 66; openssl genrsa 1024 > my.key)
Generating RSA private key, 1024 bit long modulus
...++++++
........++++++
e is 65537 (0x10001)
[root@server46 certs]# cat my.key
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDRSlvZZ7p7sRbczdGhcw/8z5mzEKIjDZw63ffsxCDC9XWKO0vE
FaxbPrgwZYF+iu8QHUKVzuJoqO8MmfY7p9aGz2WT2GQ/wUTnjsbL8mNbSclV/2m8
K0XZqSLsKzuhaBOFC+sylQvnZiXP23slNWZIuV0EVh9k2ULSV4f8B5QtywIDAQAB
AoGATNkA4NM1pjVgL7NjReT5+dpAlX+GCVj2BKd8YXOik/ONNTSQnW9X2ikteJfM
9KoPHdugl2FfwQ5GuFnQEBeQrUV5SnR09k2OZTsdOMVNXqamf4V/rXidOs+L3RVK
Q4X6vpasS1CJ1/q/fCcsi1Nl0nLcV9stLXbmEzYqE6+hwAECQQDqxrbF5W9j5vVM
ZkKmvx1ViojwTJovlkOtl6RSkqHMR3msnHhizbc+iGrGiP/vH9H+AvDK7AJPNVng
kHAa5YGbAkEA5DXX0dIajPoAdLvmNG1kNY1fp6IJjfR8UJRWeOwjhVjul1yp47hP
bM/f55OmowdsQamfNVwk4P5iYIcZ8uwfkQJBAJoXToLYsaF6Rumb/IcAzLoGMRa2
0EQHdegLrVhc0UEIcH2wPPtsVab/VkV0SbaixerX9z7YZDOkqpbPdiTRGZ0CQBWv
2DakVMmY6HovcQ0CaEd+i9yOVYIb/cRalG0hY67EaMgRkkOFvGaGyqxjJ67Ogccr
q2mSvB51jjvGGv0u20ECQQCHvgJkF3xHkQnahqCTTgym0CNocHhVfyo6KveIfBAk
Vz69+zsGK2kKBOseSbgRKqVmM21Iqu0aZatjEevHwZIo
-----END RSA PRIVATE KEY-----
[root@server46 certs]# openssl rsa -in my.key -pubout -out my.pubkey
writing RSA key
[root@server46 certs]# cat my.pubkey
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRSlvZZ7p7sRbczdGhcw/8z5mz
EKIjDZw63ffsxCDC9XWKO0vEFaxbPrgwZYF+iu8QHUKVzuJoqO8MmfY7p9aGz2WT
2GQ/wUTnjsbL8mNbSclV/2m8K0XZqSLsKzuhaBOFC+sylQvnZiXP23slNWZIuV0E
Vh9k2ULSV4f8B5QtywIDAQAB
-----END PUBLIC KEY-----
发证步骤:
1、首先生成一对密钥(S/P密钥)
2、然后把公钥放在一个叫证书颁发请求里(里面包括你的公钥,姓名,地址,等一些列描述信息)
发送到证书颁发机构
3、CRT证书就生成了
自己成为CA:
1、cd /etc/pki/CA
有一个 private 文件,里面专门放CA的私钥文件
2、给自己生成一个密钥
(umask 66; openssl genrsa 2048 > private/cakey.pem[这里只能叫cakey.pem])
ll private
给自己发证书:
openssl req -new -x509 -key private/cake.pem -out cacert.pem
openssl req -new -x509 -key private/cake.pem -out cacert.pem
接下来会提示你输入一些信息
写完之后就是一个自签的证书
接下来就可以给别人发证了
view plaincopy to clipboardprint?
openssl req -new -x509 -key private/cake.pem -out cacert.pem -days3655
openssl req -new -x509 -key private/cake.pem -out cacert.pem -days3655
3、编辑cA的配置文件
view plaincopy to clipboardprint?
vim /etc/pki/tls/openssl.cnf这里定义了
vim /etc/pki/tls/openssl.cnf这里定义了
找到【 CA_default 】字段
修改 dir 改为绝对路径
这里有些目录没有需要我们手动建立,在这个配置文件内我们都能找到
然后还可以修改默认信息
到这里才 算是一个完整的CA
4、接下来给web服务器做一个证书:
view plaincopy to clipboardprint?
cd /etc/httpd
mkdir ssl
cd ssl
(umask 66;openssl genrsa 2048 > web.key)
cd /etc/pki/CA
mkdir certs crl newcerts
touch index.txt serial
echo 01 > serial
openssl req -new -key wed.key -out wed.csr 这是一个证书颁发请求
opssl ca -in wed.csr -out web.crt 颁发证书
cd /etc/httpd
mkdir ssl
cd ssl
(umask 66;openssl genrsa 2048 > web.key)
cd /etc/pki/CA
mkdir certs crl newcerts
touch index.txt serial
echo 01 > serial
openssl req -new -key wed.key -out wed.csr 这是一个证书颁发请求
opssl ca -in wed.csr -out web.crt 颁发证书
然后敲两次回车 就ok了
2019-07-17 22:56:28