我将 Web 应用程序部署为 Azure 应用服务上的 Web 应用程序。 我将一些证书上传到 Azure 门户,因为 Web 应用程序通过 SSL 运行,并且我们使用另一个证书来执行一些解密。
对于后一种情况,我有一种方法(在本地运行良好)来查找证书:
public static X509Certificate2 FindCertificate(KnownCertificate certificate)
{
return FindCertificate(StoreName.My, StoreLocation.CurrentUser, X509FindType.FindByThumbprint, certificate.Thumbprint);
}
但我收到错误消息,指出未找到带有指纹 XYZ 的证书。不过,它存在于 Azure 门户上。 (我已经上传并导入了)
我正在按照 THIS POST 中的建议使用 StoreLocation.CurrentUser但它仍然不起作用。我是否使用了错误的商店,或者我还缺少什么?
编辑:我已成功远程调试我的 WebApp,并使用 VisualStudio 的 ImmediateWindow 功能执行了此代码
new X509Store(StoreName.CertificateAuthority, StoreLocation.CurrentUser).Certificates.Find(findType, findValue, false).Count;
测试了 StoreNames 和 StoreLocations 的所有可能组合,但无济于事。
是否可以像所述here那样如果要将证书用于 https 流量以外的目的,您需要云服务,并且(我认为)应用程序服务不支持它?
最佳答案
您需要将WEBSITE_LOAD_CERTIFICATES添加到您的网络应用的“应用设置”中。将该值设置为“*”或要加载到 Web 应用程序环境中的证书的指纹。我个人的偏好是将此值设置为“*”,这意味着加载所有已上传的证书。
应用此更改后,您应该能够从网络应用代码中加载证书。
有关如何使用证书的更多信息,请访问 here 。这篇文章有点过时(以今天的标准来看),但仍然具有相关性。
关于azure - 在 Azure Web 应用程序上找不到证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37457686/