将 .pfx 文件导入 Windows 证书存储时出现“您输入的密码不正确”

问题描述 投票:0回答:8

它在 Windows 10 上工作正常,但当我尝试在 Windows Server 2012 上导入相同的 .pfx 文件时,它失败并显示消息“您输入的密码不正确”。

我使用 OpenSSL 3.0.0 创建我的证书、私钥和 .pfx 文件。我确信我使用了正确的密码。

有什么原因导致我无法在 Windows Server 2012 上导入 .pfx 文件吗?

openssl certificate windows-server-2012
8个回答
63
投票

我在 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

26
投票

事实证明,OpenSSL 3.0.0 在导出 .pfx 文件时默认使用 AES256 来加密私钥。 根据 此论坛帖子,

旧版本的 Windows 显然不支持 AES256。

当我尝试使用 OpenSSL 1.1.1 创建 .pfx 文件时,它工作正常。这显然是因为

OpenSSL 1.1.1 在导出 .pfx 文件时默认使用 TrippleDES 来加密私钥。

在尝试生成 .pfx 并将其导入 Windows Server 2012 R2 时偶然发现了同样的问题,并且涉及

14
投票
和/或

-nomac

 的其他答案和评论对我不起作用。
最终对我有用的是使用 
-legacy

选项。

来自联机帮助页:

-遗产

使用旧版操作模式并自动加载旧版提供程序。如果 OpenSSL 未在系统范围内安装,则还需要使用“-provider-path ./providers”或设置环境变量 OPENSSL_MODULES 以指向可以找到提供程序的目录。

在传统模式下,证书加密的默认算法是 RC2_CBC 或 3DES_CBC,具体取决于构建中是否启用 RC2 密码。私钥加密的默认算法是 3DES_CBC。如果未指定旧选项,则不会加载旧提供程序,并且证书和私钥的默认加密算法是 AES_256_CBC,并使用 PBKDF2 进行密钥派生。

对于那些仍然因为同样的问题而头撞墙的人。我愚蠢的银行开始颁发这些受密码保护的 AES256 证书。它采用 .pfx 文件的形式。您可以猜测旧版本的 Windows(如 Windows 7)无法导入该版本,并且错误也很令人困惑:“密码不正确”。

3
投票
解决方案:将 .pfx 导入较新版本的 Windows(如 Windows 10)。这个很重要。导入时,将证书标记为可导出。这允许您随后使用较旧的 Triple-DES-SHA1 算法导出证书或/并且无需密码来保护密钥。然后导入到您的旧系统中。干杯。

还值得注意的是,如果您尝试将 .pfx 文件导入尚未“激活”的 Windows Server,您将收到此错误。

1
投票
服务器激活后,它将正常导入。

我遇到了这个问题,我尝试导入包含私钥和公共证书的 PFX,但它不包含链。一旦我将证书的完整链添加到 PFX 中,导入就会顺利进行。

1
投票

如果您无法让它为您转换,只需在 Windows 中安装证书,然后将其导出为 TripleDES

1
投票

如果您只是想导出密钥,而不必成为 OpenSSL 专家,您可以使用 Keystore explorer:

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.