QA@IT
«質問へ戻る

質問を投稿

クライアント証明書による認証が必要なWebサイトをIISで構築する方法について

お世話になります。
私の目的はクライアント認証が必要なWebサイトをIISで構築し、そのノウハウを理解することです。
様々なサイトを参考にし、最終的にクライアントPCのブラウザからURLを叩くところまで行いました。
しかし、結果は「HTTP403エラー 指定した資格情報を使用して、このディレクトリまたはページを表示するアクセス許可がありません」
というエラー画面が表示され、どうやら認証がうまくいっていないようです。

初めての経験なうえ、私が知識不足なこともあり、設定手順が正しいのか、また、どうしてこのような設定をするのかというのが分かりません。
お恥ずかしい限りですが、結果にたどり着くまでの設定の過程や私の疑問点について何か手がかりになるようなご指摘をして頂きたいです。

以下に私が行ったことを記します。

1.SSLサイトの作成
⇒IISのSSL設定でクライアント認証を許可するためにHTTPSのサイトを作成しました。
・自己署名入りサーバー証明書の作成
・作成した自己署名入り証明書をバインドしたHTTPSポートのWebサイトを作成
・クライアントPCからブラウザ上で確認(この時点ではブラウザでサイトの参照を確認できた。ただしURL欄に証明書エラーのメッセージ)

2.IISでSSL設定
⇒「クライアント証明書が必要」という設定をしました。
IISマネージャで対象のサイトを選択し、操作ビューから「SSL設定」を選択。
SSLが必要にチェックを入れてクライアント証明書のラジオボタンで「必要」を選択し「適用」をクリック

3.ブラウザから証明書をインストール
・1で作ったサイトのURLをクライアントPCのブラウザで叩いて証明書を表示させ、全般タブから証明書をインストール

4.インストールした証明書をエクスポート(これがクライアント証明書になる?)
・Internet Explorerのインターネットオプションを開く
・コンテンツタブを選択して「証明書」ボタンを押す
・3でインストールした証明書を選んで、「Base 64 encoded X.509」形式でエクスポートする

(以下5、6の手順は http://blog.progfast.jp/labs/index.php/arts/iis7-client_cert-config/ を参考にしました)

5.エクスポートした証明書の編集
・4でエクスポートした証明書をテキストエディタで開く
・「--BEGIN CERTIFICATE--」と「--END CERTIFICATE--」の行を削除
・改行タブを削除して1行になるように編集

6.IISでクライアント証明書をマッピング
・IISを立ち上げて対象のサイトを選択した状態で、機能ビューより「構成エディター」を選択
・セクションのパスをsystem.webServer/security/authentication/iisCertificateMappingAuthenticationと指定
・enabled:をtrueに変更
・oneToOneCertificateMappingsEnabled: をtrueに変更
・oneToOneMappingsを以下のように設定
  ⇒certificate:5でエクスポートして編集した文字列を貼り付ける
  ⇒enabled:Trueを設定
  ⇒password:サーバーマシンの任意のWindowsユーザーのログインパスワードを設定
  ⇒username:上記のpasswordで設定したユーザーのユーザー名を設定

7.ブラウザで確認
⇒認証ができませんでした

私が分かっていないのは
・自己署名入り証明書は公的な認証ではないのでクライアント認証がそもそもできないのか
・そもそもクライアント証明書の取得はできているのか
・IISでのクライアント証明書のマッピング設定におけるpasswordとusernameの設定はサーバーのユーザーで合っているのか

説明が分かりにくいところがあるかもしれません。ご迷惑お掛け致します。
なにか少しでもゴールにたどり着く手がかりがつかめたらという思いです。
クライアント認証について詳しい方ございましたら、ご指導、ご指摘お願い致します。

お世話になります。
私の目的はクライアント認証が必要なWebサイトをIISで構築し、そのノウハウを理解することです。
様々なサイトを参考にし、最終的にクライアントPCのブラウザからURLを叩くところまで行いました。
しかし、結果は「HTTP403エラー 指定した資格情報を使用して、このディレクトリまたはページを表示するアクセス許可がありません」
というエラー画面が表示され、どうやら認証がうまくいっていないようです。

初めての経験なうえ、私が知識不足なこともあり、設定手順が正しいのか、また、どうしてこのような設定をするのかというのが分かりません。
お恥ずかしい限りですが、結果にたどり着くまでの設定の過程や私の疑問点について何か手がかりになるようなご指摘をして頂きたいです。

以下に私が行ったことを記します。

1.SSLサイトの作成
   ⇒IISのSSL設定でクライアント認証を許可するためにHTTPSのサイトを作成しました。
   ・自己署名入りサーバー証明書の作成
   ・作成した自己署名入り証明書をバインドしたHTTPSポートのWebサイトを作成
   ・クライアントPCからブラウザ上で確認(この時点ではブラウザでサイトの参照を確認できた。ただしURL欄に証明書エラーのメッセージ)


2.IISでSSL設定
   ⇒「クライアント証明書が必要」という設定をしました。
   IISマネージャで対象のサイトを選択し、操作ビューから「SSL設定」を選択。
   SSLが必要にチェックを入れてクライアント証明書のラジオボタンで「必要」を選択し「適用」をクリック


3.ブラウザから証明書をインストール
   ・1で作ったサイトのURLをクライアントPCのブラウザで叩いて証明書を表示させ、全般タブから証明書をインストール


4.インストールした証明書をエクスポート(これがクライアント証明書になる?)
   ・Internet Explorerのインターネットオプションを開く
   ・コンテンツタブを選択して「証明書」ボタンを押す
   ・3でインストールした証明書を選んで、「Base 64 encoded X.509」形式でエクスポートする


(以下5、6の手順は http://blog.progfast.jp/labs/index.php/arts/iis7-client_cert-config/ を参考にしました)


5.エクスポートした証明書の編集
   ・4でエクスポートした証明書をテキストエディタで開く
   ・「--BEGIN CERTIFICATE--」と「--END CERTIFICATE--」の行を削除
   ・改行タブを削除して1行になるように編集


6.IISでクライアント証明書をマッピング
   ・IISを立ち上げて対象のサイトを選択した状態で、機能ビューより「構成エディター」を選択
   ・セクションのパスをsystem.webServer/security/authentication/iisCertificateMappingAuthenticationと指定
   ・enabled:をtrueに変更
   ・oneToOneCertificateMappingsEnabled: をtrueに変更
   ・oneToOneMappingsを以下のように設定
  ⇒certificate:5でエクスポートして編集した文字列を貼り付ける
  ⇒enabled:Trueを設定
  ⇒password:サーバーマシンの任意のWindowsユーザーのログインパスワードを設定
  ⇒username:上記のpasswordで設定したユーザーのユーザー名を設定

7.ブラウザで確認
   ⇒認証ができませんでした

私が分かっていないのは
・自己署名入り証明書は公的な認証ではないのでクライアント認証がそもそもできないのか
・そもそもクライアント証明書の取得はできているのか
・IISでのクライアント証明書のマッピング設定におけるpasswordとusernameの設定はサーバーのユーザーで合っているのか

説明が分かりにくいところがあるかもしれません。ご迷惑お掛け致します。
なにか少しでもゴールにたどり着く手がかりがつかめたらという思いです。
クライアント認証について詳しい方ございましたら、ご指導、ご指摘お願い致します。