公的認証機関さんからクライアント認証証明書の購入資金が無いので、Active Directory 証明書サービスを用いて IIS7.5 にクライアント認証証明書を要求する設定するメモです。
(ココで設定している値は、あくまで自分のテスト環境における設定のメモです。目的・用途に合わせてCAや証明書の設定は読み替えてください)
(CAとIISは、1台のWindows Server 2008 R2で設定しています。またクライアントからアクセスするブラウザはIE10を用いています。)
[役割・機能のインストール]
1.サーバーマネージャーの役割の追加から [Active Directory 証明書サービス] と [Webサーバー(IIS)] を選択。
2.[Active Directory 証明書サービス] に追加するサービスを [証明機関] と [証明機関 Web 登録] を選択。
([証明機関 Web 登録]に必要な役割サービスと機能の追加ウィザードが表示されるので追加する。)
3.証明機関は [スタンドアロン] の [ルートCA] で [新しい秘密キーを作成する] を選択。
4.CAの暗号化についてはデフォルト。
5.CAの名前を適当に。有効期間もデフォルトで設定。
6.IISの役割サービスはデフォルトで設定。
7.あとはインストールボタンを押下するだけです。
8.インストール完了したら [IISマネージャー] を起動して [Default Web Site] に https をバインドします。
今回、自己署名証明書を作ってバインドしています。(IIS7+で自己署名入り証明書の発行)
[クライアントにてCA証明書のインストール]
1.ブラウザから[Active Directory 証明書サービス]をインストールしたサーバーに対して下記のURLにアクセス。
https://<Active Directory 証明書サービスをインストールしたサーバー名>/certsrv
2.[CA証明書、証明書チェーン、または CRL のダウンロード] を選択。[この Web サイトはユーザーの代わりにデジタル証明書の操作を実行します。]メッセージで [はい] を選択。
3.エンコード方式をBase64にしてCA証明書のダウンロードして保存します。
4.ダウンロードした [certnew.cer] ファイルを右クリックして[証明書のインストール]を選びます。
5.証明書ストアを「信頼されたルート証明機関」に設定します。
6.正しくインポートされれば終了です。
[クライアントにてクライアント認証証明書の要求]
1.ブラウザから[Active Directory 証明書サービス]をインストールしたサーバーに対して下記のURLにアクセス。
https://<Active Directory 証明書サービスをインストールしたサーバー名>/certsrv
2.[証明書を要求する]
3.[証明書の要求の詳細設定]
4.[このCAへの要求を作成し送信する]
5.下記の設定項目の値になるようにします。残りの設定項目はデフォルトで、識別情報は適当に入力して送信ボタンを押下します。
[証明書の種類]:クライアント認証証明書
[エクスポート可能なキーとしてマークする]:ON
6.要求が成功すれば下図のようになるはずです。
[要求されたクライアント認証証明書の発行]
1.[Active Directory 証明書サービス]をインストールしたサーバーで、管理ツール内にある[証明機関]を起動します。
2.[保留中の要求]に、クライアントからの要求を確認します。
3.要求を右クリックして、[すべてのタスク] – [発行] を選択します。
4.正常に発行されれば[発行した証明書]に表示されるはずです。
[クライアントにてクライアント認証証明書のインストール]
1.ブラウザから[Active Directory 証明書サービス]をインストールしたサーバーに対して下記のURLにアクセス。
https://<Active Directory 証明書サービスをインストールしたサーバー名>/certsrv
2.[保留中の証明書の要求の状態]
3.証明書を要求した日時が記載されたリンクを選択
4.[この証明書のインストール]を選択してインストールします。
5.IEのインターネットオプションで[コンテンツ]タブの[証明書]ボタンを押下します。
6.[個人]タブに先ほどインストールした証明書があるはずなので、選択して[エクスポート]ボタンを押下します。
7.秘密キーは[いいえ、秘密キーをエクスポートしません]を選択し、[Base 64 encoded X.509] 形式にして適当な名前を付けてエクスポートします。
8.エクスポートした証明書ファイルをテキストエディターで開いて、「——BEGIN CERTIFICATE——」の文字と「——END CERTIFICATE——」の文字。さらに 改行コードを削除して別ファイル名で保存します。
[IISにクライアント認証証明書を要求するように設定]
1.IISマネージャーを起動して、[Default Web Site]をポイントして [SSL 設定]を選びます。
2.SSL 設定を下記のように設定します。
[SSL が必要]:ON
[クライアント証明書]:必要
3.次にクライアント構成エディターを開きます。
4.セクションを下記の値に合わせます。
system.webServer/security/authentication/iisClientCertificateMappingAuthentication
5.下記の設定値を変更します。
enabled:True
manyToOneMappingsEnabled:False
6.[oneToOneMappings] の「…」ボタンを選択します。
7.コレクションの[追加]を選びます。
8.下記の設定値を入力します。
certificate:前項の8番目で作成した証明書の文字列を入力
enabled:True
password:ローカルユーザーのパスワード
userName:ローカルユーザーの名前
9.コレクションエディターフォームを閉じます。
10.IISマネージャーの右側にある操作パネルにある[適用]を選びます。
[動作確認]
クライアント認証証明書を持ってるPC/ユーザーで [Default Web Site] にアクセスすると正常にアクセスできることを確認します。
クライアント認証証明書を持っていないPC/ユーザーで [Default Web Site] にアクセスすると403が返ってくることを確認します。