【发布时间】:2022-12-17 13:40:29
【问题描述】:
我正在尝试运行一个使用 pfx 证书访问 API 的控制台应用程序,但出现以下错误。
2022-03-21 11:25:22.0244 - 错误:Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException:指定的网络密码不正确。 在 Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(ReadOnlySpan'1 rawData,SafePasswordHandle 密码,PfxCertStoreFlags pfxCertStoreFlags) 在 Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(ReadOnlySpan'1 rawData,字符串文件名,SafePasswordHandle 密码,X509KeyStorageFlags keyStorageFlags) 在 System.Security.Cryptography.X509Certificates.X509Certificate..ctor(字符串文件名,字符串密码,X509KeyStorageFlags keyStorageFlags) 在 System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(字符串文件名,字符串密码,X509KeyStorageFlags keyStorageFlags) 在 E:\repos\ADP_API\ADP_API\APICall.cs 中的 ADP_API.APICall.GetHttpClientHandler():第 315 行 在 E:\repos\ADP_API\ADP_API\APICall.cs 中的 ADP_API.APICall.Authenticate():第 79 行
在我的本地机器和我同事的机器上运行该应用程序。 pfx 文件创建时没有密码,因此不需要密码。当我们尝试在运行 Windows Server 2012 的服务器上运行它时,它说特定的网络密码不正确。
我尝试在服务器上安装证书,当我尝试从要求输入密码的窗口继续时,它以“您输入的密码不正确”作为响应。我再次尝试在我的本地机器上安装它,它允许我在没有密码的情况下通过密码窗口。
我尝试将 .key 和 .pem 文件添加到与 pfx 文件相同的文件夹中,但也没有成功。
【问题讨论】:
-
您是否以真实用户身份运行此程序?还是 IIS/windows 服务?是否安装了ssl加固?
-
有不同的是从输入的密码和使用的加密算法生成加密密钥。 Windows 2012 已过时,仅支持某些旧算法 (TripleDES_SHA1) 这样做。因此,它将无法打开使用新密钥生成 (AES256_SHA256) 算法的程序生成的 PFX 文件。所以正确的错误是“未知算法”,但 Windows 只显示“您输入的密码不正确”。
-
我在服务器 2012 上遇到了同样的问题,我最终将 pfx 文件转换为 pem 文件,然后像这样加载它
IssuerSigningKey = new SymmetricSecurityKey(System.IO.File.ReadAllBytes("path_to_some.pem")),然后添加 Bearers 令牌。
标签: api ssl encryption pfx