sp9*_*sp9 26 c# azure ssl-certificate x509certificate azure-web-sites
当我使用网络角色时,我只是在天蓝色门户网站上传证书,我能够看到它.现在我已经切换到azure的网站,我将证书上传到azure管理门户网站,但我的代码看不到它一点都不
是否有我们需要做的配置或其他方式来访问azure网站上传的证书.
这就是我试图访问上传的证书的方式.
private List<string> GetAvailableCertificatesFromStore()
{
var list = new List<string>();
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;
}
Run Code Online (Sandbox Code Playgroud)
小智 78
在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);
Run Code Online (Sandbox Code Playgroud)
如果要确保证书有效,请将"false"更改为"true".
我在这里找到了这些信息,这比我说的要好得多:http://azure.microsoft.com/blog/2014/10/27/using-certificates-in-azure-websites-applications/
Gau*_*tri 11
更新 - 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.如果您遇到此错误,您可能会发现此博文有用:http://blog.tylerdoerksen.com/2013/08/23/pfx-certificate-files-and-windows-azure-websites/