QA@IT
«回答へ戻る

回答を投稿

なんとか解決できたので、この場を借りて報告させていただきます。

今回はWindows Server2016をOSとするサーバーにクライアント認証が必要なWebサイトを構築し、
ブラウザで確認をするということをやっていました。

その環境構築の手順は以下の通りとなります。

1.IISにHTTPSでバインドしたサイトを用意します
・サーバー証明書は自己署名入り証明書を作成しました

2.サーバーにActiveDirectory証明書サービスの役割をインストールします
・サーバーマネージャーの「役割と機能の追加」からインストールします
・機能は「証明機関」と「証明機関Web登録」の2つをインストールします
・インストール後、サーバーマネージャの「通知」から「Active Directory証明書サービスを構成する」へと
進みます
⇒「証明機関Web登録」をインストールするとIISのDefault Web Site配下にCertSrvというアプリケーションが
できます

3.クライアントから「https://hostname/certsrv」にアクセスします

4.「証明書を要求する」>「証明書の要求設定」と進み、フォーム画面を入力して要求を送信します
・証明書の種類は「クライアント認証証明書」
・CSPは「Microsoft RSA SChannel Cryptographic Provider」を選択
・「エクスポート可能なキーとしてマークする」にチェックを入れる
以上の設定で要求を作成、送信しました

5.サーバー側でWindows管理ツールより「証明機関」を開き、保留中の要求から4の手順で要求した証明書を発行
・証明書を右クリックして「すべてのタスク」>「発行」で発行できました

6.再び3の手順のサイトにアクセスし、発行されたクライアント証明書をインストール
・「保留中の証明書の要求の状態」へ進むとインストールできる証明書が表示される
・選択するとルート証明書の保存を訊かれる

7.保存したルート証明書をクライアントにインポート
・(IE11の場合)ブラウザからインターネットオプション > コンテンツ > 証明書と進む
・「インポート」をクリックして6の手順で保存したルート証明書を「信頼されたルート証明機関」にインポート

8.6の手順に戻ると、クライアント証明書のインストールができる

9.サーバーにクライアント認証マッピング機能をインストール
・役割と機能の追加からIIS > Webサーバー > セキュリティ > IISクライアント証明書マッピング認証を選択

10.Webサイトとクライアント認証文字列をマッピングする
・(IE11の場合)ブラウザからインターネットオプション > コンテンツ > 証明書と進む
・8の手順でインストールしたクライアント証明書を選択してエクスポートする
・秘密キーはエクスポートしない
・Base64encodedでエクスポート
・エクスポートしたファイルをテキストエディタで開いて編集
⇒「-----BEGIN CERTIFICATE-----」の行を削除する
⇒「-----END CERTIFICATE-----」の行を削除する
⇒改行タブをすべて削除する
・編集した文字列をコピー
・サーバーでIISを開いて対象サイトの構成エディターを開く
・セクションを指定「system.webServer\security\authentication\iisClientCertificateMappingAuthentication」
・enabledをTrue
・manyToOneCertificateMappingEnabledをTrue
・oneToOneMappingsを以下のように指定する

certificate:クライアントからマッピング依頼されたクライアント認証証明書の認証文字列を貼り付ける
enabled:True
password:サーバーの任意のローカルユーザーのパスワード
userName:passwordで入力した任意のローカルユーザーのユーザー名

11.サイトのSSL設定をする
・IISで対象サイトを選択して、「SSL設定」へ進む
・SSLが必要にチェックを入れて、クライアント認証は必要を選択 変更を適用する

12.クライアントから確かめる
・証明書をインストールしているクライアントからブラウザでサイトを参照できることの確認
・証明書をインストールしていないクライアントからはHTTP403エラーが表示されることの確認

以上で確認ができました

なんとか解決できたので、この場を借りて報告させていただきます。

今回はWindows Server2016をOSとするサーバーにクライアント認証が必要なWebサイトを構築し、
ブラウザで確認をするということをやっていました。

その環境構築の手順は以下の通りとなります。

1.IISにHTTPSでバインドしたサイトを用意します
 ・サーバー証明書は自己署名入り証明書を作成しました

2.サーバーにActiveDirectory証明書サービスの役割をインストールします
 ・サーバーマネージャーの「役割と機能の追加」からインストールします
 ・機能は「証明機関」と「証明機関Web登録」の2つをインストールします
 ・インストール後、サーバーマネージャの「通知」から「Active Directory証明書サービスを構成する」へと
   進みます
 ⇒「証明機関Web登録」をインストールするとIISのDefault Web Site配下にCertSrvというアプリケーションが
   できます

3.クライアントから「https://hostname/certsrv」にアクセスします

4.「証明書を要求する」>「証明書の要求設定」と進み、フォーム画面を入力して要求を送信します
  ・証明書の種類は「クライアント認証証明書」
  ・CSPは「Microsoft RSA SChannel Cryptographic Provider」を選択
  ・「エクスポート可能なキーとしてマークする」にチェックを入れる
  以上の設定で要求を作成、送信しました

5.サーバー側でWindows管理ツールより「証明機関」を開き、保留中の要求から4の手順で要求した証明書を発行
  ・証明書を右クリックして「すべてのタスク」>「発行」で発行できました

6.再び3の手順のサイトにアクセスし、発行されたクライアント証明書をインストール
  ・「保留中の証明書の要求の状態」へ進むとインストールできる証明書が表示される
  ・選択するとルート証明書の保存を訊かれる

7.保存したルート証明書をクライアントにインポート
  ・(IE11の場合)ブラウザからインターネットオプション > コンテンツ > 証明書と進む
  ・「インポート」をクリックして6の手順で保存したルート証明書を「信頼されたルート証明機関」にインポート

8.6の手順に戻ると、クライアント証明書のインストールができる

9.サーバーにクライアント認証マッピング機能をインストール
  ・役割と機能の追加からIIS > Webサーバー > セキュリティ > IISクライアント証明書マッピング認証を選択

10.Webサイトとクライアント認証文字列をマッピングする
  ・(IE11の場合)ブラウザからインターネットオプション > コンテンツ > 証明書と進む
  ・8の手順でインストールしたクライアント証明書を選択してエクスポートする
  ・秘密キーはエクスポートしない
  ・Base64encodedでエクスポート
  ・エクスポートしたファイルをテキストエディタで開いて編集
   ⇒「-----BEGIN CERTIFICATE-----」の行を削除する
   ⇒「-----END CERTIFICATE-----」の行を削除する
   ⇒改行タブをすべて削除する
  ・編集した文字列をコピー
  ・サーバーでIISを開いて対象サイトの構成エディターを開く
  ・セクションを指定「system.webServer\security\authentication\iisClientCertificateMappingAuthentication」
  ・enabledをTrue
  ・manyToOneCertificateMappingEnabledをTrue
  ・oneToOneMappingsを以下のように指定する

    certificate:クライアントからマッピング依頼されたクライアント認証証明書の認証文字列を貼り付ける
    enabled:True
    password:サーバーの任意のローカルユーザーのパスワード
    userName:passwordで入力した任意のローカルユーザーのユーザー名

11.サイトのSSL設定をする
  ・IISで対象サイトを選択して、「SSL設定」へ進む
  ・SSLが必要にチェックを入れて、クライアント認証は必要を選択 変更を適用する

12.クライアントから確かめる
  ・証明書をインストールしているクライアントからブラウザでサイトを参照できることの確認
  ・証明書をインストールしていないクライアントからはHTTP403エラーが表示されることの確認


以上で確認ができました