2016-06-08 12 views
0

Ich hoffe, das macht Sinn. Ich versuche, eine globale Rewrite-Regel in IIS zu schreiben, die eine Anfrage abbricht, wenn ein Client-Zertifikat dem IIS nicht präsentiert wird (anstatt einen 403-Fehler zu geben). Ich bin auf die Option cert_flags gestoßen, aber ich kann nicht genau herausfinden, was ich für die Bedingung tun soll. Hat jemand das schon mal gemacht?IIS 8.5 URL Rewrite, um Benutzer ohne Client-Zertifikat zu erfassen

Danke!

Antwort

0

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>