Не уверен, что это все еще актуально, но я недавно столкнулся с этим, поэтому решил, что я брошу свое решение там.
Я воспользовался этим решением для 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>