none
クライアント証明書を必須にすると接続が403のエラーとなる RRS feed

  • 質問

  • 社内の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

すべての返信

  • クライアント証明書を必須にすると接続できない

    http://okwave.jp/qa/q7112627.html

    2011年11月4日 9:06
  • すみません、リンク先も私です。

    もう少し勉強とテストをつづけます。

    クライアントの作業をふやしたくないので入れたくないだけなので、

    サーバBにもスタンドアロン で子CAを入れればいいとはおもいますが。

    (そのほうがセキュリティ的には正しいのでしょうね)

     

    2011年11月4日 9:38
  • 自己レスです。

    サーバのパケットを確認していると、

    CRLのファイルをGETにて取得しようとして、サーバから500のエラーでもどっているようです。

    CRLのアドレスをクライアントで直接実行しても同じエラーになります。

    特に初期インストールのままなので問題ないとおもっていたのですが、

    IISでの設定を変更する必要があるのでしょうか?

    • 回答としてマーク MZON 2011年11月10日 9:38
    • 回答としてマークされていない MZON 2011年11月10日 9:38
    2011年11月7日 9:40
  • 自己レスです。

    いろいろと確認し、最終的には解決しました。

    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