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

Flu*_*ike 47 openssl certificate windows-server-2012

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

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

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

Tay*_*nan 84

我在使用 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
Run Code Online (Sandbox Code Playgroud)

  • 完全修补的 Windows 2016 也存在同样的问题 - 仍然支持我的 a$$!怀念以前的MS (6认同)
  • 添加“-certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -nomac”后,它可以在 Windows 上运行。`-nomac` 很重要。我首先忽略了它。没有它,我不断收到密码错误的错误。 (4认同)

Flu*_*ike 30

事实证明,OpenSSL 3.0.0在导出 .pfx 文件时默认使用 AES256来加密私钥。

根据此论坛帖子,旧版本的 Windows 显然不支持 AES256。

当我尝试使用 OpenSSL 1.1.1 创建 .pfx 文件时,它工作正常。这显然是因为OpenSSL 1.1.1 在导出 .pfx 文件时默认使用 TrippleDES来加密私钥。

  • 我尝试了命令 `openssl pkcs12 -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -export -out ca.pfx -inkey ca.key -in ca.crt` (因为我无法获取“-v1” “选项起作用),但它仍然不起作用。但无论如何我使用 OpenSSL 1.1.1 解决了这个问题。 (2认同)

jca*_*ron 23

在尝试生成 .pfx 并将其导入 Windows Server 2012 R2 时偶然发现了同样的问题,而涉及-certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES和/或的其他答案和评论-nomac对我不起作用。

最终对我有用的是使用该-legacy选项。

从联机帮助页:

-遗产

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

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

  • 最后一个解决方案:涉及 `-certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES` 和 `-nomac` 的答案解决了我密码错误的问题,但导入在所有 Windows 计算机上仍然不成功。“-legacy”选项为我解决了这个问题。谢谢你! (3认同)

小智 5

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

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