我正在使用SSL应用程序,并希望控制哪些文件夹忽略、需要或接受客户端证书。
最终目标是让webApp的子文件夹忽略客户端证书。我不想通过IIS来实现这一点,因为它必须在整个Web Farm中进行复制。
有任何想法吗?
我正在使用SSL应用程序,并希望控制哪些文件夹忽略、需要或接受客户端证书。
最终目标是让webApp的子文件夹忽略客户端证书。我不想通过IIS来实现这一点,因为它必须在整个Web Farm中进行复制。
有任何想法吗?
locations
组合来配置。例如,要在 Interface 目录中要求 SSL 证书,你可以将以下代码块添加到 web.config 的 configuration 部分中: <location path="Interface">
<system.webServer>
<security>
<access sslFlags="Ssl,SslRequireCert" />
</security>
</system.webServer>
</location>
注意:正如@Jonathan DeMarks在他的评论中提到的那样,我也需要包括SslNegotiateCert
才能使其正常工作(使用IIS 8.5和Chrome)。所以对我而言,可行的配置是:sslFlags="Ssl,SslRequireCert,SslNegotiateCert"
事实上,我遇到了一个错误,指出我正在指定SslRequireCert
,但我可能想使用SslNegotiateCert
。
请注意,如果您想要要求Ssl,则必须添加相应的证书标志。
从technet文档中获取的标志值如下:
None。默认情况下,此设置禁用站点或应用程序的SSL。
Ssl。站点或应用程序需要SSL。
SslNegotiateCert。站点或应用程序接受客户端证书进行身份验证。
SslRequireCert。站点或应用程序需要客户端证书进行身份验证。 Ssl128.站点或应用程序需要128位SSL证书加密。
然而
默认情况下,access
部分无法被覆盖。
为了支持此功能,您必须修改C:\ Windows \ System32 \ inetsrv \ config中的applicationHost.config文件(或者适用于您的安装的相应目录),并更改以下行:
<section name="access" overrideModeDefault="Deny" />
收件人:
<section name="access" overrideModeDefault="Allow" />
我让它以与IIS相同的方式工作(在浏览器中显示证书对话框,如果未选择则返回403.7)的方法是在web.config中按照以下顺序使用此序列:Ssl,SslNegotiateCert,SslRequireCert。
因此,该部分看起来像这样:
<location path="Interface">
<system.webServer>
<security>
<access sslFlags="Ssl,SslNegotiateCert,SslRequireCert" />
</security>
</system.webServer>