OpenSSL 用法详解
OpenSSL :
组件:libcrypto,libssl
openssl
openssl
众多子命令,可分为三类:
标准命令
消息摘要命令(dgst子命令)
加密命令(enc子命令)
标准命令:enc,ca,reeq,genrsa…
linux系统上的随机数生成器
/dev/random :仅从熵池返回随机数,随机数用尽,阻塞进程
/dev/urandom :从熵池中返回随机数,随机数用尽,会利用软件生成伪随机数,不会阻塞进程,但不够安全
熵池中随机数的来源: 硬盘IO中断的时间间隔
使用openssl完成对称加密
支持的算法:3des、aes、blowfish、towfish
1、 enc 子命令:
加密:
]#openssl enc -e -des3 -a -salt -in fstab -out fstab.cipher解密:
]#openssl enc -d -des3 -a -salt -out fstab.out -in fstab.cipher使用openssl完成单向加密
2、 dgst 子命令
]#md5sum fstab]#openssl dgst -md5 fstab
使用openssl生成用户加密
生成随机数:
]#openssl rand -base64 6 #8进制随机数 ]#openssl rand -hex 30 #16进制随机数 ]#openssl passwd -1 -salt $(openssl rand -hex 6)
使用openssl完成公钥加密
加密解密
支持的算法:RSA、ELGamal
工具:openssl rsautl,gpg
数字签名
支持的算法:RSA、ELGamal、DSA
工具:openssl rsautl,gpg
密钥交换
支持的算法:RSA、DH
如何生成密钥对
如何生成私钥:
]#(umask 077;openssl genrsa -out /root/mykey.private 2048)
注意:生成的私钥除了属主,其他任何用户都不应该有任何权限
如何从公钥中提取私钥
]#openssl rsa -in /root/mykey.private -pubout -out /root/mykey.public
CA
公共权威CA
私有CA
如何自建CA:
openssl
openCA :二次封装的openssl。
配置文件:/etc/pki/tls/openssl.cnf

如何构建私有CA:
在确认配置为CA的服务器上生成一个自签证书,并为CA提供所需要的目录及文件
步骤:
1、 生成私钥:
]#(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)2、 生成自签证书:
]#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655-new :生成证书签署请求
-x509 :生成自签格式证书,专用于创建私有CA
-key :生成请求时用到的私钥文件路径
-out :生成的请求文件路径,如果自签操作将直接生成签署过的证书
-days :证书的有效时长,单位是day

3、 为CA提供所需的目录及文件
]#mkdir -pv /etc/pki/CA/{certs,crl,newcerts} ]#touch /etc/pki/CA/{serial,index.txt} ]#echo 01 > /etc/pki/CA/serial
要用到证书进行安全通信的服务器,需要向CA请求签署证书
步骤:
1 、在用到证书的主机上生成私钥
~]# mkdir /etc/httpd/ssl~]# cd /etc/httpd/ssl~]# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
2 、生成证书签署请求
]# openssl req -new -key httpd.key -out httpd.csr -days 365
3 、将请求发送到CA服务器上
]# scp httpd.csr root@10.1.154.97:/etc/pki/CA/certs4 、在CA上签署证书请求
]#openssl ca -in httpd.csr -out httpd.crt -days 365
5 、签署证书之后,将证书拷贝给请求的主机
]#scp httpd.crt root@10.1.154.94:/etc/httpd/ssl
6 、查看证书中的信息
]# openssl x509 -in httpd.crt -noout -serial -subject-serial :查看证书序列号
-subject :查看证书主体信息

7 、如何吊销证书,需要在CA上执行
(1)客户端获取要吊销证书的serial
]# openssl x509 -in httpd.crt -noout -serial -subject(2)CA吊销证书
先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致,一致,则吊销
]#openssl ca -revoke ./certs/httpd.crt
(3)生成证书吊销列表
]#echo 01 > /etc/pki/CA/crlnumber(4)更新证书吊销列表
]#openssl ca -gencrl -out ./certs/httpd.crt