5.5. 证书颁发机构
如果您网络上的服务需要多个自签名证书,则可能值得额外努力设置您自己的内部 认证中心(CA). 使用由您自己的 CA 签署的证书,允许使用证书的各种服务轻松信任使用同一 CA 颁发的证书的其他服务。
1. 首先,创建保存 CA 证书和相关文件的目录:
须藤 mkdir /etc/ssl/CA
须藤 mkdir /etc/ssl/newcerts
2. CA 需要一些额外的文件来操作,一个用来跟踪 CA 使用的最后一个序列号,每个证书必须有一个唯一的序列号,另一个文件用来记录哪些证书已经颁发:
sudo sh -c "echo '01' > /etc/ssl/CA/serial" sudo touch /etc/ssl/CA/index.txt
3. 第三个文件是CA配置文件。 虽然不是绝对必要,但在颁发多个证书时非常方便。 编辑 /etc/ssl/openssl.cnf,而在 [CA_default] 更改:
dir = /etc/ssl # 保存所有内容 database = $dir/CA/index.txt # 数据库索引文件。 certificate = $dir/certs/cacert.pem # CA 证书
serial = $dir/CA/serial # 当前序列号 private_key = $dir/private/cakey.pem# 私钥
4. 接下来,创建自签名根证书:
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
然后,系统会要求您输入有关证书的详细信息。
5. 现在安装根证书和密钥:
sudo mv cakey.pem /etc/ssl/private/ sudo mv cacert.pem /etc/ssl/certs/
6. 您现在可以开始签署证书了。 需要的第一项是证书签名请求 (CSR),请参阅第 5.2 节“生成证书签名请求 (CSR)” [p. 199] 了解详情。 获得 CSR 后,输入以下内容以生成由 CA 签名的证书:
须藤 openssl ca -in server.csr -config /etc/ssl/openssl.cnf
输入 CA 密钥的密码后,系统将提示您签署证书,并再次提交新证书。 然后,您应该会看到与证书创建相关的大量输出。
7. 现在应该有一个新文件, /etc/ssl/newcerts/01.pem,包含相同的输出。 复制并粘贴以以下行开头的所有内容: -----开始认证----- 并继续通过这条线: ----结束证书----- 行到以将安装证书的服务器的主机名命名的文件。 例如 mail.example.com.crt, 是一个很好的描述性名称。
后续证书将被命名 02.PEM, 03.PEM等等。
更换 mail.example.com.crt 使用您自己的描述性名称。
8. 最后,将新证书复制到需要它的主机上,并配置相应的应用程序以使用它。 安装证书的默认位置是 /etc/ssl/证书. 这使得多个服务可以使用同一个证书,而无需过于复杂的文件权限。
对于可以配置为使用 CA 证书的应用程序,您还应该复制 /etc/ssl/certs/cacert.pem 文件到 /etc/ssl/证书/ 每个服务器上的目录。