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日未満です!更新してください。")