我的Azure Web角色(云服务,而不是WebApp)需要支持客户端证书。
我发现我可以通过附带的WebRole.cs代码段更改网站的配置。部署时,IIS中的客户端证书设置已更改(当我远程访问服务器时),但它无法正常工作,我收到授权错误。但是,如果我在IIS管理器中手动单击“需要SSL证书”和“#34;应用更改"”,则一切似乎都有效。 Webrole正在以ELEVATED模式运行。我错过了什么?
public override bool OnStart()
{
try
{
using (var server = new ServerManager())
{
const string siteNameFromServiceModel = "Web"; // TODO: update this site name for your site.
var siteName = string.Format("{0}_{1}", RoleEnvironment.CurrentRoleInstance.Id, siteNameFromServiceModel);
var config = server.GetApplicationHostConfiguration();
var accessSection = config.GetSection("system.webServer/security/access", siteName);
accessSection["sslFlags"] = @"Ssl,SslRequireCert";
server.CommitChanges();
}
}
catch (Exception ex)
{
// handle error here
}
return base.OnStart();
}
答案 0 :(得分:2)
似乎我也需要将SslNegotiateCert设置放入其中,如下所示:
accessSection["sslFlags"] = @"Ssl, SslNegotiateCert, SslRequireCert";
答案 1 :(得分:0)
您是否在服务定义中设置了证书?
<ServiceDefinition …>
<WebRole name="<web-role-name>" vmsize="<web-role-size>" enableNativeCodeExecution="[true|false]">
<Certificates>
<Certificate name="<certificate-name>" storeLocation="<certificate-store>" storeName="<store-name>" />
</Certificates>
...
https://msdn.microsoft.com/en-us/library/azure/gg557553.aspx