2026年4月1日

SSL証明書の期限切れ事故を防ぐ!自動監視で安全なサイト運用を

SSL証明書 セキュリティ 死活監視 自動化

SSL証明書の期限切れは「うっかり」では済まされない

SSL証明書の期限が切れると、ブラウザに**「この接続ではプライバシーが保護されません」**という警告が表示されます。ユーザーの大半はこの画面を見た瞬間に離脱し、サイトへの信頼は大きく損なわれます。

Let's Encryptの普及で自動更新が一般的になりましたが、それでも期限切れ事故は後を絶ちません。本記事では期限切れが起こる典型パターンから、Miterlによる自動監視の具体設定、運用フローまでをまとめて解説します。

期限切れが起こる原因パターン

自動更新があるのに期限切れが起きる代表ケース

よくある原因は以下のとおりです。

  • サーバー移行時にcronジョブが引き継がれなかった — 移行前の旧サーバーで動いていた自動更新が、新サーバーで設定されないまま期限を迎える
  • DNS設定の変更でドメイン認証が失敗するようになった — certbotがACMEチャレンジに使うTXTレコードを追加できず更新失敗
  • certbotのバージョンが古くなり、更新処理がエラーで停止 — OSアップグレード後に依存パッケージが壊れたまま放置
  • 手動取得した証明書の更新を忘れた — 有料証明書や特殊なワイルドカード証明書で自動更新が組まれていない
  • ディスクフルでログが書けず、certbotがサイレントに失敗 — エラーすら記録されず発見が遅れる

特に制作会社が複数のクライアントサイトを管理している場合、1つのサイトの更新漏れに気づくのは困難です。自動更新は「確実に動く仕組み」ではなく「高確率で動く仕組み」と捉え、監視と併用するのが堅牢な運用です。

SSL証明書の有効期限を手動で確認するコマンド

まずは手動で確認する方法を知っておきましょう。

# SSL証明書の有効期限を確認する
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
  | openssl x509 -noout -dates

# 出力例:
# notBefore=Jan 15 00:00:00 2026 GMT
# notAfter=Apr 15 23:59:59 2026 GMT

ただし、管理サイトが数十件になると、毎回手動で確認するのは現実的ではありません。そこで自動監視の出番です。

Miterlで自動監視を設定する手順

Miterl では、SSL証明書の有効期限監視を**専用の監視タイプ(ssl)**として提供しています。証明書の期限が近づくと、紐付けたアラート連絡先(Slack、Chatwork、LINE等)に通知が届きます。

APIでSSL監視モニターを作成する

SSL監視は HTTP 監視とは独立した ssl タイプのモニターとして作成します。ssl_expiry_alert_days で残り日数アラートのタイミングを指定します。

# SSL証明書監視(type: ssl)の作成例
curl -X POST https://miterl.com/api/v1/monitors \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "クライアントサイト SSL",
    "type": "ssl",
    "url": "https://client-site.com",
    "interval_seconds": 300,
    "ssl_expiry_alert_days": 30
  }'

ssl_expiry_alert_days に残り日数を指定すると、その日数を切ったときにアラートが届きます。30日前に通知を受けて更新スケジュールを押さえ、別途7日前のモニターを併設すれば完了確認のフローも組めます。HTTP の死活監視は別途 type: "http" のモニターとして並行して設定してください。

ダッシュボードからの設定

APIが不要な方はダッシュボードから同等の設定が可能です。監視対象を追加する際に監視タイプとして「SSL証明書」を選び、URLとアラート日数を入力するだけで証明書監視が有効になります。

段階アラートの推奨設定

複数の閾値で通知を受けることで、対応の猶予期間を段階的に確保できます。

閾値 目的
30日前 更新スケジュールの確保・担当者アサイン
14日前 更新作業の実施確認
7日前 最終リマインド・エスカレーション
1日前 緊急対応トリガー

制作会社向けの運用フロー例

