趣味のプログラム工房

IIS クライアント証明書を使ったクライアント認証

Windows2008のIISを使ってWEBサーバを組んでいるシステムで、クライアントマシンにインストールしているクライアント証明書を利用したアクセス制限を行おうと思っていましたが、見事にはまりました。

IISの「サイト」-「SSL」の設定から、「SSLが必要」・「クライアント証明書」が「必要」に設定。
サーバにクライアント証明書の中間CA証明書、ルート証明書を正しくインストール。
(クライアント証明書の中間CA証明書等はMMCからインストールします。)


しかし、正しく設定しているにもかかわらず、クライアントPCからWEBサーバへアクセスすると
サーバーエラー 403-許可されていません アクセスが拒否されました

指定した資格情報を使用して、このディレクトリまたはページを表示するアクセス許可がありません

というエラーが発生。
正直原因不明でした、、、。

が、別のPCでアクセスすると「403.13」というエラーコードが確認できました。
(なんでマシンによって表示されるエラー画面が違うんだろう、、、このエラー画面もWEBサーバが出してるんじゃなかったっけ??)

ちなみに、この「403.13」のエラー、「クライアント証明書が取り消されたか、または失効サーバーに接続できませんでした。」というメッセージも同時に出ているのですが、どうやら、失効サーバーに接続できなかったことが原因のようです。
つまり、今回の場合、、WEBサーバがインターネット側にアクセスできる環境になってなかったのが原因でした。
(インターネット→WEBサーバはOK、WEBサーバ→インターネットはNGという設定でした)
このため、クライアントPCのクライアント証明書をサーバ側で検証できていなかったみたいです。(証明書発行機関(CA:ベリサイン)の失効リストの取得に失敗していた)
というわけで、ルータの設定を変更し、インターネット側へ出れるようにしたら、正しく動作するようになりました。

あと、ひょっとしたら、中間CA証明書の設定で、「証明書失効リスト(CRL)を無効にする」等の失効リストをダウンロードしないような設定でもOKかもしれません。

ちなみに、中間CA証明書をルート証明書として登録しても、エラーになるようです。正しく設定しましょう。

2012年02月13日