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の証明書ストアへのクライアント証明書ですが、サイコロもありません。
私が間違っていることは明らかですか?
この質問をしたとき、これは存在しなかったかもしれませんが、Microsoftは現在、これを正確に行うための [〜#〜] guide [〜#〜] を用意しています。フォローしやすく、私にとって完璧に機能しました!
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が必要]および[クライアント証明書が必要]に設定します。
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
サイトにアクセスするには、サーバーが信頼するクライアント証明書が必要です。
このガイドに従っていると、次のようなエラーが表示される場合:
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
そしてフルコントロールを許可します。