web-dev-qa-db-ja.com

クライアント証明書の設定はweb.configで構成できますか

SSLアプリケーションを使用していて、クライアント認定を無視、要求、または受け入れるフォルダーを制御したいと考えています。

最終的な目標は、webAppのサブフォルダーにクライアント認証を無視させることです。 IISを介してこれを実行したくないのは、Webファーム全体に複製する必要があるためです。

何か案は?

18
billyciam

これを設定するには、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" />
28
competent_tech

これをIIS(ブラウザーに証明書ダイアログを表示し、選択されていない場合は403.7を返す)と同じように機能させる方法は、web.configでこの順序を使用することです。 Ssl、SslNegotiateCert、SslRequireCert

したがって、セクションは次のようになります。

<location path="Interface">
<system.webServer>
  <security>
    <access sslFlags="Ssl,SslNegotiateCert,SslRequireCert" />
  </security>
</system.webServer>
0
Zarko