从私钥和 CRT 文件生成 PFX 文件

从私钥和 CRT 文件生成 PFX 文件

我正在尝试为托管在 Azure 上的网站创建一个 PFX 文件。

我生成了mycsr.csr以及privatekey.key并从 Entrust 收到了 3 个文件root.crtIntermediate.crt以及ServerCertificate.crt

我尝试使用以下命令创建 PFX 文件

  • “C:\Program Files\OpenSSL-Win64\bin\openssl.exe” pkcs12 -export -out myPrivateCert.pfx -inkey PRIVATEKEY.key -in ServerCertificate.crt

这确实会生成一个 PFX 文件,但当我尝试将其上传到 Azure 时,它​​显示

  • 密码不正确或证书无效

我知道我输入的密码正确,所以我觉得我错误地生成了 PFX。

我是 SSL 证书的新手,不太清楚我收到的 3 个 CRT 文件之间的区别。如能得到任何帮助,我将不胜感激。

编辑

我尝试将 3 个 CRT 文件合并为一个chain.pem文件,其中 ServerCertificate 文件在第一个,然后是中间文件,然后是根文件。

然后我尝试使用以下命令生成 PFX 文件:

  • “C:\Program Files\OpenSSL-Win64\bin\openssl.exe” pkcs12 -in chain.pem -inkey PRIVATEKEY.key -export -out myPrivateCert.pfx

再次,此 PFX 文件不会上传到 Azure。

在此处输入图片描述

答案1

我按照@Lacek 的步骤操作,但这只是我的问题的一部分。按照他的步骤生成的 PFX 文件仍然未被 Azure 接受。这是完整的解决方案。

  1. 将 CRT 文件(ServerCertificate.crt、Intermediate.crt 和 root.crt)合并为单个 chain.pem 文件

  2. 然后使用 openssl 将此文件导出为 PFX

    openssl.exe pkcs12 -in chain.pem -inkey PRIVATEKEY.key -export -out myPrivateCert.pfx

  3. 然后将此 PFX 文件导入 MMC(Microsoft 管理控制台)。导入时务必选中“将此密钥标记为可导出...”

在此处输入图片描述

  1. 导入 PFX 文件后,您需要右键单击服务器证书,然后“导出...”。

在此处输入图片描述

  1. 导出时务必选中“是,导出私钥”。然后在下一页上选择“PFX”选项,然后选中“导出所有扩展属性”。为文件设置密码,然后保存文件。从 MMC 应用程序生成的 PFX 文件将正确上传到 Azure 门户。

我不是 SSL 证书的出口商,所以我不确定所有这些步骤是否都是必要的,我只知道它们对我有用。

我也不清楚 OpenSSL 生成的 PFX 文件和 MMC 生成的 PFX 文件之间的区别,但显然存在区别,而且 Azure 更喜欢后者。

希望这对其他人有帮助。

答案2

您的问题(可能)是 PFX 文件不包含所有证书链,因此如果中间件不受信任,您的证书也不会受到信任。

您需要做的是将所有证书复制到一个文件中,从“叶”到“根”,即服务器证书应该是第一个,然后是中间证书,然后是根证书。为此,证书文件必须采用 PEM 格式(从您帖子中的命令来看,它们似乎是 PEM 格式)。因此,您需要将所有证书连接到一个文件中:

type ServerCertificate.crt Intermediate.crt root.crt >chain.pem

然后将生成的文件转换为 PKCS12:

openssl.exe pkcs12 -in chain.pem -inkey PRIVATEKEY.key -export -out myPrivateCert.pfx

这样,生成的文件应该包含链中的所有证书以及它们之间的关系。

答案3

如果我发帖晚了,我很抱歉......我刚刚才看到它......

问题在于您必须在运行命令的同一台计算机中导入 PFX 证书(“C:\Program Files\OpenSSL-Win64\bin\openssl.exe”pkcs12 -export -out myPrivateCert.pfx -inkey PRIVATEKEY.key -in ServerCertificate.crt)

在该特定计算机上,证书密码将起作用。

您必须确保将私钥标记为可导出(在导入过程中)。这样您就可以从 MMC 控制台再次导出它并分配相同或新的密码。并且此密码可以在任何其他 Windows 计算机上使用。

我希望这可以帮助任何人。

杰拉尔多

相关内容