2.5. 使用私有 CA 使用 OpenSSL 为 CSR 发布证书
要让系统建立一条 TLS 加密的通信频道,证书颁发机构(CA)必须为它们提供有效的证书。如果您有私有 CA,您可以通过从系统签署证书签名请求(CSR)来创建请求的证书。
前提条件
- 您已配置了私有 CA。如需更多信息,请参阅使用 OpenSSL 创建私有 CA 部分。
- 您有一个包含 CSR 的文件。您可以在 第 2.3 节 “使用 OpenSSL 为 TLS 服务器证书创建私钥和 CSR” 部分找到创建 CSR 的示例。
流程
可选:使用您选择的文本编辑器,来准备一个 OpenSSL 配置文件,以便向证书添加扩展,例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,上例仅演示了原则,且
openssl
不会将所有扩展自动添加到证书中。您必须将所需的扩展添加到 CNF 文件中,或者将它们附加到openssl
命令的参数中。使用
x509
工具创建基于 CSR 的证书,例如:openssl x509 -req -in <server_cert.csr> -CA <ca.crt> -CAkey <ca.key> -days 365 -extfile <openssl.cnf> -extensions <server_cert> -out <server_cert.crt>
$ openssl x509 -req -in <server_cert.csr> -CA <ca.crt> -CAkey <ca.key> -days 365 -extfile <openssl.cnf> -extensions <server_cert> -out <server_cert.crt> Signature ok subject=C = US, O = Example Organization, CN = server.example.com Getting CA Private Key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要提高安全性,请在从 CSR 创建另一个证书前删除序列号文件。这样,您确保序列号始终是随机的。如果您省略了指定自定义文件名的
CAserial
选项,则序列号文件名与证书的文件名相同,但其扩展名被.srl
扩展名替换(上例中的server-cert.srl
)。