先日、
OpenSSLを使った認証局構築セット。中間認証局無しWindowsバッチ版
という記事を公開したのですが、
問題があってこっそりと記事を(ダウンロードファイルも)修正しました。
修正内容は、
CA(認証局)の署名アルゴリズムを、sha512RSAから、sha1RSAへ変更
してあります。
本来は、2010年問題によってSHA1は、SHA2への移行が推奨されています。
その為、署名アルゴリズムもsha512RSAを使用すべきなのですが、
作成された証明書をWindowsで確認すると下記の通り、
「この証明書の整合性を保証できません。証明書が壊れているか、または変更されている可能性があります。」
「この証明書には無効なデジタル署名があります。」
と表示され、不正な公開鍵証明書として扱われてしまいます。
もちろん、このCAによって署名を付与した証明書も同様に扱われてしまいます。
正当な公開鍵証明書であれば以下の様に表示されます。
作成自体は成功しているので怪しいとおもい、OpenSSLコマンドで証明書を検証してみました。
検証コマンドと実行結果は以下の通り。
# CA(認証局)の公開鍵証明書の自己署名を検証 C:\crtFiles>openssl verify -CAfile rootCA.crt rootCA.crt rootCA.crt: OK # サーバ用の公開鍵証明書のCAの署名を検証 |
検証結果はOKなのでやはり証明書に問題はないようです。
で、ぐぐってみると、以下のような記事を発見。
上記のページによると、
WindowsのServicePack3を適用しないとSHA2は使用できない!
ということみたいです。
マイクロソフト発行の以下のPDFにも明記されていました。
Windows XP Service Pack 3 の概要 (PDF)
※9ページ最下部
ということで、ServicePack3を適用してみたところ、無事にSHA2で署名した公開鍵証明書の検証ができました。
ということで、
・2010年問題の為に、署名アルゴリズムにはSHA2を、暗号化アルゴリズムにはRSA2048を使用すべき。
・ただし、WindowsXPのServicePack2以前のWindowsではSHA2を使用できない。
・なので、WindowsXPのServicePack2以前のWindowsからアクセスされる場合、SHA2は使用できない。
となる。
不特定多数のユーザに公開しているサーバでは非常に厳しい条件となりますね。。。
まだしばらくはSHA1を使用した方が良いのか。。。
といっても、切り替えるタイミングがおとずれるのか。。。
簡単に答えを出すのは難しそうです。