2016-06-08 8 views
0

Надеюсь, это имеет смысл. Я пытаюсь написать глобальное правило перезаписи в IIS, которое прервет запрос, если сертификат клиента не будет представлен в IIS (вместо того, чтобы давать ошибку 403). Я столкнулся с параметром cert_flags, но я не могу понять, что я должен использовать для этого условия. Кто-нибудь делал это раньше?Перезапись URL-адреса IIS 8.5, чтобы поймать пользователей без сертификата клиента

Спасибо!

ответ

0

Не уверен, что это все еще актуально, но я недавно столкнулся с этим, поэтому решил, что я брошу свое решение там.

Я воспользовался этим решением для Apache https://serverfault.com/questions/411858/allowing-users-in-from-an-ip-address-without-certificate-client-authentication.

Были две вещи, которые я сделал для выполнения этой работы. Первым было изменение IIS для «принятия» клиентских сертификатов вместо того, чтобы заставить их «требовать» их, при этом все еще требуя SSL-соединения. Второй должен был добавить дополнительные правила перезаписи, который обрабатывает все входящие URL-адреса и Прерывает запрос, если он соответствует условию:

  • {CERT_FLAGS} не соответствует шаблону^1 $

CERT_FLAGS должен быть один если сертификат действителен в соответствии с описаниями от https://msdn.microsoft.com/en-us/library/ms524602%28v=vs.90%29.aspx и описанием того, как Microsoft делает флаги https://msdn.microsoft.com/en-us/library/dd304685.aspx.

Моя 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>