SSL証明書の有効期限を確認する方法(不意打ちを防ぐ)
証明書が期限切れになるとサイトは一瞬で全停止し、原因はいつも「更新を忘れた」です。期限の確認方法と、不意打ちを防ぐ方法を紹介します。
コマンドラインで
# 稼働中サーバの 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/ロードバランサ)が実際に提供している証明書を確認しましょう。両者は異なることがあります。