【发布时间】:2021-11-27 09:42:40
【问题描述】:
我们有一个运行了一年的 Azure 函数 (.NET 4.7.2),它使用客户端证书向 Web 服务发送消息。必须更新此证书,但现在我们已经完成,发送消息时收到此异常;
System.Security.Cryptography.CryptographicException: Invalid provider type specified.
Azure 在读取私钥时遇到问题,问题似乎是从我的本地计算机导出它。这个问题会不会源于最初的 CSR?只要有效,以前的证书仍然可以正常工作。请注意,我可以使用本地计算机上的新证书发送消息。 我尝试过的事情;
- 使用 MMC 设置的所有组合来导出 .pfx 文件
- 使用https://stackoverflow.com/a/34103154/6033193 中的答案将证书密钥转换为 RSA 格式并上传新生成的 .pfx
- 使用
CertUtil.exe -store -user my比较新旧证书。它们都有 ProviderMicrosoft Enhanced Cryptographic Provider v1.0,除了哈希值和名称之外,看起来都一样。 - 从设置中删除 Azure Key Vault 并将 pfx 直接上传到应用服务
- 从本地文件夹读取 .pfx 并像这样使用它:
new X509Certificate2(certByes, "password", X509KeyStorageFlags.PersistKeySet);。这很有效,因此在将 .pfx 文件上传到 Azure 门户时似乎出现了问题。
还有什么我可以尝试的吗?
【问题讨论】:
-
能否请您检查一下这些类似的主题是否对您有用:SO Thread1、SO Thread2、SO Thread3
-
@HariKrishnaRajoli-MT 非常感谢; stackoverflow.com/questions/50921099/…" 有完全正确的提示;"Microsoft 支持建议我将提供程序更改为"Microsoft Platform Crypto Provider""。这很有效!我将添加一个操作方法作为我如何转换 pfx 的答案。
标签: azure x509certificate azure-keyvault client-certificates service-model