尝试在 .Net 7 中加载 .p12 证书时出现此错误:
System.Security.Cryptography.CryptographicException: 'The specified network password is not correct.'
使用此代码:
var certs = new X509Certificate2Collection();
certs.Import(certBytes, password);
在服务提供商的支持下进行一些邮件发送后,我尝试使用服务器证书连接,我得到了一个工作正常的新证书。
他们说第一个给出“网络密码不正确”的密码是在新版本的 OpenSSL 中使用 AES-256-CBC 创建的,新版本是使用 OpenSSL 1.1.1 和 pbeWithSHA1And40BitRC2-CBC 完成的,但是两者都是从相同的原始 pem 和密钥文件创建的。
有人知道为什么我无法在 .Net 7 中加载使用新 OpenSSL 和 AES-256-CBC 创建的证书吗?
Windows 10-1709 中似乎已添加 PFX 中对 AES-256-CBC 的 Windows 支持。 因此,如果您使用 Windows Server 2016,它将失败(因为仅 2016 的“1607”变体仍受支持)。
直到 2023 年,Windows 上的 .NET 从未查看过 PFX,只是将其发送到操作系统;但在 .NET 确实查看 PFX 的情况下,它支持现代算法,无论 Windows 版本如何。 (根据特定的 .NET 版本和特定的 PFX,这可能使您的 PFX 意外地在 Windows Server 2016 上工作......但一般情况下不会)