アクセスにクライアント証明書を要求するようにIIS Expressを構成する方法を知っている人はいますか?認証にクライアント証明書を使用する問題のあるASP.NETアプリケーションをデバッグしようとしています。
アクセスにクライアント証明書を要求するようにIIS Expressを構成する方法を知っている人はいますか?認証にクライアント証明書を使用する問題のあるASP.NETアプリケーションをデバッグしようとしています。
回答:
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>
これらは、Jason Shaversがブログで配布した指示です。(しかし、そのページはもう存在しません。)Scott Hanselmanは、SSLの有効化についてもhttp://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspxで説明しています 。しかし、彼はサイトがクライアント証明書を要求するようにすることについて言及していません。
これらは私が従った指示です:
applicationhost.configを変更します(これらのうち2つはMyDocuments \ IISExpress \ configにあり、もう1つはデフォルトでプログラムファイル\ IIS Express \ AppServerにあります。VS2012でIISExpressでプロジェクトを実行すると、プロファイルの下にあるものが使用されます。ローカルテストマシンで実行したコマンドラインを使用して実行します。
<access sslFlags = "None" />から<access sslFlags = "SslNegotiateCert" />へ
そして要素
<iisClientCertificateMappingAuthentication enabled = "false"> </ iisClientCertificateMappingAuthentication>
に
<iisClientCertificateMappingAuthentication enabled = "true"> </ iisClientCertificateMappingAuthentication>
次の2つの手順はどちらもVisual Studioで実行する必要があります。デフォルトでは、VS 2012で新しいプロジェクトを作成すると、IIS Expressプロジェクトとして作成されます。VS2012に転送された古いプロジェクトでは、実際にその設定を変更する必要がある場合があります。
[Web]タブの[プロジェクトのプロパティ]ページで、[Visual Studio Developer Serverを使用]を[ローカルIIS Webサーバーを使用]に変更します。(通常のIISがマシンにインストールされていない場合は、IIS Expressを使用することを示す灰色のチェックボックスが表示されます(これらのNMCIマシンでは実行できません)。http://のようなプロジェクトURLが必要です。Localhost:62714 / (Visual Studio開発サーバーの設定で「特定のポート」として設定されているポートと同じである必要があります(設定されている場合)
次に、ソリューションエクスプローラーでプロジェクトを選択し、[プロパティ]タブに移動します。(これは、プロパティが表示される前に数回実行する必要がある場合があります。)これには、デフォルトでfalseに設定されているSSL有効、新しいプロジェクトでは空白のSSL URL、および「プロパティタブの「プロジェクトURL」。
SSL enabledプロパティをtrueに変更すると、新しいSSL 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プロジェクト用に予約されています)。
IIS Expressのクライアント証明書要求の構成方法を詳しく説明したブログを見つけました(Visual Studio 2017、IISExpress 10.0を使用しました)。どうやら、applicationhost.config
ファイルの場所がVisual Studio 2015以降で変更されました。
内容の概要は次のとおりです。
SSL Enabled
to True
(SSL URL
プロパティが入力されることに注意してください)https://localhost:44300
applicationhost.config
:2015または2017では、ファイルは次の場所にあります[solution directory]\.vs\config\
-以前のバージョンでは%UserProfile%\Documents\IISExpress\config\
<access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
、<iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
Request.ClientCertificate
財産、そしてあなたがブラウザでページを開いたときにプロンプトが表示されなければなりません。