它在 Windows 10 上工作正常,但当我尝试在 Windows Server 2012 上导入相同的 .pfx 文件时,它失败并显示消息“您输入的密码不正确”。
我使用 OpenSSL 3.0.0 创建我的证书、私钥和 .pfx 文件。我确信我使用了正确的密码。
有什么原因导致我无法在 Windows Server 2012 上导入 .pfx 文件吗?
我在 OpenSSL 3 和 Windows Server 2012 R2 上遇到了同样的问题。然而,我最终组合了正确的参数组合。这似乎有效:
openssl pkcs12 -export -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -nomac -inkey contoso.com.key -in contoso.com.crt -out contoso.com-legacy.pfx
事实证明,OpenSSL 3.0.0 在导出 .pfx 文件时默认使用 AES256 来加密私钥。 根据 此论坛帖子,
旧版本的 Windows 显然不支持 AES256。OpenSSL 1.1.1 在导出 .pfx 文件时默认使用 TrippleDES 来加密私钥。在尝试生成 .pfx 并将其导入 Windows Server 2012 R2 时偶然发现了同样的问题,并且涉及-nomac
的其他答案和评论对我不起作用。
最终对我有用的是使用
-legacy
选项。
来自联机帮助页:
-遗产
使用旧版操作模式并自动加载旧版提供程序。如果 OpenSSL 未在系统范围内安装,则还需要使用“-provider-path ./providers”或设置环境变量 OPENSSL_MODULES 以指向可以找到提供程序的目录。对于那些仍然因为同样的问题而头撞墙的人。我愚蠢的银行开始颁发这些受密码保护的 AES256 证书。它采用 .pfx 文件的形式。您可以猜测旧版本的 Windows(如 Windows 7)无法导入该版本,并且错误也很令人困惑:“密码不正确”。在传统模式下,证书加密的默认算法是 RC2_CBC 或 3DES_CBC,具体取决于构建中是否启用 RC2 密码。私钥加密的默认算法是 3DES_CBC。如果未指定旧选项,则不会加载旧提供程序,并且证书和私钥的默认加密算法是 AES_256_CBC,并使用 PBKDF2 进行密钥派生。
还值得注意的是,如果您尝试将 .pfx 文件导入尚未“激活”的 Windows Server,您将收到此错误。
我遇到了这个问题,我尝试导入包含私钥和公共证书的 PFX,但它不包含链。一旦我将证书的完整链添加到 PFX 中,导入就会顺利进行。
如果您无法让它为您转换,只需在 Windows 中安装证书,然后将其导出为 TripleDES
如果您只是想导出密钥,而不必成为 OpenSSL 专家,您可以使用 Keystore explorer: