トップ回答者
クライアント証明書を必須にすると接続が403のエラーとなる

質問
-
社内のSSL環境を構築しておりますが、私の知識不足のためになかなかうまくいきません。
申し訳ありませんが、ご教授願えますでしょうか?---テスト環境---
サーバA:www.XXXX.co.jp (Winodws Server 2008 R2 役割:IIS7.5、AD証明書サービス(スタンダート ルートCA))
サーバB:yyy.XXXX.co.jp (Winodws Server 2008 R2 役割:IIS7.5)
クライアント1:IE7(WindowsXP)、IE9(Vista):クライアント証明書あり
クライアント2:IE8(WindowsXP):クライアント証明書なし---証明書---
サーバA(ルートCA認証局)
|--サーバA:サーバAルートCAでサーバ証明書発行(IIS用:サイトのバインドに設定しSSLを設定(SSL設定:SSLが必須、クライアント証明書:必須))
|--サーバB:サーバAルートCAでサーバ証明書発行(IIS用:サイトのバインドに設定しSSLを設定(SSL設定:SSLが必須、クライアント証明書:必須))
|--クライアント1:サーバAルートCAでクライアント証明書発行---アクセス---
クライアント1→サーバAのサイト:表示/OK(正常にサイトを確認できる)
クライアント2→サーバAのサイト:表示/NG(サイトを確認できない)クライアント証明書がないので正しい※クライアント1→サーバBのサイト:表示/NG(403 13のエラーとなり接続できない)クライアント証明書はルートCAの証明があるのに接続できない
クライアント2→サーバBのサイト:表示/NG(サイトを確認できない)クライアント証明書がないので正しいなぜサーバBのサイトへアクセスできないのでしょうか?ルートCAの証明書は有効となっているのですが?です。
ちなみにクライアント証明書のCRLは「http://www.XXXX.co.jp/」のcrlの場所となっています。サーバBにAD証明書サービスをインストールし既存CAにてルートCAと利用すればよいのはわかるのですが、
インストールなしでできないものでしょうか?サーバを追加するたびにクライアント証明書を要求・発行しなくてもルートで承認している
クライアントから接続できないのでしょうか?証明書の発行、考えに問題があるのか分からないのですが、なにか回答があれば助かります。
2011年11月4日 3:36
回答
-
自己レスです。
いろいろと確認し、最終的には解決しました。
1.CRLをGETできなかったのは初期インストールされたSYSTEM環境のままだったために権限がたりなかった。
そもそもオフライン環境からコピーするので、Webに仮想ディレクトリを追加し、参照できるように設定することで動作するようになった。
2.サーバの証明書が有効にならなかったのは、サブジェクトにドメインをフルで設定していたために、サーバBのドメインが有効にならなかったためとおもわれます。
(サーバA:AAA.XXXX.co.jp、サーバB:BBB.XXXX.co.jp、サブジェクトDC=AAA,DC=XXXX,DC=co,DC=jpとなっていた)
以上を気をつけ、
DBサーバ(VPN内のローカルサーバ(これしかあとサーバがないので)にルートCAを作成)
他のサーバ(サーバA、サーバB)はAD証明書サービスをインストールせずにIISサーバのみとし、
クライアント証明書の要求を必須と設定しても、正常に動作するようになりました。
証明書の知識不足で申し訳ありません、ご協力くださった方々ありがとうございます。
- 回答としてマーク MZON 2011年11月10日 9:38
2011年11月10日 9:38
すべての返信
-
クライアント証明書を必須にすると接続できない
2011年11月4日 9:06 -
自己レスです。
いろいろと確認し、最終的には解決しました。
1.CRLをGETできなかったのは初期インストールされたSYSTEM環境のままだったために権限がたりなかった。
そもそもオフライン環境からコピーするので、Webに仮想ディレクトリを追加し、参照できるように設定することで動作するようになった。
2.サーバの証明書が有効にならなかったのは、サブジェクトにドメインをフルで設定していたために、サーバBのドメインが有効にならなかったためとおもわれます。
(サーバA:AAA.XXXX.co.jp、サーバB:BBB.XXXX.co.jp、サブジェクトDC=AAA,DC=XXXX,DC=co,DC=jpとなっていた)
以上を気をつけ、
DBサーバ(VPN内のローカルサーバ(これしかあとサーバがないので)にルートCAを作成)
他のサーバ(サーバA、サーバB)はAD証明書サービスをインストールせずにIISサーバのみとし、
クライアント証明書の要求を必須と設定しても、正常に動作するようになりました。
証明書の知識不足で申し訳ありません、ご協力くださった方々ありがとうございます。
- 回答としてマーク MZON 2011年11月10日 9:38
2011年11月10日 9:38 -
既に自己解決されているようなので蛇足かもしれませんが。。。
"証明書が失効していないにもかかわらず、HTTP "403.13 Web サーバーでクライアント証明書が無効になっています。" エラー メッセージが表示される"
http://support.microsoft.com/kb/294305/ja
> なぜサーバBのサイトへアクセスできないのでしょうか?ルートCAの証明書は有効となっているのですが?です。
最初のご質問内容でいえば、サーバBから見て、サーバAのCRLが確認できなかったためです。クライアント1が持つクライアント証明書に記されているCRL配布ポイントの場所がサーバBから見えなくてはいけません。
クライアント1からサーバBにアクセスした場合、クライアント1がサーバBにクライアント証明書を提示し、提示された証明書が有効かどうかは、サーバBが失効状態を検証します。その際に、提示されたクライアント証明書にあるCRL配布ポイント(「http://サーバA/CertEnroll/hogeCA.crl」など)を確認します。サーバBからみてCRLが確認できないと、クライアント証明書の状態が確認できなかったため、上記URL記載のごとく403エラーになります。
> インストールなしでできないものでしょうか?サーバを追加するたびにクライアント証明書を要求・発行しなくてもルートで承認しているクライアントから接続できないのでしょうか?
利用形態に叶うようにCAのCRL配布ポイント等を独自に作成し、CAの設定に追加します。既存の発行済み証明書にはそれらは反映されないので、設定後再発行再配布が必要になります。ですので本来CAの設計段階で考慮すべき事項です。
別の例ですが、エンタープライズCAの場合はLDAPが既定でCRL配布ポイントとなりますのでドメインに参加しているPCであれば見に行けますが、ドメインに参加していないPCでも利用できるようにするためには、明示的にCRL配布ポイントとなる場所を作成し、指定する必要があります。
本件も事例としては同様で、下記URLが参考になると思います。
http://elfhbt.blog33.fc2.com/blog-entry-36.html
- 編集済み Yasokichi 2011年11月14日 10:41
2011年11月14日 10:37