OpenSSL 是一个非常有用的工具,可以方便的为网站部署 SSL 加密认证。虽然为网站添加证书并不是难事,但是验证证书以确保在使用证书过程中不出现问题就显得尤其重要。
在我第一次为网站部署 SSL 加密认证时,的确遇到了很多问题,多数因为对于 SSL 加密知识的缺乏。
本文将讲解一些在部署网站 SSL 证书时的常用命令,有助于加深对于 SSL 的认识。
在使用 SSL 命令之前,首先要确保系统已经安装了 OpenSSL 软件包,如果没有安装,则使用以下命令安装:
# apt-get install openssl //Debian OR # yum install openssl //RHEL CentOS
现在开始使用 OpenSSL 常用命令的演示。
1] 创建 SSL Key
使用如下命令,就可以创建 SSL Key:
# openssl genrsa -out www.rultr.com.in.key 2048
命令执行完成后,就会在当前目录下创建一个名为”www.rultr.com.in.key”的私钥文件,通过这个私钥文件,就可以生成对应的公钥文件。
2] 创建 CSR(Certificate Signing Request)证书签名申请
证书签名申请(Certificate Signing Request)是在获取 SSL 证书时,需要首先生成的 CSR 文件,需要将此申请文件提交给证书颁发机构(CA),由 CA 来生成签名证书。
CSR 文件一般以”.csr”为后缀,包含了公司名称、地址以及域名等信息,同时还需使用自己私钥文件来生成:
# openssl req -new -key www.rultr.com.in.key -out www.rultr.com.in.csr
图.1 生成签名申请文件
需要特别提醒的是,除非特别必要,尽量将”A challenge password”设置为空,否则在每次使用时都要输入密码。
3] 检查私钥及申请文件 MD5 值
在正式生成 SSL 证书之前,最好使用如下命令检查一下私钥和申请文件的 MD5 值是否一致,如果存在差异,那么生成的证书就会有问题,需要重新申请:
# openssl rsa -noout -modulus -in www.rultr.com.in.key | openssl md5 # openssl req -noout -modulus -in www.rultr.com.in.csr | openssl md5
图.2 检查私钥及申请文件 MD5 值
4] 生成自签名 SSL 证书
有了私钥文件和签名文件,就可以生成供 Apache 或者 Nginx 等 Web 服务器使用的证书文件。这个步骤可以由 CA 来完成,当然,我们也可以自己充当 CA 机构,自行签名生成证书文件。
使用如下命令,就可以生成与私钥(.key 后缀)和申请文件(.csr 后缀)对应的证书文件:
# openssl x509 -req -days 365 -in www.rultr.com.in.csr -signkey www.rultr.com.in.key -out www.rultr.com.in.crt
图.3 生成自签名证书
5] 验证证书文件 MD5 值
使用如下命令,验证生成的证书文件是否正确(也就是同私钥文件对应):
# openssl x509 -noout -modulus -in www.rultr.com.in.crt | openssl md5
图.4 验证证书文件 MD5 值
6] 查询 SSL 证书到期时间
有了 SSL 证书文件,就可以通过如下命令查询其到期时间:
# openssl x509 -noout -in www.rultr.com.in.crt -dates
图.5 查看 SSL 证书到期时间
可以看到,证书的到期时间同当初使用命令设置的时间相同。
7] 解密 CSR 文件
使用以下命令,就可以解密 csr 文件,了解申请的具体信息:
# openssl req -in www.rultr.com.in.csr -noout -text
图.6 解密申请文件
8] 删除密码短语
如果已经为私钥设置了密码短语,而不想在证书中使用该密码短语,可以使用如下命令删除它。当然,保险起见,首先可以保留一个文件备份:
# cp www.rultr.com.in.key www.rultr.com.in.key-orig # openssl rsa -in www.rultr.com.in.key -out new.www.rultr.com.in.key
图.7 删除私钥密码短语
此时,新生成的私钥文件就已经删除了密码短语。
在本文中,几乎将所有”重要的 OpenSSL 命令”及其示例包括在内,这些示例是系统管理员在处理 OpenSSL 时需要使用的。
如果错过了什么,请通过评论让大家知道,并且不要忘记与朋友分享。