IIS 8.5 URL重写以捕获没有客户端证书的用户

时间:2016-06-08 06:00:37

标签: iis client-certificates iis-8.5

我希望这是有道理的。我试图在IIS中编写一个全局重写规则,如果客户端证书没有呈现给IIS,则会中止请求(而不是发出403错误)。我已经遇到过cert_flags选项,但是我无法弄清楚我应该为这个条件做些什么。有人曾经这样做过吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

不确定这是否仍然相关,但我最近遇到了这个问题,所以我想我会把解决方案扔到那里。

我从Apache https://serverfault.com/questions/411858/allowing-users-in-from-an-ip-address-without-certificate-client-authentication的解决方案中汲取灵感。

我做了两件事来完成这项工作。第一个是将IIS更改为"接受"客户证书而非制作它"要求"他们,仍然需要SSL连接。第二个是添加一个额外的重写规则来处理所有传入的URL,并在符合条件的情况下中止请求:

  • {CERT_FLAGS}与模式^ 1 $
  • 不匹配

如果证书有效,则根据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>