CertH certH
このページの目次

TLS 1.3:何が変わり、どう確認するか

更新 2026-11-03 · 6 分で読めます

TLS 1.3 は 10 年ぶりに「機能を足す」のではなく「機能を削る」ことで成立したプロトコル改訂です。だから速く、設定ミスも起きにくい。そして TLS 1.2 しか話さないサーバーが最高評価に届かない理由でもあります。

TLS 1.2 から何が変わったか

TLS 1.3 はハンドシェイクを 2 往復から 1 往復に、再開時は 0 往復に短縮します。静的 RSA と静的 Diffie-Hellman 鍵交換を廃止したため、前方秘匿性は任意ではなく必須になります。CBC モードのスイート、RC4、SHA-1、圧縮は完全に削除され、ハンドシェイクのより多くの部分(証明書を含む)が暗号化されるので、中間者が学べる情報は減ります。

実務上の帰結は、かつては慎重な設定が必要だったほぼすべての歴史的弱点が、いまは起こり得ないということです。TLS 1.3 では弱いスイートをうっかりネゴシエートすることはできません。プロトコルが現代的なハッシュを使う AEAD スイートしか定義していないからです。

なぜ評価に効くのか

CertH は他のすべてがどうであれ、A+ には TLS 1.3 を要求します。証明書も暗号スイートも HSTS も完璧なサイトが、これがないだけで 95 点・A に留まります。運営がしっかりしているサイトが A で頭打ちになる最大の理由がこの一行です。

もう一つの理由はハンドシェイクそのものです。遅延の大きいモバイル回線では、往復 1 回の節約が新しい接続ごとに数十〜数百ミリ秒になります。体感速度に直接効く、測定可能な差です。

有効にする

nginx では TLS 1.3 の対応はバイナリがリンクした OpenSSL のバージョン次第です。OpenSSL 1.1.1 以降が必要で、編集前に nginx -V の built with OpenSSL を確認してください。

Apache では httpd が現行の OpenSSL にリンクされていれば SSLProtocol の変更で足ります。Cloudflare では TLS 1.3 は SSL/TLS → Edge Certificates のゾーンレベルのスイッチで、2021 年以降ほとんどのゾーンで既定で有効です。

# nginx: does this binary even support TLS 1.3?
nginx -V 2>&1 | tr ' ' '\n' | grep -i openssl

# negotiate TLS 1.3 explicitly and print the protocol
openssl s_client -connect example.com:443 -tls1_3 -servername example.com </dev/null 2>/dev/null | grep -E "Protocol|Cipher"

誰も言わない注意点

0-RTT 再開は高速ですが再生可能です。最初のフライトを捕捉した攻撃者がそのまま再送できます。最初のリクエストで状態が変わるエンドポイント、たとえば書き込みを行うあらゆる処理では 0-RTT を許可しないでください。

一部の企業向け中間装置は今も TLS 1.3 で壊れます。TLS 1.2 を併用しておくのが標準的な妥協点です。互換性を保ちつつ A+ の要件も満たせます。評価が見るのは「TLS 1.3 を提示しているか」であり、「TLS 1.2 を切ったか」ではないからです。

最後に、CDN やロードバランサーが TLS を終端しているとオリジンは完全に隠れます。エッジを変えずにオリジンだけ変えても、外部スキャナには何も変わりません。

FAQ

TLS 1.3 を有効にしたら TLS 1.2 は無効にすべきですか?

いいえ。TLS 1.2 を有効のままにしておくと古いクライアントや中間装置との互換性が保て、減点もありません。無効にするとフォールバックの選択肢が減るだけです。

TLS 1.3 で証明書の要件は変わりますか?

一部のレガシーアルゴリズムが使えなくなります。RSA 鍵の証明書は問題ありませんが、チェーンはプロトコルが許す署名アルゴリズムを使う必要があります。たとえば SHA-1 署名は TLS 1.3 では使えません。

次に読む