dav*_*avy 6 c# ssl-certificate azure-web-sites
我使用管理门户上载证书将.pfx安装到我的Azure网站.
我现在正尝试使用以下代码访问它们:
X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
certificateStore.Open(OpenFlags.ReadOnly);
var certificates = certificateStore.Certificates;
StringBuilder sb = new StringBuilder();
foreach (var certificate in certificates)
{
sb.AppendLine(certificate.Subject);
}
Run Code Online (Sandbox Code Playgroud)
发布到Azure时,会列出一堆证书,但不会列出我上传的证书.
列出的证书在这里:
CN=WW.azurewebsites.windows.net, OU=CIS(RD), O=Microsoft
CN=FullOSTransport
CN=client.geo.to.stamp.azurewebsites.windows.net
CN=ma.waws-prod-am2-005.azurewebsites.windows.net, OU=OrganizationName, O=Microsoft,
L=Redmond, S=WA, C=US
CN=FullOSTransport
CN=FullOSTransport
Run Code Online (Sandbox Code Playgroud)
我从Verisign购买了证书,它似乎已正确上传,并且显示在浏览器的"HTTPS"栏中(在Chrome中).
任何帮助都会非常感激,因为我在这里不知所措.
更新
看起来我们需要转换为Cloud Service才能使上述代码正常工作.但我可以按照此处的建议将证书添加到我的app_data文件夹吗?
http://blog.tylerdoerksen.ca/2015/11/29/pfx-certificate-files-and-azure-web-apps/
这似乎适用于Azure-Websites而不使用Web角色.
谢谢
小智 8
我遇到过类似的问题,下面是适合我的解决方案.
解:
一旦您通过Azure门户上传了证书,您需要添加一个名为的appsetting(也通过门户网站)WEBSITE_LOAD_CERTIFICATES,并将此值设置为您上载的证书的指纹.如果您愿意,这可以是以逗号分隔的多个指纹列表,甚至*可以加载所有上传的证书
然后使用以下代码加载您的证书.
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)
我已使用管理门户上传证书将 .pfx 安装到我的Azure 网站。
我最近必须为 Azure 网站完成此过程,因此我将按此顺序尝试以下操作以节省时间。
你可以做什么来调试?
首先,远程进入机器并查找证书是否存在。您可以使用 mmc.exe 找到它并添加证书管理单元。请参阅此处了解完整说明。
对于 Azure 网站,您必须通过进入Azure 管理门户来启用远程桌面,然后在部署了您的网站的 VM 中创建一个会话。
部署证书
如果证书不存在,您将必须部署它。对于测试,您可以通过使用远程会话进入虚拟机并导入证书来手动执行此操作。
对于网站,如果您希望自动部署它,则必须更新该角色的服务定义文件,以确保正确部署证书。另外,请记住,如果您希望您的角色能够使用您的证书,则应将您的证书作为“服务证书”而不是“管理证书”上传。如果您使用的是 Visual Studio,您还可以将其添加到您的项目中并进行部署。
权限
此外(尤其是如果您手动部署了证书,例如在虚拟机上),您将需要检查 IIS 是否具有访问该证书的权限。此页面解释了如何部署证书以及如何授予适当的权限。如果您的证书包含在部署包中,则不需要这样做,因为 Azure 部署将处理它。
仅供参考:它在本地工作,因为证书已经存在于您的代码正在查看的存储中,并且没有任何内容可以删除证书(除非您手动执行此操作)来验证如果您再次在本地部署,则将部署证书再次(假设您的本地部署和 Azure 云上的部署完全相同)。在许多情况下,本地环境和 Azure 云环境可能不同(不幸的是),因为 Azure 将提供干净的 VM,并且所有内容都需要正确部署。在本地机器上,我们有很多“剩菜”。