SSL/TLS証明書の有効期限を確認する4つの方法(OpenSSL・curl・Python・ツール)
セキュリティ インフラ SSL OpenSSL Linux
Webサーバーの SSL/TLS 証明書の有効期限をチェックし、期限切れ(NET::ERR_CERT_DATE_INVALID)事故を予防する4つの確認手法です。
1. オンライン SSL 期限チェック
ドメイン名を入力するだけで、証明書の期限日時と残り日数を即座に算出します。
🔐 この場でSSL証明書をチェックする
「SSL Labsで確認」をクリックすると、Qualys SSL Labsの詳細レポートが新しいタブで開きます。証明書の有効期限や評価を確認できます。
2. CLI コマンドでの確認手法
① OpenSSL コマンド(標準)
最も確実で詳細な確認コマンドです。
# 接続先の証明書から有効期限 (notAfter) を直接表示
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates
# 出力結果例:
# notBefore=May 10 00:00:00 2026 GMT
# notAfter=Aug 8 23:59:59 2026 GMT
② curl コマンド
curl の詳細ログ(-vI)から証明書有効期限を出力します。
curl -vI https://example.com 2>&1 | grep "expire date"
# 出力例: * expire date: Aug 8 23:59:59 2026 GMT
3. Python による自動監視・残日数計算スクリプト
Nagios, Zabbix, AWS Lambda 等で定期実行して Slack 等へ通知するスクリプト例です。
import socket
import ssl
from datetime import datetime
hostname = 'example.com'
context = ssl.create_default_context()
with socket.create_connection((hostname, 443)) as sock:
with context.wrap_socket(sock, server_hostname=hostname) as ssock:
cert = ssock.getpeercert()
# 'Aug 8 23:59:59 2026 GMT' 形式を parse
expire_str = cert['notAfter']
expire_date = datetime.strptime(expire_str, '%b %d %H:%M:%S %Y %Z')
remaining_days = (expire_date - datetime.utcnow()).days
print(f"{hostname} の証明書残日数: {remaining_days} 日")
if remaining_days < 30:
print("⚠️ 警告: 有効期限まで30日未満です!更新してください。")