
![SSL 自動更新が失敗する 6 つの原因](/blog/ssl-auto-renewal-failure/failure-causes.svg)

## この記事でわかること

- SSL 自動更新が止まる 6 つの代表的な原因
- 自動更新が動いているかを確認する方法
- 失敗時の緊急復旧手順
- 再発を防ぐ監視と運用ルール

## 「動いているはず」が止まっている事故

SSL の自動更新は設定後ほぼ放置で済むため、止まっていることに気づきにくいトラブルです。期限切れの 3 日前に「証明書が更新されていません」のアラートが飛んできて初めて発覚するケースも珍しくありません。

Let's Encrypt の有効期間は最大 90 日と短く、自動更新前提で運用されます。商用 SSL でも自動更新ツール（cert-manager / Caddy / Certbot 等）を利用している場合は同じ問題が起き得ます。

期限が切れると Chrome の[「保護されていない通信」警告](/blog/chrome-not-secure-warning-fix)が出て、検索流入と問い合わせが止まります。失敗の早期発見が重要です。

## 自動更新が失敗する 6 つの原因

### 原因 1: 検証用ファイルの配置場所が変わった

Let's Encrypt の HTTP-01 認証は、サーバーの特定パス（`/.well-known/acme-challenge/`）にファイルを置いて所有確認します。サーバー移転や Web サーバー設定変更でこのパスにアクセスできなくなると、認証が失敗します。

### 原因 2: DNS-01 認証用 API トークンの失効

ワイルドカード SSL や CDN 越しの構成で使う DNS-01 認証は、DNS プロバイダ（Cloudflare / Route 53 等）の API トークンを使って TXT レコードを書き換えます。トークンの有効期限切れ、権限変更、ローテーション漏れで認証が失敗します。

### 原因 3: レンタルサーバー側の自動更新が無効化された

レンタルサーバーの管理画面でドメインを再追加・変更したタイミングで、自動 SSL のチェックが外れてしまう事故。`xserver` `さくら` `ConoHa` 等で報告がある定番パターンです。

### 原因 4: ドメインの DNS 解決が変わった

A レコードや CNAME の変更で、認証局が確認しに来るサーバーと実際のサーバーがずれている状態。ドメイン移管や CDN 切替の直後に起きやすいです。

### 原因 5: ファイアウォール / Bot 対策が認証局をブロック

Cloudflare WAF や自社ファイアウォールのルール変更で、Let's Encrypt の認証 IP からのアクセスがブロックされるケース。アクセス制限を厳格化したタイミングで再現します。

### 原因 6: 証明書発行のレート制限到達

Let's Encrypt は同一ドメインで週 5 回までの発行上限があります。テストや誤ったリトライで上限を超えると、しばらく発行できなくなります。

## 自動更新が動いているかの確認

![自動更新の健康チェック](/blog/ssl-auto-renewal-failure/health-check.svg)

### 確認 1: 証明書の現在の有効期限

Web サイトをブラウザで開き、鍵マーク → 「証明書」で発行日と有効期限を確認します。発行から 30 日以上経過しているのに更新されていなければ要警戒です。

### 確認 2: 直近の更新ログ

サーバー側で `/var/log/letsencrypt/letsencrypt.log` などのログファイル、または管理画面の更新履歴を確認します。直近 90 日内に「Renewal succeeded」が記録されているかが目安です。

### 確認 3: 30 日後に自動更新が走るかのテスト

Certbot なら `certbot renew --dry-run` で本番更新せずに動作確認できます。レンタルサーバーの管理画面に「更新テスト」ボタンがある場合もあります。

期限管理の基本は[SSL 証明書 有効期限の確認方法](/blog/ssl-expiration-check)を参照。

## 緊急復旧の手順

期限切れまで時間がない場合の対応です。

1. **手動で証明書を即時発行**: Certbot なら `certbot renew --force-renewal`、商用 SSL なら認証局の管理画面から手動更新
2. **発行後、サーバーに反映**: 設定ファイルのパス確認と Web サーバーのリロード
3. **ブラウザで反映確認**: キャッシュを無視して鍵マークと期限を確認
4. **失敗原因を特定し、自動更新を復旧**: 上記 6 つの原因のどれかを切り分け

期限が切れて警告が出始めている場合は、[SSL 期限切れ警告の直し方](/blog/ssl-expired-warning-fix)の手順を並行で進めます。

## 再発を防ぐ運用ルール

「自動更新を入れた」だけでは止まったことに気づけません。次の 3 点を仕組み化します。

- **期限の 30 日前アラート**: 監視サービス（UptimeRobot / Datadog 等）または社内通知 Slack
- **月次の更新ログ確認**: 担当者が月初に「先月、自動更新が走ったか」をチェック
- **サーバー移転・CDN 切替・WAF 変更の直後は必ず動作確認**: 環境変更が自動更新を壊す典型パターン

複数ドメインを運用しているなら、棚卸しの仕組みも合わせて検討します（[複数ドメイン SSL の一括管理](/blog/multi-domain-ssl-management)）。

## まとめ

- 自動更新が失敗する原因は検証経路 / API トークン / 管理画面の設定 / DNS 変更 / ファイアウォール / レート制限 の 6 つ
- 確認は「現在の期限」「更新ログ」「テスト実行」の 3 観点
- 緊急時は手動の `--force-renewal` で即時発行、その後に原因特定
- 再発防止は期限アラート + 月次ログ確認 + 環境変更直後の動作確認

## まずは現状を把握しましょう

自社の SSL 証明書の有効期限と設定状況は、ドメイン番人の[SSL 単発チェック](/ssl/check)で確認できます。メール認証も含めた総合点検は[無料診断](/diagnose)をご利用ください。
