openssl软件包在安装之后,主要会生成三段重要内容:加密库

                                ssl相关库文件

                                openssl命令行工具

下面就来介绍一下openssl命令行工具的使用:

   openssl和yum类似,有着许许多多的子命令:

             wKiom1Ylv1XgWou3AADqPubPRXw401.jpg

如果要获得这些子命令的相关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的文件(该名称可通过修改上述配置文件的值改变)

 wKioL1YmAoaAoKFIAAFDxFnkcDE043.jpg

如图,生成2048位的私钥,保存为指定文件名,注意,应该将权限修改为最小权限

为了避免出错,我们将/etc/pki/tls/openssl.cnf中的CA相关定义截图出来:

wKioL1YmA6WS7zljAAJLTqa7NrI100.jpg

所以private-key应该命名为cakey.pem。并放在指定目录下

b.生成自签署的证书,由配置文件定义,可知应保存在/etc/pki/CA目录下,命名为cacert.pem

wKioL1YmBMaxghHlAAJE2eLNh4Q960.jpg

 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目录下创建相关文件

 wKioL1YmBdDygPP4AAD8iZjKL8A065.jpg

至此,CA(certificate authority)创建完毕,可以为其他人签署证书请求了

当收到证书请求时,签署办法

 openssl ca -i/path/to/cacert.csr -out /path/to/cacert.crt