SSL証明書の監視を運用に組み込む際の推奨フローです。

  1. 全クライアントサイトをMiterlに登録(SSL監視を有効に)
  2. 期限30日前のアラートで更新スケジュールを確認
  3. 期限7日前のアラートで更新が完了しているかを最終確認
  4. 月次レポートでクライアントに証明書の状態を報告

クライアントへの月次レポートにSSL証明書の有効期限一覧を含めておくと、「保守契約で何をしているか」の可視化にもつながり、契約更新率の向上も見込めます。

複数サイトのSSL証明書を一括で状況確認する

管理サイトが20件・30件と増えると、個別確認では手間がかかります。MiterlのAPIで全モニターの状態を一括取得すれば、証明書が近づいているサイトを素早くピックアップできます。

# 全モニターの稼働状態と名前を一覧取得(SSL監視に限らず全モニター)
curl -s "https://miterl.com/api/v1/monitors?per_page=100" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  | jq -r '.data[] | "\(.name)\t\(.status)\t\(.uptime_30d)%"'

SSL監視モニターのステータスが down になっていれば、証明書が期限切れまたはチェーンに問題が発生しています。ssl_expiry_alert_days の閾値前でも down になった場合は即座に対応が必要です。

自動更新の設定確認も忘れない

証明書の監視と合わせて、Let's Encryptの自動更新が正しく動作しているかも確認しましょう。監視はあくまで「最後の砦」であり、更新自体の仕組みを健全に保つのが第一です。

# certbotの自動更新をテスト
sudo certbot renew --dry-run

# systemdタイマーの状態確認
systemctl status certbot.timer

# 過去の更新ログ確認
sudo journalctl -u certbot.timer --since "30 days ago"

--dry-run で正常終了するか、certbot.timeractive (waiting) になっているかを月1回は確認するのが推奨です。自動更新が正常でも、監視は保険として必ず入れておくべきです。「自動更新が動いているはず」という前提が崩れた時に、監視がセーフティネットになります。

certbot自動更新が動いているかをHeartbeat監視で検証する

「更新スクリプトは動いているか?」という疑問をHeartbeat監視で解消できます。certbotのrenewコマンドが正常終了したときだけMiterlにPINGを送るよう設定することで、renewが失敗してもHeartbeatが来なくなりアラートが届きます。

# /etc/cron.d/certbot または certbot.timer hook として設定する例
# 更新後フックとして --post-hook を使用
0 0,12 * * * root certbot renew --quiet \
  --post-hook "curl -s https://miterl.com/api/v1/monitors/YOUR_HEARTBEAT_MONITOR_ID/heartbeat \
    -H 'Authorization: Bearer YOUR_API_KEY' > /dev/null"

この設定により、Let's Encryptの更新処理が実行された(成功した)かどうかをMiterlで可視化できます。ハートビート監視の詳細については「ハートビート監視とは?cronジョブの死活確認を自動化する方法」をご覧ください。

まとめ

SSL証明書の期限切れは、自動更新に任せきりでは防げません。複数の失敗ケースを踏まえ、更新の仕組み監視の仕組みの二段構えで守るのが堅牢な運用です。

  • 期限切れ原因は「cron非引継ぎ」「DNS失敗」「certbot不整合」「手動証明書の更新忘れ」など複数
  • Miterlで全サイトに SSL監視を設定し、30日前・7日前の段階アラートを運用に組み込む
  • certbot renew --dry-run を月1回実施して自動更新の健全性を確認
  • HeartbeatでcertbotのPOST-HOOKを監視し、更新実行の有無まで自動確認する
  • 月次レポートでクライアントに証明書状態を可視化すると保守価値の訴求にもつながる

Webサイトを本番公開する前のSSL確認フローは「Webサイト公開前の監視設定チェックリスト」にもまとめています。SSL証明書の管理方法について詳しくは ドキュメント をご覧ください。Miterlの機能を試してみたい方は 無料で登録 すれば実際の動作を確認できます。導入前の疑問は FAQ にまとめています。