openssl软件包在安装之后,主要会生成三段重要内容:加密库
ssl相关库文件
openssl命令行工具
下面就来介绍一下openssl命令行工具的使用:
openssl和yum类似,有着许许多多的子命令:
如果要获得这些子命令的相关man文档,先使用whatis查看一下确定使用man的格式语法
其中常用的子命令有:
1.enc:实现对称加密,解密的命令
使用格式:openssl enc ciphername -a [-e] [-salt] -in filename -out filename
例如:openssl enc -des3 -a -in /etc/issue -out /root/issue.des3
-a:使用base64编码
-e:加密,默认行为,可以省略
ciphername:加密算法名称
-d:解密(使用格式相同)
2.dgst:实现提取数据指纹的命令
使用格式:openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] [-out filename]
例如:openssl dgst -MD5 /etc/login.defs将该文件的数据指纹使用MD5算法提取出输出至屏幕
其他实现提取数据指纹的命令:md5sum filename
sha1sum filename
sha*sum filename
3.rand:生成随机数的命令
使用格式:openssl rand [options] num
例如:openssl rand -base64 9(随便写的数字)生成随机数
可以使用-out 保存至文件
4.genrsa:生成私钥的命令(rsa算法。dsa算法的是gendsa)
使用格式:openssl genrsa [-out filename][-des] [-des3] [numbits]
例如:openssl genrsa -out /root/cacert.key 2048
生成一个长度为2048的私钥保存至指定文件,也可以使用-des等选项加密存放
5.rsa:从私钥中提取公钥的命令
使用格式:openssl rsa -in filename -pubout
从名为filename的私钥文件中提取公钥,可以使用输出重定向的方式保存,也可以使用选项保存
6.x509:用于查看证书内容的命令
使用格式:openssl x509 -text -in filename(证书)
7.req:用于生成证书签署请求或者自签证书的命令
使用格式:a.生成自签证书:
openssl req -new -x509 -key /path/to/private.key -out /path/to/cacert.pem
b.生成证书签署请求
openssl req -new -key /path/to/private.key -out /path/to/cacert.csr
8.ca:certificate authority 用于签署证书请求的命令
使用格式:openssl ca -in /path/to/cacert.csr -out /path/to/cacert.crt
如何在redhat系统上创建私有CA:
1.创建一对密钥
2.生成自签署证书
在redhat系统上,使用rpm包格式安装openssl会生成/etc/pki/等一系列目录以及文件
/etc/pki/tls/openssl.cnf定义了CA的工作目录,以及其中应该具有的文件
a.在/etc/pki/CA/private/目录下生成私钥,应保存为文件名为cakey.pem的文件(该名称可通过修改上述配置文件的值改变)
如图,生成2048位的私钥,保存为指定文件名,注意,应该将权限修改为最小权限
为了避免出错,我们将/etc/pki/tls/openssl.cnf中的CA相关定义截图出来:
所以private-key应该命名为cakey.pem。并放在指定目录下
b.生成自签署的证书,由配置文件定义,可知应保存在/etc/pki/CA目录下,命名为cacert.pem
openssl req -new -x509 -key ./private/cakey.pem -out cacert.pem
在使用req子命令的时候,-x509表示自签署证书
-key用于指定私钥
-out用于保存证书
c.根据/etc/pki/tls/openssl.cnf中【CA_default】段的相关定义在/etc/pki/CA目录下创建相关文件
至此,CA(certificate authority)创建完毕,可以为其他人签署证书请求了
当收到证书请求时,签署办法
openssl ca -in /path/to/cacert.csr -out /path/to/cacert.crt