以前より本ブログでもご案内していました証明書の鍵長に関する更新を、本日、セキュリティ アドバイザリ 2661254 として公開しました。(これまでのブログ記事: その 1, その 2) お客様は、ダウンロード センターもしくは Microsoft Update カタログより、当該更新プログラムを入手いただけます。詳細はアドバイザリ 2661254 をご参照ください。
更新が適用されると、証明書のチェーン検証が行われた際に、既定で 1024 ビット未満の RSA 鍵を利用した証明書は無効とみなされます。
ブログ記事: その 1では、証明書のチェーン検証が行われるタイミングで記録されるイベントログを使用し、どのような証明書が利用されているのかを確認する方法をご紹介しました。
今回は、新たな確認方法として、証明書のチェーン検証が行われたタイミングで、無効とみなされた証明書を指定したフォルダーに集める方法をご紹介します。
この方法においては、設定をしておくだけで、指定したフォルダーに影響が発生する証明書が収集されるため、証明書自体を確認することができます。また、フォルダーは、端末のローカルフォルダーだけではなく、共有フォルダーを指定することもできます。
ぜひ、更新を適用した端末で設定を行っていただき、ご確認ください。
詳細
この確認方法においては、証明書のチェーン検証が行われたタイミングで、無効とみなされた証明書のコピーが指定したフォルダーに格納されます。
設定を行った場合の動作の流れ
- 証明書を利用する動作を行います。たとえば、HTTPS WEB サイトの閲覧などを行います。
- 端末において、証明書のチェーン検証動作が行われた際、もし、1024 ビット未満の RSA 鍵が利用された証明書である場合、無効とみなされます。
- 無効とみなされた証明書は、フォルダーに記録されます。
<図 1: ログが記録される流れ: HTTPS サイトにアクセスした場合>
<図 2: 指定したフォルダーに、該当する証明書が収集される様子>
設定を行った端末で、通常業務を行い、定期的にフォルダーを確認することで、普段利用している環境で、無効と判断されている証明書を効率よく確認することができます。
設定方法
確認を行うための設定は、どのように記録を行うかを指定するフラグ (EnableWeakSignatureFlags) と、ログ記録を行うフォルダーパス (WeakSignatureLogDir) をレジストリに設定します。
レジストリの設定は、コマンドを使用した方法と、レジストリ エディターを使用した方法の、いずれかの方法で行うことができます。
(a) コマンドを使用した設定方法
Windows Vista, Windows Server 2008 以降の端末においては、以下のコマンドにて設定できます。Windows Server 2003, Windows XP 以前の端末においては、コマンドが利用できませんので、後述のレジストリ エディターを使用する方法を利用してください。
- 設定手順
1. コマンド プロンプトを管理者権限で開きます
2. 以下のコマンドを実行します
certutil -setreg chain\EnableWeakSignatureFlags <値>
Certutil -setreg chain\WeakSignatureLogDir “<パス>”
- 補足
<値> には、設定するフラグ値を指定します。通常は 4 を指定します。
<パス> には、出力される証明書のコピーを保存するフォルダーへのパスを指定します。フォルダーには、Authenticated Users および All Application Packages に変更権限があることを確認してくだい。
パスは、ローカルフォルダや共有フォルダーも設定可能です。
- コマンド例
たとえば、フラグの値 4 で、ログを保存するフォルダーとして C:\Under1024KeyLog フォルダーを指定する場合は、以下のコマンドを実行します。
certutil -setreg chain\EnableWeakSignatureFlags 4
Certutil -setreg chain\WeakSignatureLogDir “C:\Under1024KeyLog”
(b) レジストリ エディターを使用した設定方法
レジストリ エディターを利用してレジストリを編集することでも設定を行うことができます。
Windows Server 2003, Windows XP 以降の端末で設定可能です。
- 設定手順
1. 管理者権限でレジストリ エディターを開きます。
2. 以下のレジストリ キーを開きます。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CertDllCreateCertificateChainEngine\Config]
3. 以下のレジストリ キーと値を設定します。 (存在していない場合は新規で作成します)
キー名:EnableWeakSignatureFlags
タイプ: DWORD 値
値:設定するフラグ値を指定します。通常は 4 を指定します。
キー名: WeakSignatureLogDir
タイプ: 文字列値
値:出力されるログを保存するフォルダーへのパスを指定します。フォルダーには、Authenticated Users および All Application Packages に変更権限があることを確認してくだい。
パスは、ローカル フォルダーや共有フォルダーも設定可能です。
補足:
どのような確認を行い、ログ記録を行うかについては、指定するフラグ(EnableWeakSignatureFlags) の値を変えることによって、様々な設定を行うことができます。
なお、通常の設定では、フラグに 値 4 を設定することをお勧めします。これにより、無効とみなされたすべての証明書を、フォルダーに収集することができます。
フラグにおいて、設定できる動作は以下です。
・ 検証対象の証明書が 1024 ビット未満の RSA 鍵をもつ証明書の場合、無効と判断するか、有効と判断するか
・ 検証対象の証明書のチェーンにある、ルート CA 証明書が 1024 ビット未満の RSA 鍵をもつ証明書の場合、無効と判断するか、有効と判断するか
・ ログ機能を行うか、行わないか (対象の証明書をフォルダーに収集するか否か)
フラグの設定値と実行される動作は以下の通りです。
フラグ値 (10 進数) (EnableWeakSignatureFlags) | 検証対象の証明書 | チェーンにあるルート CA 証明書 | ログ機能 |
---|---|---|---|
2 | 無効 | 有効 | なし |
4 | 無効 | 無効 | あり |
6 | 無効 | 有効 | あり |
8 | 有効 | 有効 | あり |
まとめ
暗号の 2010 年問題や、Flame マルウェアの台頭などにより、証明書に利用される鍵長やアルゴリズムはより強度なものへ、切り替えを行っていくことが求められています。
今回の更新を適用することにより、長い鍵長の証明書のみを利用するようにすることで、より証明書を利用する環境を安全なものにすることができます。
今回ご紹介した方法を用いることで、簡単に短い鍵長の証明書を洗い出すことができます。
ぜひ、ご利用の端末で、更新の適用、確認方法の設定をしていただき、利用環境の確認を進めてください。