SSLアプリケーションを使用していて、クライアント認定を無視、要求、または受け入れるフォルダーを制御したいと考えています。
最終的な目標は、webAppのサブフォルダーにクライアント認証を無視させることです。 IISを介してこれを実行したくないのは、Webファーム全体に複製する必要があるためです。
何か案は?
これを設定するには、web.config(または適切なサブディレクトリのweb.configs)の access セクションとlocations
の組み合わせを使用できます。
たとえば、ディレクトリInterfaceにSSL証明書を要求するには、web.configの設定セクションに次のブロックを追加できます。
<location path="Interface">
<system.webServer>
<security>
<access sslFlags="Ssl,SslRequireCert" />
</security>
</system.webServer>
</location>
注:@Jonathan DeMarksがコメントで述べたように、それを機能させるにはSslNegotiateCert
も含める必要があります(IIS 8.5& Chrome)。したがって、動作する構成は次のとおりです。sslFlags="Ssl,SslRequireCert,SslNegotiateCert"
実際にはSslRequireCert
を指定しているというエラーが発生しましたが、SslNegotiateCert
を使用するつもりでした。
Sslを要求する場合は、SSLと適切な証明書フラグを追加する必要があることに注意してください。
Technetドキュメントのフラグ値は次のとおりです。
無し。このデフォルト設定は、サイトまたはアプリケーションのSSLを無効にします。
Ssl。サイトまたはアプリケーションにはSSLが必要です。
SslNegotiateCert。サイトまたはアプリケーションは、認証用のクライアント証明書を受け入れます。
SslRequireCert。サイトまたはアプリケーションには、認証のためにクライアント証明書が必要です。 Ssl128。サイトまたはアプリケーションには、128ビットのSSL証明書の暗号化が必要です。
[〜#〜]ただし[〜#〜]
access
セクションはデフォルトではオーバーライドできません。
これをサポートするには、C:\ Windows\System32\inetsrv\config(またはインストールに適したディレクトリ)のapplicationHost.configを変更し、次の行を変更する必要があります。
<section name="access" overrideModeDefault="Deny" />
に:
<section name="access" overrideModeDefault="Allow" />
これをIIS(ブラウザーに証明書ダイアログを表示し、選択されていない場合は403.7を返す)と同じように機能させる方法は、web.configでこの順序を使用することです。 Ssl、SslNegotiateCert、SslRequireCert。
したがって、セクションは次のようになります。
<location path="Interface">
<system.webServer>
<security>
<access sslFlags="Ssl,SslNegotiateCert,SslRequireCert" />
</security>
</system.webServer>