我在Azure中有一个B1应用服务,我已经在其中安装了我的证书,如下所示:
当我尝试获取证书时,它无法找到它。好像没有安装证书。这是我的代码:
using (X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser))
{
certStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certCollection = certStore.Certificates.Find(
X509FindType.FindByThumbprint,
certificateThumbprint,
false);
if (certCollection.Count > 0)
{
return certCollection[0];
}
throw new Exception("Certificate not found!");
}
我已经验证了证书指纹,甚至尝试将其硬编码为字符串。
当我尝试打印商店中的证书数量时:
Console.WriteLine("certStore.Certificates.Count : " + certStore.Certificates.Count);
它返回零证书。
我也尝试更改StoreName
和StoreLocation
- 仍然是相同的结果。即使没有提供任何StoreName
或StoreLocation
,它仍然无法找到任何证书。
答案 0 :(得分:12)
您需要添加名为WEBSITE_LOAD_CERTIFICATES
来自https://azure.microsoft.com/en-us/blog/using-certificates-in-azure-websites-applications/?v=17.23h:
添加名为WEBSITE_LOAD_CERTIFICATES且其值设置为证书指纹的应用设置将使您的Web应用程序可以访问该设置。您可以使用多个以逗号分隔的指纹值,也可以将此值设置为“*”(不带引号),在这种情况下,所有证书都将加载到Web应用程序个人证书存储区。