背景
- こちらの件。世の中騒がれて居なさすぎだなぁと思ってます。
- 【翻訳】GoogleがWebでのSHA-1の利用停止を急ぐ理由
- 要約:CSRの一方向ハッシュのアルゴリズムが脆弱だと、偽証明書の偽造リスクが高いですよ。
- 世の中の9割が未対応。
- opensslがデフォルトで作成するCSRはSHA1を使っています。そのため、Web上のほとんどのドキュメントはハッシュアルゴリズムオプションは指定していないので、デフォルトのSHA1が使われてしまっています。
- 特に、このCSR作成サービスとかは、MD5を使っていて、かなりやばいかも。
- そもそも、CSR作成してもらうと言うことは、秘密鍵の安全性の担保が自分の責任の範囲内で管理出来ないと思うけど。
CSRハッシュアルゴリズム確認方法
- ちょっと判定結果が怪しいけど、簡易的には以下で調べられます。
SHAAAAAAAAAAAAA | Check your site for weak SHA-1 certificates.
(Retired.) Check a site to see if it's still using dangerously weak SHA-1 certificates. Open source tool by @konklone.
- CSRファイルから調べる
% openssl req -in server.csr -text | grep Signature Signature Algorithm: sha1WithRSAEncryption
この結果が、sha1だったら、ちょっと危険。MD5なら、かなり危険。
SHA-256でCSRを作る方法
秘密鍵作って、CSR作る一通りの手順。
% openssl genrsa -rand /tmp/random -des3 2048 -o server.key % openssl req -new -sha256 -key server.key -out server.csr % openssl req -in server.csr -text | grep Signature Signature Algorithm: sha256WithRSAEncryption
Comments
よく調べていくと、CSRの一方向ハッシュが問題が直接的な問題では無く、証明機関が発行する証明書の一方向ハッシュが問題っぽい。
証明機関が、CSRのハッシュ方法を見て、そのハッシュアルゴリズムと同じハッシュアルゴリズムを使う場合があるから、CSR自体をSHA2でやる必要があるという感じに見て取れる。
ということで、最終的にCAがSHA2で署名していなかったら、CSRからSHA2使って取り直しましょうよ。という提案だと思う。