SSL証明書のエラー・期限切れの確認方法と対処:TLSバージョンとCAAも
執筆:IDEAVALU運営 · 更新:
証明書が無効だと、訪問者にはブラウザの警告画面が表示され、ほとんどの人はそこで離脱します。期限切れは自動更新の失敗で突然起きることが多い項目です。
自分で確認する方法
openssl で、証明書の期限と発行元、接続に使われた TLS のバージョンを確認できます。
証明書の期限と発行元
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -issuer -subject
TLS 1.1 で接続できてしまわないか(エラーになれば正常)
openssl s_client -connect example.com:443 -servername example.com -tls1_1 </dev/null
自動更新が止まる主な原因
Vercel・Netlify・Cloudflare などは証明書を自動で発行・更新しますが、DNS の向き先を別のサービスに変えると、更新の確認ができず失敗します。自前のサーバーで certbot を使っている場合は、更新のタイマー(cron / systemd)が動いているか、80番ポートが閉じられていないかを確認してください。
CAA レコードで発行元を限定する
CAA は、このドメインの証明書を発行してよい認証局を DNS で宣言する仕組みです。設定すると、他の認証局で勝手に証明書を発行されるリスクを減らせます。使っているホスティングの認証局を入れ忘れると更新に失敗するので注意してください。
直し方
HTTPSで開けるか
HTTPS で開けるようにします。Vercel・Netlify・Cloudflare Pages などは、独自ドメインを追加すると証明書を自動で発行します。
ホスティングの管理画面でドメインを追加し、案内された DNS レコード(A / CNAME)を設定する。
自前のサーバーなら、Let's Encrypt(certbot など)で証明書を取得し、443番ポートで待ち受ける。
SSL証明書が有効か
信頼される認証局の証明書に入れ替えます。期限切れ・ドメイン名の不一致・自己署名が主な原因です。
証明書のドメイン名に、www あり・なしの両方が含まれているか確認する。
ホスティングの管理画面で証明書を再発行するか、Let's Encrypt で取得し直す。中間証明書も一緒に設定する。
証明書の有効期限
期限が切れる前に更新します。自動更新が止まっていないか確認しましょう。
certbot の場合
sudo certbot renew --dry-run
ホスティングの自動発行を使っている場合は、DNS がホスティング先を向いたままか確認する(向き先が変わると更新に失敗します)。
TLSのバージョン
TLS 1.0 / 1.1 を無効にし、TLS 1.2 以上だけを受け付けます。
nginx の場合
ssl_protocols TLSv1.2 TLSv1.3;
CAA(証明書の発行元の制限)
DNS に CAA レコードを追加し、証明書を発行できる認証局を限定します。
Let's Encrypt を使う場合(Vercel・Netlify も Let's Encrypt)
CAA @ 0 issue "letsencrypt.org"
Cloudflare の証明書を使う場合は、Cloudflare が案内する認証局(Google Trust Services など)も追加してください。足りないと証明書の更新に失敗します。
よくある質問
- 証明書のドメイン名が一致しないと言われます
- 証明書に含まれるドメイン名と、アクセスしたドメイン名が違うときのエラーです。www あり・なしの両方を証明書に含めるか、片方からもう片方へ転送してください。