我在Azure App Service上将Web应用程序部署为Web App。 我将一些证书上传到Azure门户,因为Web App通过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流量以外的目的的证书,您需要一个Cloud Service,而且(我认为)App Services不支持它?
答案 0 :(得分:12)
您需要将 WEBSITE_LOAD_CERTIFICATES 添加到您的网络应用“应用设置”中。将值设置为“*”或要加载到Web应用程序环境中的证书的指纹。我个人的偏好是将此值设置为“*”,这意味着,加载所有已上载的证书。
应用此更改后,您应该可以从Web应用程序代码中加载证书。
有关如何使用证书的更多信息here。这篇文章有点陈旧(在今天的标准中),但仍然相关。