これは何?
SHA-1 という暗号化アルゴリズムは既に安全なものでは無く、2015 年以降重大な脆弱性が
確認され続けています。
このため RFC 9155 で廃止が勧告され、それに従い Chromium が SHA-1 のサポートを2023 年で打ち切りました。
(Google Chrome 117 以降 / Microsoft Edge 119 以降)
本記事は Deprecate TLS SHA-1 server signatures 、
すなわち TLS SHA-1 サーバー署名の廃止についての関連ドキュメントのまとめ及び備忘録です。
事象
Chromium ブラウザのバージョンアップに伴い、以下のいずれかのエラーでサイトへの接続に失敗します。
・ ERR_SSL_PROTOCOL_ERROR
・ ERR_SSL_VERSION_OR_CIPHER_MISMATCH
net-export で確認した場合には、 Reason = 245 (SSL_R_WRONG_SIGNATURE_TYPE) として
出力される例が多いようみられます。
SSL_HANDSHAKE_ERROR
--> error_lib = 16
--> error_reason = 245
--> file = "..\\..\\third_party\\boringssl\\src\\ssl\\extensions.cc"
--> line = 452
--> net_error = -107 (ERR_SSL_PROTOCOL_ERROR)
--> ssl_error = 1
原因と対策
TLS Handshake 中の Server Key Exchange において、サーバー上で SHA-1 の署名アルゴリズムが使われている場合に発生します。
例として古い OpenSSL モジュールを用いている場合などが該当します。
なお、クライアント証明書の問題ではないため、原則サーバーサイドでの修正が必要となります。
一時回避策 (クライアントサイド)
Google Chrome では InsecureHashesInTLSHandshakesEnabled ポリシーにて、
本機能を制御することが可能です。
ただし、本ポリシーは Chrome v123 で削除の予定です。
回避策についての補足
Microsoft Edge では上記ポリシーを正式サポートしておらず、動作の保証はなされません。