web-dev-qa-db-ja.com

SSLを介した双方向認証のローカルテスト用にクライアント証明書を作成するにはどうすればよいですか?

IIS7で実行されているWebアプリで双方向認証を設定しようとしています。クライアントは主にモバイルデバイスになり、最初のインスタンスでは、第3世代のiPadを使用してデモを実行しようとしています。まず、ワークステーション(IISも実行している)で実行してから、iPadを介して作業証明書をコピーすると思いました。

しかし、私は壁にぶつかった。

Httpsで安全にサイトを実行し、自己署名サーバー証明書をインストールしている限り、クライアント証明書を生成する方法がわかりませんiPadにインストールできます。 Windows 7を実行しているローカルワークステーションで作業しているため、通常のhttp://machinename/CertSvrを使用してこれを行うことはできません。

だから、テストクライアント証明書を生成するためにmakecertを取得する方法があるのか​​、それともクライアントでの使用に適したものにするためにサーバー証明書の使用フラグを変更できるのか疑問に思っています。または、グーグルの最終日にはまだ発見されていないツールがありますか?

更新:

このガイド を見つけて、それに従って手紙に進みました。すべて正常に動作しているようで、エラーはなく、サーバー用とクライアント用の2つのpfxファイルになりました(これらをpvk2pfxを使用して生成し、念のため元の.pvkおよび.cerファイルを保持しました)。

Certificates (Local Computer) > Trusted Root Certification Authorityの下にサーバー証明書をインストールし、Certificates (Current User) > Personalの下にクライアント証明書をインストールしました。また、サーバー証明書(CAの証明書)をIISにインポートしました。 IISがクライアント証明書を受け入れるか無視するように構成されている場合、すべて正常に動作します。ただし、「Require」に設定すると、サイトを要求するときに403.7が表示されます。 IE/Chromeの証明書ストアへのクライアント証明書ですが、サイコロもありません。

私が間違っていることは明らかですか?

23
indra

この質問をしたとき、これは存在しなかったかもしれませんが、Microsoftは現在、これを正確に行うための [〜#〜] guide [〜#〜] を用意しています。フォローしやすく、私にとって完璧に機能しました!

4
NSjonas

local IIS Express)でクライアント証明書を有効にします。

\ YourSlnFolder\.vs\config\applicationhost.configを変更します-> <section name="access" overrideModeDefault="Deny" />から<section name="access" overrideModeDefault="Allow" />

<sectionGroup name="system.webServer">
...
  <sectionGroup name="security">
  ...
    <section name="access" overrideModeDefault="Allow" />

次に、次のようにWeb.configを編集します。

<configuration>
    <system.webServer>
        <security>
            <access sslFlags="SslRequireCert" />
        </security>
    </system.webServer>
</configuration>

[〜#〜] iis [〜#〜]でクライアント証明書を有効にします。

IIS ManagerのWebサイトに移動し、[SSL設定]をクリックします。次に、アプリケーションを[SSLが必要]および[クライアント証明書が必要]に設定します。

enter image description here

新しい証明書の作成:

VS開発者コマンドプロンプトを開始

ルート証明書:

makecert.exe -r -n "CN=TestRootCertificate" -pe -sv TestRootCertificate.pvk -a sha1 -len 2048 -b 01/01/2017 -e 01/01/2030 -cy authority TestRootCertificate.cer

パスワードを入力してください。

証明書失効リスト(CRL)を作成する

makecert -crl -n "CN=TestRootCertificate" -r -sv TestRootCertificate.pvk TestRootCertificate.crl

.pfxへのバンドル(pvk2pfx.exeにはVS2017用にインストールされた「C++によるデスクトップ開発」が必要です)

pvk2pfx.exe -pvk TestRootCertificate.pvk -pi {password} -spc TestRootCertificate.cer -pfx TestRootCertificate.pfx

ルート証明書からのクライアント証明書:

makecert.exe -ic TestRootCertificate.cer -iv TestRootCertificate.pvk -pe -sv localtestclientcert.pvk -a sha1 -n "CN=localtestclientcert" -len 2048 -b 01/01/2015 -e 01/01/2030 -sky exchange localtestclientcert.cer -eku 1.3.6.1.5.5.7.3.2

パスワードを入力してください。

pvk2pfx.exe -pvk localtestclientcert.pvk -pi {password} -spc localtestclientcert.cer -pfx localtestclientcert.pfx

証明書をインポートします。

Mmc.exeを起動します。

File -> Add or Remove Snap-ins -> Certificates -> Add -> Computer account -> Local computer

Certificates (Local Computer) -> Personal -> Certificates -> Right click -> All tasks -> Import -> localtestclientcert.pfx

Certificates (Local Computer) -> Trusted Root Certification Authorities -> Certificates -> Right click -> All tasks -> Import -> RootCertificate.cer

ブラウザでの認証に使用:

File -> Add or Remove Snap-ins -> Certificates -> Add -> My user account

Certificates - Current User -> Personal -> Certificates -> Right click -> All tasks -> Import -> localtestclientcert.pfx

サイトにアクセスするには、サーバーが信頼するクライアント証明書が必要です。

enter image description here

このガイドに従っていると、次のようなエラーが表示される場合:

HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.

または

HTTP Error 403.7 - Forbidden
The page you are attempting to access requires your browser to have a Secure Sockets Layer (SSL) client certificate that the Web server recognizes.

コンピューターの再起動が必要になる場合があります。 iisexpressプロセスまたはVisual Studioを閉じるだけでは不十分であることに注意してください。 500.19は再起動せずに解決できますが、証明書は扱いにくいため、推奨されるアプローチはコンピュータの再起動です。

エラーが発生した場合はThe request was aborted: Could not create SSL/TLS secure channelアプリケーションプールが特定の証明書にアクセスできないことが原因である可能性があります。

証明書(ローカルコンピューター)->個人->証明書-> localtestclientcert->右クリック->すべてのタスク->秘密キーの管理->追加IIS APPPOOL\YourWebSiteそしてフルコントロールを許可します。

1
Ogglas