証明書サービスにおける X.509 証明書失効 の IIS6 ユーザーマッピングへの効果確認

証明書サービス側で、特定の証明書を失効させた場合に正しくその失効が反映されてアクセスできないようになるかどうかを確認した。

結果としては、少なくともWebサーバをOSごと再起動した場合には反映が確認できた。(失効させた証明書によるアクセスはできなくなった)

再起動が必要だったのは、失効リスト(CRL)の標準有効期間は7日、デルタCRLにしても1日と設定されていたからである。

また、同時に Windows Server 2007 + IIS7 の環境で「はじめてのアクセス」だった場合は、最初から失効の反映を確認できた。概ね大丈夫であろう、という状況である。

 

作業の過程でこのCRLをOSの再起動なしで強制的に更新させる方法を探したところ、Windows Support Tools の httpcfg.exe に RevocationFreshness とCertCheckModeという設定項目がありいかにも該当しそうだった。CertCheckMode=4 にするとRevocationFreshness が有効になるとある。

コマンドを実行してみると、まず最初にすでに存在するエントリをdeleteしてからでないとsetでパラメータを追加できないようだった。結果として以下のような作業になった。

C:\Program Files\Support Tools>httpcfg query ssl
    IP                      : 0.0.0.0:443
    Hash                    : b8d55c73bce0a9abe3e7 a 97bd6a570xxxxxxxx
    Guid                    : {4dc3e181-e14b-4a21-b022-59fcxxxxxxxx}
    CertStoreName           : MY
    CertCheckMode           : 0
    RevocationFreshnessTime : 0
    UrlRetrievalTimeout     : 0
    SslCtlIdentifier        :
    SslCtlStoreName         :
    Flags                   : 1
------------------------------------------------------------------------------
C:\Program Files\Support Tools>httpcfg delete ssl -i 0.0.0.0:443
C:\Program Files\Support Tools>httpcfg set ssl -i 0.0.0.0:443 -h "b8d55c73bce0a9abe3e70a097bd6a570xxxxxxxx" -g {4dc3e181-e14b-4a21-b022-59fcxxxxxxxx} -c MY -f 1 -m 4 -r 60 -t "" -n ""
C:\Program Files\Support Tools>httpcfg query ssl
    IP                      : 0.0.0.0:443
    Hash                    : b8d55c73bce0a9abe3e7 a 97bd6a570xxxxxxxx
    Guid                    : {4dc3e181-e14b-4a21-b022-59fcxxxxxxxx}
    CertStoreName           : MY
    CertCheckMode           : 4
    RevocationFreshnessTime : 60
    UrlRetrievalTimeout     : 0
    SslCtlIdentifier        : 
    SslCtlStoreName         : 
    Flags                   : 1
------------------------------------------------------------------------------

結果としてIEからアクセスして表示されたのは、すべてのクライアント証明書について「このページには有効な SSL クライアント証明書が必要です 使用したクライアント証明書が無効です。」で、クライアント証明書マッピングのみならず受け入れられなくなってしまった。ここから IIS マネージャで改めて設定すると、httpcfg query ssl の内容は元の RevocationFreshnessTime=0 に戻ってしまう。

IIS6における http.sys (カーネルドライバ)とユーザーランドサービスの連携具合を完璧には把握していないというところからこれ以上戦うのは止めにした。

その後、OSを再起動したところ、有効な証明書では正しくアクセスでき、失効させた証明書では上記と同じ「このページには有効な SSL クライアント証明書が必要です 」となるようになった。

また、証明書の失効ではなく Active Directory アカウントの無効化 (Active Directory ユーザとコンピュータ 管理ツールを利用)でどうなるか実験したところ、これもOSの再起動なしにはWebサーバ内で内部的にキャッシュされるらしく即時反映とはいかなかった。キャッシュ期間は不明なままOS再起動したところ、アカウント無効の効果が反映され、「クライアント証明書が受け付けられるもののWindows統合認証に失敗した状態」となり、ブラウザ側ではBasic認証ダイアログが表示されるという結果となった。

本気で確認するならデルタCRLが本当に指定した時間経過後に反映されるかどうかを確認すべきであるが、今のところ利用する予定のプロジェクトは対象人数がそれほど多くなく、手動で失効させないければならない重大な事態はしばらく先だろうと思っている。その時にはIIS7が普通になっているかもしれない。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。