SSL証明書の有効期限を確認する方法(不意打ちを防ぐ)

最終更新: 2026-05-31

証明書が期限切れになるとサイトは一瞬で全停止し、原因はいつも「更新を忘れた」です。期限の確認方法と、不意打ちを防ぐ方法を紹介します。

コマンドラインで

# 稼働中サーバの notBefore / notAfter を表示
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
  | openssl x509 -noout -dates

# 期限のみ(スクリプト向け)
openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
  | openssl x509 -noout -enddate

Windows PowerShell では:

$c = [Net.Sockets.TcpClient]::new('example.com',443)
$s = [Net.Security.SslStream]::new($c.GetStream())
$s.AuthenticateAsClient('example.com')
$s.RemoteCertificate.GetExpirationDateString()

30日ルール

公開証明書は短命化が進んでいます。CA/Browser Forum は最大有効期間を2029年までに47日へ短縮することで合意しました。手動更新では追いつかないため:

有効期間 更新タイミング 方法
90日(Let's Encrypt) 60日目 ACME 自動化
1年 期限30日前 自動化+アラート

監視は残り30日でアラートするよう設定します。これは当サイトの SSLチェッカー が黄色で警告する閾値と同じです。恒久的な対策は自動化です。ACMEとLet's Encrypt を参照してください。

ヒント: オリジンだけでなく、エッジ(CDN/ロードバランサ)が実際に提供している証明書を確認しましょう。両者は異なることがあります。

参考資料