Problem with Client Certificates and IIS 6.0
先週1週間、ずっと頭を悩ませてきた問題が解決。
その問題に直面したのは、クライアント証明書で認証するWebサービスをWindows 2000 ServerのIIS 5.0から、Windows Server 2003のIIS 6.0にリプレイスする時。中間認証局を運営する担当者によれば、クライアント証明書そのものは共通で大丈夫なのだそうだが、いざアクセスしてみると、IEのダイアログに対応する証明書が表示されない。
その認証局担当者や、Windowsサーバを専門にする担当者を交えて、サーバ側のCAを入れ替えてみたり、違う中間認証局を使ってみたり、何度もトライ&エラーを行ったものの解決せず、ほとほと困っていたときに、とあるMicrosoftのドキュメントに行き当たった。
Web サイトでクライアント証明書を必要とする場合、 または Windows Server 2003 で IAS 使用する場合 クライアント接続を作成することはできません。 http://support.microsoft.com/kb/933430/
Microsoftのドキュメント、以前に比べれば機械翻訳の精度はかなり上がったと思うのだけれど、それでもこの見出しはひどい。もっとシンプルでわかりやすい見出しを英文段階でつけるべきだと思う。
原文を参照しつつ、要約すれば、「信頼されたルート証明機関」の最大サイズが約12KBに設定されており、それ以上を超えると切り捨てられてしまうらしい。つまり、今回のようにデフォルトで設定されている証明機関に加えて、独自のルート証明機関をリストに追加すると、追加した分が無視されてしまうことがあるようだ。
しかも、デフォルトでは接続できないというだけで、原因が推測できるようなエラーが何も上がらない。レジストリを変更して、ようやくイベントログにエラーが記録されるようになる。
案の定、36885でSchannelのエラーが上がるようになった。
クライアントの認証を求めるとき、このサーバーは信頼された証明機関の一覧を クライアントに送ります。クライアントはこの一覧を使って、サーバーによって 信頼されているクライアント証明書を選択します。現在、このサーバーによって信頼されている証明機関が多いため、一覧が大きくなりすぎています。そのため、この一覧は切り埋められました。このコンピュータの管理者はクライアントの 認証のために信頼された証明機関を確認し、信頼される必要がないものを削除する必要があります。
こっちの日本語のほうがまだわかりやすいが、「切り埋められました」というのはMicrosoft用語だろうか。
百歩譲って、証明機関のリストを管理するのはサーバ管理者の責務だとしよう。デフォルトから見直さないユーザが悪いというのはわかる。それでも、最低限必要な証明機関が約12KBの制限を超えてしまったらどうするのか? これは明らかなバグだ。
しかもそのバグフィクスが非公開になっている。その時点でインストールされていたSchannel.dllは、2007年4月リリースの5.2.3790.4068。ドキュメントによればHotfixとして5.2.3790.4115が出ているのだが、サポートにコンタクトしないと入手できないという。
他にいくつか対症療法が挙げられているので、それで回避してひとまず解決した。リプレイスを年末までに終わらせるためには、こればっかりにかまけているわけにはいかない。
Statusは、"Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section." となったまま、1年が経過。Microsoftの「がっかり」はいつものことだけれど、今回は本当に「がっくし」という感じ。
この件に関する記述が少なくとも日本語では見当たらなかったので、敢えて書いてみた。
- Category(s)
- 仕事の周辺
- The URL to Trackback this entry is:
- http://www.mobileplace.org/dias/blog/problem-with-client-certificates-and-iis-6.0/tbping