首先,您通常使用您的私钥生成证书请求,然后将该请求提供给 CA(在本例中为 Go Daddy)。这样 CA 就不会得到你的私钥。
如果您只是在没有证书请求的情况下请求证书,那么 CA 必须为您生成一个私钥(这不是一个好主意,因为这是使用您的证书的关键,现在 CA 可以访问它...)。如果您这样做了,那么 CA 必须向您提供私钥及其上设置的任何密码(如果有)。
还建议您同时获取生成的证书与 CA 根证书之间的中间证书。这些很有用,因为某些客户端在没有提供它们的情况下将无法连接到您的服务器,例如火狐浏览器。
因此,您希望将私钥、CA 提供的公共证书和 CA 中间证书组合成一个 PFX 文件,供您的 Web 服务器使用。
私钥可以是一到两种主要格式:
- DER - 这是一种二进制格式
- PEM - 这是一种文本格式 - 它是 DER 格式的 base64 版本,周围有页眉和页脚。
证书密钥可以有多种格式,但最有可能的是:
- DER - 这是一种二进制格式
- PEM - 这是一种文本格式 - 它是 DER 格式的 base64 版本,周围有页眉和页脚。
文件扩展名并不总是格式的最佳指标。尝试在文本编辑器中查看它们,看看它是否看起来像带有页眉和页脚的二进制或 base64 文本。
openssl 中生成 PFX 文件的基本命令是 pkcs12 命令。
你通常会这样做:
openssl pkcs12 -export -out name.pfx xxx
其中“xxx”取决于您必须提供的内容。例如,如果您有:
- key.pem - pem 格式的私钥
- cert.pem - pem 格式的公钥
- inter.pem - pem 格式的 CA 中间证书
那么整个命令将是:
openssl pkcs12 -export -out name.pfx -inkey key.pem -in cert.pem -certfile inter.pem
如果您不想包含 inter.pem,只需删除“-certfile inter.pem”参数即可。
如果您的任何文件是 DER 格式,您需要先将它们转换为 PEM 格式。
对于证书,您可以像这样使用 openssl x509 命令:
openssl x509 -in cert.der -inform der -out cert.pem
转换私钥取决于使用 openssl rsa 或 ec 命令的私钥类型。将密钥转换为证书的命令格式基本相同,但您使用 rsa 或 ec 而不是 x509。