访问azure色网站上传的证书

当我使用网络角色时,我只是在azure色门户网站上传证书,我能够看到它。现在我已经切换到azure的网站,我将证书上传到azure管理门户网站,但我的代码没有看到它一点都不

是否有一些配置我们需要或以其他方式访问azure网站上传的证书。

这就是我尝试访问上传的证书的方式。

private List GetAvailableCertificatesFromStore() { var list = new List(); var store = new X509Store(StoreName.My,StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly); try { foreach (var cert in store.Certificates) { // todo: add friendly name list.Add(string.Format("{0}", cert.Subject)); } } finally { store.Close(); } return list; } 

更新 – 2015年7月23日:这个答案现在已经过时了(虽然它在提供时是正确的)。 请参阅下面的S Armstrong的答案。

Azure Cloud Services (Web/Worker Roles)Azure Websites工作方式不同。 在Azure云服务中,当您通过管理门户上载证书并在角色的属性中指定证书的指纹和安装位置时,当您的角色部署在VM中时,负责它的结构控制器也会自动为您安装这些证书。 这就是上面的代码在Web角色中工作的原因。

在网站中,您需要自己完成此操作。 遗憾的是,由于Azure网站中的安全限制,您无法在证书库中安装证书。 要使用证书,您需要将证书的PFX文件与代码一起包含在内并使用该证书文件。 您无法在证书库中安装证书。

在我使用Azure网站和证书完成的任何小工作中,我发现仅当PFX文件包含在AppData文件夹中时,证书才有效。 此外,您可能会遇到CryptographicException: The system cannot find the file specified错误CryptographicException: The system cannot find the file specified 。 如果您遇到此错误,您可能会发现此博文有用: http : //blog.tylerdoerksen.com/2013/08/23/pfx-certificate-files-and-windows-azure-websites/

在Azure WebSite中使用证书的方式与在IIS的本地副本中的使用方式或在从Visual Studio以调试模式运行网站时的工作方式不同。 简而言之,该网站无法访问传统意义上的证书商店……这些都是在内存中完成的。

首先,一旦您通过Azure门户上传了证书,您需要添加一个名为WEBSITE_LOAD_CERTIFICATES的appsetting(也通过门户网站),并将其值设置为您上传的证书的指纹。 如果您愿意,这可以是以逗号分隔的多个指纹列表,甚至*可以加载所有上传的证书。 我假设这会强制将证书加载到内存中。

要加载证书,您可以执行以下操作:

 var store = new X509Store(StoreName.My, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); var certs = store.Certificates.Find(X509FindType.FindByThumbprint, YOUR_THUMBPRINT, false); 

如果要确保证书有效,请将“false”更改为“true”。

我在这里找到了这些信息,这比我说的要好得多: http : //azure.microsoft.com/blog/2014/10/27/using-certificates-in-azure-websites-applications/