前回までは,Webサーバーとの相互認証において,クライアント証明書によるアクセスがうまくいかなかった場合の原因についてまとめてみた。一方,問い合わせがあった事例では,そのいずれにも該当しないという状況であった。
「…ん,待てよ?」
その顧客は,直前に電子証明書の更新を行っているようだ。電子証明書の更新とは,ユーザーの姓名やメールアドレスの証明書記載情報が同一で,有効期間が次の期間の新しい電子証明書を発行する作業である。
更新前の古い電子証明書の有効期限が切れたと同時に,更新後の新しい電子証明書を使い始めるということは,運用上,現実的ではない場合もあるため,更新前の電子証明書と更新後の電子証明書では,有効期間を重複させている場合が多い。つまり,電子証明書の更新を行った後も,古い電子証明書は元の有効期間内において有効なままであり,一時的に更新前の電子証明書と更新後の電子証明書の2枚の有効な電子証明書が同じブラウザ内に存在してしまうケースが発生することになる。
このとき重要なのは,更新前と更新後の電子証明書については,記載されたメールアドレス,ユーザー姓名は同一であり,一見両者は同じ様に見えるが,実は電子証明書としては別のものであり,シリアル番号も異なっているということだ。
電子証明書を使ってユーザー認証を行う方法はいくつかあるが,今回の事例のシステムでは,電子証明書とサービスを受ける顧客とを厳密に1対1に対応させるという設計に基づいて構築されていた。
このため,システム側では顧客が電子証明書を更新した時点で,その顧客と更新後の新しい電子証明書とが証明書のシリアル番号によって対応付けられ,更新前の電子証明書ではアクセスができない仕様となっていたのである。従って,顧客が電子証明書の更新を行った後は,Webサーバーからのクライアント証明書の提示要求に対して,更新後の電子証明書を提示することが必要なのだが,更新前の電子証明書を提示してしまったために,アクセスができなかったものと思われた。
顧客が更新後の証明書を提示すれば済むことであるが,実は事はそう簡単ではない。実際のブラウザでの挙動を見てみることにする。
画面2は,筆者のクライアント証明書を更新した直後に,この証明書を利用するWebサイトにInternet Explorerでアクセスした際に表示されるダイアログの例である。更新元の古い電子証明書の有効期間は2007年11月27日から2008年11月28日までで,2008年11月20日に更新を行い,2009年11月28日までの新しい電子証明書が発行され,更新作業直後にWebサイトにアクセスした状況を想定している。

画面2のうち,最も下に表示されているのが,更新前の古い証明書であり,下から2番目のものが,更新後の新しい証明書である。ご覧のとおり,このダイアログでは両者の区別はできない。このダイアログで個別に証明書を指定し,「証明書の表示」を行なって新たに開くダイアログに表示された有効期間によって,ようやく両者を識別することができる(画面3,画面4)。


顧客に問い合わせたところ,やはり,同じ電子証明書が2通表示されていたので,「どちらでも同じだろう」と,適当に選んだ方の電子証明書が,たまたま,更新前の電子証明書であり,その結果,アクセスができなかった様である。電子証明書の詳細から有効期間を確認して,更新前後の電子証明書を識別する方法を顧客に伝えたところ,正常にシステムにアクセスができる様になったとのことであった。
とりあえず本件については一件落着した。次回は,筆者らのチームにおける運用業務そのもので発生した電子証明書関連の事例を取り上げてみたい。
ネットワンシステムズ 営業推進グループ ソリューション本部 エンジニアリングサービス部 副部長