すべてのデプロイガイド デプロイ

SSL証明書の有効期限を確認する方法

SSL証明書の有効期限が切れると、ブラウザはフルページのセキュリティ警告を表示し、訪問者がサイトにアクセスできなくなります。ここでは、証明書の有効期限を確認する方法と、監視を設定する方法を解説します。

ブラウザから確認する

  1. https:// でサイトにアクセスします
  2. アドレスバーの南京錠アイコンをクリックします
  3. **「証明書」または「この接続は保護されています」→「証明書は有効です」**をクリックします
  4. **「有効期限」または「失効日」**の日付を確認します

OpenSSLで確認する(コマンドライン)

リモート確認(任意のマシンから)

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -enddate

出力例: notAfter=Aug 5 12:00:00 2026 GMT

ローカルファイルの確認

openssl x509 -noout -enddate -in /etc/ssl/gethttps/fullchain.pem

すべての詳細を一度に確認

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -subject -issuer -dates

ワンライナースクリプトで確認する

証明書が30日以内に有効期限切れになるかどうかを確認します:

if openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -checkend 2592000 > /dev/null 2>&1; then
  echo "Certificate is valid for at least 30 more days"
else
  echo "WARNING: Certificate expires within 30 days!"
fi

複数ドメインを一度に確認する

複数のドメインを管理している場合、ループで一括確認できます:

for domain in example.com www.example.com api.example.com; do
  expiry=$(echo | openssl s_client -connect "$domain":443 -servername "$domain" 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2)
  echo "$domain — expires: $expiry"
done

cronによる自動監視

証明書の有効期限が30日以内に迫ったらメール通知する日次cronジョブを作成します:

#!/bin/bash
# Save as /usr/local/bin/check-ssl-expiry.sh

DOMAINS="example.com www.example.com api.example.com"
WARN_DAYS=30
WARN_SECS=$((WARN_DAYS * 86400))

for domain in $DOMAINS; do
  if ! echo | openssl s_client -connect "$domain":443 -servername "$domain" 2>/dev/null | \
    openssl x509 -noout -checkend $WARN_SECS > /dev/null 2>&1; then
    echo "WARNING: $domain certificate expires within $WARN_DAYS days" | \
      mail -s "SSL Expiry Warning: $domain" admin@example.com
  fi
done

crontabに追加: 0 9 * * * /usr/local/bin/check-ssl-expiry.sh

監視サービスを設定する

より堅牢なアプローチとして、監視サービスを利用できます:

方法手順コストアラートオプション
カレンダーリマインダー発行後60日に設定無料手動
Cronスクリプトチェックスクリプトを毎日実行無料メール
UptimeRobotSSL監視を追加、アラート閾値を設定無料枠ありメール、Slack、Webhook
Better Uptimeインシデント管理付きSSL監視無料枠ありメール、SMS、Slack
Certbot自動更新systemdタイマーでcertbot renew無料有効期限切れを完全に防止

Let’s Encryptの90日証明書の場合、60日目に更新します(30日のバッファ)。

証明書のどの詳細を検証すべきですか?

有効期限以外にも、定期的に以下を確認してください:

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -text | grep -E 'Subject:|Issuer:|Not After|DNS:'

これにより以下が表示されます:

  • Subject/SAN — 証明書が正しいドメインをカバーしているか
  • Issuer — 期待される認証局(例:Let’s Encrypt)が発行しているか
  • Not After — 有効期限
  • DNS names — SANフィールド内のすべてのドメイン名

よくある質問

証明書の有効期限が切れるとどうなりますか?

ブラウザは「この接続ではプライバシーが保護されません」(Chrome)や「警告:潜在的なセキュリティリスクあり」(Firefox)などのフルページ警告を表示します。ほとんどの訪問者はすぐに離脱します。検索エンジンも証明書が更新されるまでページの順位を下げたり、インデックスから除外したりする場合があります。

どのくらいの頻度で確認すべきですか?

自動更新(Certbot)を設定している場合は、安全策として月に一度確認してください。手動で更新する場合(GetHTTPS)、50日目に確認し、60日目に厳密なリマインダーを設定してください。2029年に47日間の有効期限が導入されると、監視はさらに重要になります。

コマンドラインにアクセスできなくても有効期限を確認できますか?

はい。SSL Labs Server TestやSSL ShopperのSSL Checkerなどのオンラインツールで、ドメインを入力するだけで有効期限を含む証明書の詳細を確認できます。ブラウザのDevToolsでも確認できます(南京錠アイコン → 証明書の詳細)。

証明書がすでに有効期限切れの場合はどうすればいいですか?

すぐに更新してください。GetHTTPSにアクセスして新しい証明書を取得し、サーバー上のファイルを置き換えて、Webサーバーをリロードしてください。この作業は5分で完了します。証明書の有効期限が切れても特にペナルティはありません。更新して新しい証明書をインストールするだけです。

1つのスクリプトで複数ドメインを監視できますか?

はい。すべてのドメインを確認して残り日数を出力するスクリプトの例です:

#!/bin/bash
for domain in example.com www.example.com api.example.com; do
  expiry=$(echo | openssl s_client -connect "$domain":443 -servername "$domain" 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)
  days_left=$(( ($(date -d "$expiry" +%s) - $(date +%s)) / 86400 ))
  if [ "$days_left" -lt 30 ]; then
    echo "WARNING $domain: $days_left days left"
  else
    echo "OK $domain: $days_left days left"
  fi
done

注意: date -d の構文はLinux固有です。macOSでは date -j -f "%b %d %H:%M:%S %Y %Z" を使用してください。

関連記事

はじめに 2026-05-07
Let's Encrypt証明書の更新方法
Let's Encrypt証明書は90日ごとに有効期限が切れます。GetHTTPS(手動)またはCertbot(自動)での更新方法と、47日間の有効期限への準備について解説します。
SSL と証明書 2026-05-07
SSL証明書の有効期間:47日間への変更の解説
CA/Browser Forumは2029年までにSSL証明書の有効期間を47日間に短縮することを決議しました。タイムライン、あなたのWebサイトへの影響、準備方法を解説します。
デプロイ 2026-05-08
NginxにSSL証明書をインストールする方法
NginxにSSL証明書をインストールするステップバイステップガイド。ファイルアップロード、完全なサーバーブロック設定、TLSベストプラクティス、HTTP/2、HSTS、リダイレクト設定、テスト、6つの一般的なエラーのトラブルシューティングを解説します。
ブラウザで無料 SSL 証明書を取得
インストール不要、アカウント不要。秘密鍵は常にデバイスに残ります。
証明書を取得