A+ SSL 評価を取る方法(2026 チェックリスト)
更新 2026-11-03 · 7 分で読めます
A+ は別の種類の証明書ではなく、別の TLS 設定です。A で止まっているサイトのほとんどは、あと一つ設定が足りないだけです。TLS 1.2 の終端は正しくできているのに、TLS 1.3 を有効にしていない、あるいは HSTS の期間が足りていない。
何が評価を決めているのか
CertH は純粋な TLS ハンドシェイク 1 回だけから、5 つの重み付き領域を採点します。証明書の有効性とチェーン、鍵長と署名アルゴリズム、提示しているプロトコルバージョン、ネゴシエートされた暗号スイート、そして HSTS と OCSP ステープリングです。サーバーへのアクセスも、エージェントも、設定ファイルのアップロードもありません。すべてブラウザと同じように外側から観測します。
しきい値は単純です。A+ にはスコア 95 以上、ネゴシエートされたプロトコル一覧に TLS 1.3、そして HSTS が preload 済みか max-age 180 日以上であることが必要です。A は 90 から、B は 80、C は 70、D は 55、55 未満は F。証明書の期限切れは自動的に 0 点です。
A から A+ に上げる 4 つの変更
実際のところ、差はほぼこの 4 つのどれかです。順番に直してください。どれも外側から個別に検証できるので、1 つ直すごとに再スキャンできます。
- •TLS 1.3 を有効にする。それ自体が点になり、他がすべて満点の 100 でも A+ には必須です。
- •HSTS を少なくとも max-age=15552000(180 日)に上げる。1 年(31536000)が一般的な選択です。
- •中間証明書を含む完全なチェーンを提示する。中間証明書が欠けると一部のクライアントでチェーンエラーになり、減点されます。
- •OCSP ステープリングを有効にし、失効確認をハンドシェイクと一緒に運ぶ。訪問者の IP を CA に漏らさずに済みます。
A+ になる nginx 設定
現行の nginx(1.19 以降、OpenSSL 1.1.1 以降)向けの完全な server ブロック断片です。nginx がより古い OpenSSL でビルドされている場合、ここに何を書いても TLS 1.3 は黙って使えません。まず nginx -V で確認してください。
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 1.1.1.1 8.8.8.8 valid=300s;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
A+ になる Apache 設定
Apache ではステープリング用キャッシュをサーバーレベルで一度だけ宣言する必要があります。バーチャルホストの中では効きません。それ以外は <VirtualHost *:443> ブロック内に書きます。
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
サイトを A で止めてしまう間違い
最も多いのは、まだ HTTP のみのサブドメインが残っているドメインで includeSubDomains 付きの HSTS を有効にしてしまうことです。そうしたサブドメインは即座に開けなくなり、たいていはヘッダーごと削除して A に戻ってしまいます。HSTS は段階的に導入してください。まず max-age 300 秒で始め、1 週間様子を見てから 1 年まで引き上げます。
2 番目に多いのは、証明書が新しいから TLS 1.3 も有効だと思い込むことです。証明書とプロトコルバージョンは独立しています。TLS 1.2 しか話さないサーバーに新品の証明書を付けても、スコアは 95 未満のままです。
3 番目はオリジンの前にある CDN です。Cloudflare や Fastly、ロードバランサーが TLS を終端している場合、オリジンの設定は無意味です。評価はエッジを反映するので、設定はそちらで変える必要があります。
自分で確認する
どの変更もターミナルで数秒で確認できます。TLS 1.3 はサーバーが本当に対応しているときだけネゴシエートされ、HSTS はレスポンスヘッダーに現れ、ステープリングは OCSP レスポンスのブロックに表れます。
# Does the server actually negotiate TLS 1.3?
openssl s_client -connect example.com:443 -tls1_3 -servername example.com </dev/null 2>/dev/null | grep "Protocol"
# Is HSTS set, and for how long?
curl -sI https://example.com | grep -i strict-transport-security
# Is OCSP stapling actually working?
openssl s_client -connect example.com:443 -status -servername example.com </dev/null 2>/dev/null | grep -A2 "OCSP Response"
FAQ
A+ には有料証明書や EV 証明書が必要ですか?
いいえ。DV(ドメイン検証)証明書でも A+ は取れます。評価が測るのは TLS 設定であって検証レベルではありません。証明書の種類が効くのは、チェーンや鍵アルゴリズムが変わるときだけです。
証明書を更新したら評価が下がったのはなぜですか?
更新で発行者や鍵種別が変わることが多く、reload 後に別の暗号スイートへフォールバックするサーバーもあります。CertH はこの変化をドメインレポートの「スコア変化」の解説に、具体的な理由とともに記録します。
A+ には HSTS preload が必要ですか?
いいえ。preload は HSTS 要件を満たす 2 つの方法のうちの 1 つで、preload なしでも max-age 180 日以上あれば足ります。preload はより厳格で取り消しが難しいため、任意の扱いで構いません。