« 2010年11月 | メイン | 2011年07月 »
2010年12月27日
ADCSとクライアント証明書
WindowsServer2008R2上で稼働しているIIS7で、クライアント証明書による認証を必要とするサイトが公開されている。
同じサーバ上でアクティブディレクトリ証明書サービス(ADCS)を動かし、クライアントからの証明書発行要求に対応している。
サイト自体は、ベリサインによるサーバ証明書を発行してもらっているが、認証局(CA)自体はオレオレCA(笑)だ。
このサーバにWindowsXPから要求すると、何の問題もなくうまくいく。ところが、WindowsVistaやWindows7から証明書発行要求を行うと、証明書自体は問題なく発行できるのだが、そのサイトには何故か接続できない(証明書の選択画面が表示されず、いきなり403エラーになる)。
色々なブラウザ(IE、Firefox、Chrome等)で試したり、ブラウザの設定を諸々いじったり、『mmc.exe』を使ったり、相当試行錯誤した。
結果、うまくいくパターンを発見したので、覚書として記載しておく。
【手順】
1.CA証明書(cer)またはCA証明書チェーン(p7b)をダウンロードし、『信頼されたルート証明機関』に事前にインポートしておくこと(これは必須)。
2.クライアント証明書発行要求画面において、『エクスポート可能なキーとしてマークする』にチェックを入れて送信する(「証明書を要求する」→「証明書の要求の詳細設定」→「この CA への要求を作成し送信する。」→必要事項の入力→送信)。
これだけ!
つまり、XPではクライアント証明書を秘密鍵付きでエクスポートできないが、Vistaや7ではエクスポートできてしまうことになる(てことは、他のマシンにコピーできる)。
この情報がネット上にほとんど存在しない理由は、信頼できるCA(ベリサイン等)が発行するクライアント証明書は全てこのタイプ(鍵付きでエクスポート可)だからではないかと推測される。
もしも、オレオレCAを構築してクライアント証明書を発行しようとしたが、Vistaや7でうまくいかないって人は、「エクスポート可能な形で発行しなければならない」ってことを覚えておくと良いかもしれない。
なお、ADCSでは、FirefoxやChromeからの要求を処理しようとすると、エラーになって証明書自体が発行できません(さすがMSってこと?(笑))。