web-dev-qa-db-ja.com

構成方法IIS Expressでクライアント証明書を要求する

IIS Expressがアクセスにクライアント証明書を要求するように設定する方法を知っていますか?認証にクライアント証明書を使用する問題のあるASP.NETアプリケーションをデバッグしようとしています。

8
Marko

IISマネージャツールを使用し、Microsoftのドキュメント IISクライアント証明書マッピング認証<iisClientCertificateMappingAuthentication> に従います。

サンプル構成:

<location path="Default Web Site">
   <system.webServer>
      <security>
         <authentication>
            <windowsAuthentication enabled="false" />
            <anonymousAuthentication enabled="false" />
            <digestAuthentication enabled="false" />
            <basicAuthentication enabled="false" />
            <iisClientCertificateMappingAuthentication enabled="true"
                  manyToOneCertificateMappingsEnabled="true">
               <manyToOneMappings>
                  <add name="Contoso Employees"
                        enabled="true"
                        permissionMode="Allow"
                        userName="Username"
                        password="[enc:AesProvider:57686f6120447564652c2049495320526f636b73:enc]">
                     <rules>
                        <add certificateField="Subject"
                           certificateSubField="O"
                           matchCriteria="Contoso"
                           compareCaseSensitive="true" />
                     </rules>
                  </add>
               </manyToOneMappings>
            </iisClientCertificateMappingAuthentication>
         </authentication>
         <access sslFlags="Ssl, SslNegotiateCert" />
      </security>
   </system.webServer>
</location>
5
Mufasa

これらは、Jason Shaversがブログで配布した指示です。 (しかし、そのページはもう存在しません。)Scott Hanselmanは http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx でSSLを有効にすることについても話します。しかし、彼はサイトがクライアント証明書を要求するようにすることについて言及していません。

これらは私が従った指示です:

Applicationhost.configを変更します(これらのうち2つはMyDocuments\IISExpress\configにあり、もう1つはデフォルトでプログラムファイル\ IIS Express\AppServerにあります。VS2012でIISExpressでプロジェクトを実行すると、プロファイルの下にあるものが使用されます。ローカルテストマシンで実行したコマンドラインを使用して実行します。)

  1. 要素を変更する

<access sslFlags = "None" />から<access sslFlags = "SslNegotiateCert" />へ

そして要素

<iisClientCertificateMappingAuthentication enabled = "false"> </ iisClientCertificateMappingAuthentication>

<iisClientCertificateMappingAuthentication enabled = "true"> </ iisClientCertificateMappingAuthentication>

次の2つの手順はどちらもVisual Studioで実行する必要があります。デフォルトでは、VS 2012で新しいプロジェクトを作成すると、IIS Expressプロジェクトとして作成されます。 VS2012に転送された古いプロジェクトでは、実際にその設定を変更する必要がある場合があります。

  1. [Web]タブの[プロジェクトのプロパティ]ページで、[Visual Studio Developer Serverを使用]を[ローカルIIS Webサーバーを使用]に変更します。 (通常のIISインストールがマシンにインストールされていない場合は、IIS Expressを使用するという灰色のチェックボックスが表示されるはずです(これらのNMCIマシンでは実行できません)。プロジェクトがあるはずです。 http:// Localhost:62714 / のようなURL(Visual Studio開発サーバーの設定で「特定のポート」として設定されているのと同じポートである必要があります(設定されている場合))

  2. 次に、ソリューションエクスプローラーでプロジェクトを選択し、[プロパティ]タブに移動します。 (これは、プロパティが表示される前に数回実行する必要がある場合があります。)これには、デフォルトでfalseに設定されているSSL有効化、新しいプロジェクトで空白のSSL URL、および "のURLに設定されているURLの3つのプロパティがあります。プロパティタブの[プロジェクトURL]をクリックします。

SSL enabledプロパティをtrueに変更すると、新しいSSL URLが作成されます。

  1. そのSSL URLをコピーしてプロジェクトプロパティページに戻り、そこに新しいプロジェクトURLとして貼り付けます。この時点で「仮想ディレクトリの作成」をクリックしましたが、一部のブログでは、プロジェクトを保存してデバッグで実行するだけでよいという必要はないとしています。

""要素の下のapplicationhost.configファイルで、SSLを有効にする前にプロジェクトが最初に実行されたときに新しいエントリが作成されます。次のようになります。

        <site name="WebApplication1" id="2">
            <application path="/" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="c:\users\edward.joell\documents\visual studio 2012\Projects\WebApplication1\WebApplication1" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:61313:localhost" />
            </bindings>
        </site>

プロジェクトでSSLを有効にすると、次のようになります。

        <site name="WebApplication1" id="2">
            <application path="/" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="c:\users\edward.joell\documents\visual studio 2012\Projects\WebApplication1\WebApplication1" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:61313:localhost" />
    <binding protocol="https" bindingInformation="*:44313:localhost" />
            </bindings>
        </site>

(443xxポートはすべてSSLプロジェクト用に予約されています)。

1
user1161391