有人知道如何将IIS Express配置为要求客户端证书才能访问吗?我正在尝试调试使用客户端证书进行身份验证的有问题的ASP.NET应用程序。
有人知道如何将IIS Express配置为要求客户端证书才能访问吗?我正在尝试调试使用客户端证书进行身份验证的有问题的ASP.NET应用程序。
Answers:
使用IIS管理器工具并遵循Microsoft文档IIS客户端证书映射身份验证<iisClientCertificateMappingAuthentication>。
样本配置:
<location path="Default Web Site">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="false" />
<anonymousAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<basicAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="true"
manyToOneCertificateMappingsEnabled="true">
<manyToOneMappings>
<add name="Contoso Employees"
enabled="true"
permissionMode="Allow"
userName="Username"
password="[enc:AesProvider:57686f6120447564652c2049495320526f636b73:enc]">
<rules>
<add certificateField="Subject"
certificateSubField="O"
matchCriteria="Contoso"
compareCaseSensitive="true" />
</rules>
</add>
</manyToOneMappings>
</iisClientCertificateMappingAuthentication>
</authentication>
<access sslFlags="Ssl, SslNegotiateCert" />
</security>
</system.webServer>
</location>
这些是Jason Shavers在他的博客中发出的说明。(但是该页面不再存在。)Scott Hanselman还在http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx上讨论了启用SSL的问题 。但他绝不是指使该站点要求客户证书。
这些是我遵循的说明:
更改applicationhost.config(默认情况下,其中两个位于MyDocuments \ IISExpress \ config中,另一个位于程序文件\ IIS Express \ AppServer中,而在VS 2012上的IISExpress上运行项目时,将使用配置文件下的另一个。使用我在本地测试计算机上执行的命令行运行。)
<访问sslFlags =“无” />到<访问sslFlags =“ SslNegotiateCert” />
和元素
<iisClientCertificateMappingAuthentication enabled =“ false”> </ iisClientCertificateMappingAuthentication>
至
<iisClientCertificateMappingAuthentication enabled =“ true”> </ iisClientCertificateMappingAuthentication>
接下来的两个步骤都必须在Visual Studio中执行。默认情况下,在VS 2012中创建一个新项目后,再将其创建为IIS Express项目。转移到VS2012的较旧项目可能必须实际更改该设置。
在“ Web”选项卡上的“项目属性”页面上,将“使用Visual Studio开发服务器”更改为“使用本地IIS Web服务器”。(如果您没有在计算机上进行常规IIS安装(在这些NMCI计算机上无法进行此操作),则应使用灰色复选框,显示“使用IIS Express”。)应该有一个项目URL,其内容为http:// Localhost:62714 / (应该与在Visual Studio Development Server设置下设置为“特定端口”的端口相同)(如果已设置)
然后在解决方案资源管理器中选择“项目”,然后转到“属性”选项卡。(有时,必须在属性显示之前完成几次。)这将具有三个属性:“ SSL启用”(默认为false),“ SSL URL”(新项目为空白)和“ URL”(在“属性标签上的“项目URL”。
将启用SSL的属性更改为true,将创建一个新的SSL URL。
在启用SSL之前,在首次运行项目时,会在applicationhost.config文件中的“”元素下创建一个新条目。它看起来像这样:
<site name="WebApplication1" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\users\edward.joell\documents\visual studio 2012\Projects\WebApplication1\WebApplication1" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:61313:localhost" />
</bindings>
</site>
在项目上启用SSL时,它应如下所示:
<site name="WebApplication1" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\users\edward.joell\documents\visual studio 2012\Projects\WebApplication1\WebApplication1" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:61313:localhost" />
<binding protocol="https" bindingInformation="*:44313:localhost" />
</bindings>
</site>
(所有443xx端口都保留用于SSL项目)。
我找到了一个博客,该博客详细介绍了如何为IIS Express配置客户端证书请求(我使用了Visual Studio 2017,IISExpress 10.0)。显然,applicationhost.config
文件的位置在Visual Studio 2015及更高版本中已更改。
以下是其内容的概述:
SSL Enabled
到True
(注意SSL URL
填充属性)https://localhost:44300
applicationhost.config
:在2015或2017年,该文件位于[solution directory]\.vs\config\
-在以下早期版本中%UserProfile%\Documents\IISExpress\config\
<access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
和<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
Request.ClientCertificate
属性中的代码中获得该证书,并且在浏览器中打开页面时应提示该证书。