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


8

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


1
閉じる?ほとんどのIIS Express設定はVisual Studioで構成されており、プログラムのデバッグは間違いなくプログラミングに関連しています...
Marko

次に、「Visual Studioのインストール方法」などの質問。通常のものでしょうか?:)
2011

2
ここでは議論しませんが、FII IIS Expressは、ASP.NET開発サーバーがサポートしていない機能を提供するため、ASP.NETアプリケーションのデバッグに主に使用されます。私の質問はデバッグに関するものです。しかし、デバッグするには、まず設定する必要があります。いずれにせよ、実際のIISを使用するため、これはシステム管理者ではなく一部の開発者によって既に行われている可能性が高いと思います。
マルコ2011

プログラムでアクセスするためにクライアント証明書を要求する方法がわかりません。しかし、ここで私はからの助けを見つけたリソースです。これがお役に立て
ば幸い

この記事では、詳細な手順で目的どおりの処理行います(ここではコピー/貼り付けを行いません)。dcdevs.blogspot.com / 2017/06 / HTH にアクセスしてください
dotnetftw 2017

回答:


5

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>

本当に適切な答えではありません。
方位角2016年

1

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

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

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://のようなプロジェクトURLが必要です。Localhost:62714 / (Visual Studio開発サーバーの設定で「特定のポート」として設定されているポートと同じである必要があります(設定されている場合)

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


0

IIS Expressのクライアント証明書要求の構成方法を詳しく説明したブログを見つけました(Visual Studio 2017、IISExpress 10.0を使用しました)。どうやら、applicationhost.configファイルの場所がVisual Studio 2015以降で変更されました。

内容の概要は次のとおりです。

  1. 証明書をインストールします(秘密鍵はクライアント側からのみ必要です)。これは、開発マシンに設定します(設定のブラウザーの証明書リストに表示されているはずです)。
  2. Visual Studioを使用して、新しいWebアプリケーションを作成します
  3. プロジェクトのSSLを有効にします。プロジェクトのプロパティを表示します(F4)-> SSL Enabledto TrueSSL URLプロパティが入力されることに注意してください)
  4. プロジェクトをSSLモードで開始するように設定します。[プロジェクトのプロパティ](Alt + Enter)に移動し、[ Web ]タブを選択して、プロジェクトのURLを手順3のものに変更します。https://localhost:44300
  5. IIS Express構成ファイルを見つけます applicationhost.config:2015または2017では、ファイルは次の場所にあります[solution directory]\.vs\config\-以前のバージョンでは%UserProfile%\Documents\IISExpress\config\
  6. applicationhost.configファイルを変更します。設定し<access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" /><iisClientCertificateMappingAuthentication enabled="true"></iisClientCertificateMappingAuthentication>
  7. 証明書は、内のコードから利用できるようになりましたRequest.ClientCertificate財産、そしてあなたがブラウザでページを開いたときにプロンプトが表示されなければなりません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.