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 时需要使用的。

如果错过了什么,请通过评论让大家知道,并且不要忘记与朋友分享。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注