Ich bin mir nicht sicher, ob das noch relevant ist, aber ich bin kürzlich dazu gekommen, also dachte ich, ich würde meine Lösung da draußen hinwerfen.
Ich habe mich von dieser Lösung für Apache https://serverfault.com/questions/411858/allowing-users-in-from-an-ip-address-without-certificate-client-authentication inspirieren lassen.
Es gab zwei Dinge, die ich getan habe, um diese Arbeit zu machen. Die erste war, dass ich IIS so ändern sollte, dass ich Client-Zertifikate akzeptiere, anstatt sie zu "requirieren", während ich immer noch eine SSL-Verbindung benötige. Die zweite war eine zusätzliche Rewrite-Regel hinzufügen, die alle eingehenden URLs verarbeitet und bricht die Anforderung, wenn sie die Bedingung erfüllt:
- {CERT_FLAGS} ist nicht Muster^1 $
CERT_FLAGS übereinstimmen sein sollte wenn das Zertifikat gemäß den Beschreibungen von https://msdn.microsoft.com/en-us/library/ms524602%28v=vs.90%29.aspx und der Beschreibung, wie Microsoft Flags https://msdn.microsoft.com/en-us/library/dd304685.aspx ausführt, gültig ist.
Meine web.config für diese Regel sah im Grunde mag:
<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>