我希望这是有道理的。我试图在IIS中编写一个全局重写规则,如果客户端证书没有呈现给IIS,则会中止请求(而不是发出403错误)。我已经遇到过cert_flags选项,但是我无法弄清楚我应该为这个条件做些什么。有人曾经这样做过吗?
谢谢!
答案 0 :(得分:0)
不确定这是否仍然相关,但我最近遇到了这个问题,所以我想我会把解决方案扔到那里。
我从Apache https://serverfault.com/questions/411858/allowing-users-in-from-an-ip-address-without-certificate-client-authentication的解决方案中汲取灵感。
我做了两件事来完成这项工作。第一个是将IIS更改为"接受"客户证书而非制作它"要求"他们,仍然需要SSL连接。第二个是添加一个额外的重写规则来处理所有传入的URL,并在符合条件的情况下中止请求:
如果证书有效,则根据https://msdn.microsoft.com/en-us/library/ms524602%28v=vs.90%29.aspx的说明以及microsoft如何标记https://msdn.microsoft.com/en-us/library/dd304685.aspx的说明,CERT_FLAGS应为1。
我对该规则的web.config看起来基本上就像:
<rule name="Bad Certs" enabled="true" stopProcessing="false">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{CERT_FLAGS}" pattern="^1$" negate="true" />
</conditions>
<action type="AbortRequest" />
</rule>