結論(TL;DR)
Cloudflare Access(Zero Trust)でWebサイト全体にアクセス制限をかけると、レンタルサーバー側(スターサーバーやエックスサーバー等)の無料独自SSL(Let’s Encrypt等)の自動更新が失敗するようになります。
これを解決するには、SSL検証用の通信パス(/.well-known/acme-challenge/*)だけを認証対象から除外(Bypass)する設定をCloudflare上に追加します。
この設定を一度行えば、Cloudflareのセキュリティ機能を有効にしたまま、手動作業なしでSSL証明書が自動更新され続ける環境が完成します。
なぜSSLの自動更新が失敗するのか?
1. レンタルサーバー側のSSL発行の仕組み
スターサーバーやエックスサーバーなどの無料独自SSLは、「Let’s Encrypt」などの認証局を利用しています。認証局は、対象のWebサイトが本当に本人のものか確認するために、サイトの特定パス(http://your-domain.com/.well-known/acme-challenge/ファイル名)に一時的な検証ファイルを設置し、外部からHTTPアクセスを行って存在確認(HTTP-01チャレンジ)を行います。
2. Cloudflare Accessが検証アクセスを拒否してしまう
サイト全体にCloudflare Accessを設定すると、この認証局からの検証アクセスも「未ログインユーザー」とみなされ、Googleログイン画面などへリダイレクトされてしまいます。その結果、検証ファイルにたどり着けず、SSLの発行・更新が失敗します。
3. 別の対処法(手動での一時回避)とその問題点
別の対処法として「SSL更新の通知が来たら、一時的にCloudflareのプロキシ(オレンジの雲)をOFF(グレーの雲)にして直接レンタルサーバーに通信を流す」という方法もあります。しかし、90日ごとの更新を毎回手動で行うのは手間がかかり、更新を忘れるとサイトがSSL切れ(セキュリティエラー)になってしまうリスクがあります。
設定手順(Cloudflare最新UI対応)
Step 1: 新規アプリケーションの作成
- Cloudflare Zero Trust ダッシュボード にログインします。
- 左メニューから 「Access コントロール」 > 「アプリケーション」 を選択します。
- 画面右上にある 「+ 新規アプリケーションを作成」 ボタンをクリックします。
- モーダル画面が表示されたら、「セルフホストとプライベート」 タブが選択されていることを確認し、右下の 「セルフホストとプライベートで続行」 ボタンをクリックします。
Step 2: 宛先(パブリックホスト名)の設定
表示された設定画面の「宛先」セクションで、認証から除外したいSSL検証用のパスを指定します。
- パブリックホスト名:
- サブドメイン: 対象のサブドメイン(例:
sub/ ルートドメインの場合は空欄) - ドメイン: 対象のドメイン(例:
example.com) - パス:
.well-known/acme-challenge- ※末尾に
/や*を入力する必要はありません。このパス配下(/.well-known/acme-challenge/*)全体に自動適用されます。
- ※末尾に
- サブドメイン: 対象のサブドメイン(例:
Step 3: Accessポリシーの設定(認証の除外)
画面を下にスクロールし、「Accessポリシー」セクションでアクセス制限をバイパスするルールを作成します。
- 「新しいポリシーを作成」 ボタンをクリックします。
- 以下の項目を設定します:
- ポリシー名:
Bypass Everyone(任意の分かりやすい名前) - アクション:
Bypass(※AllowではなくBypassを選択)
- ポリシー名:
- Configure rules(ルールの設定):
- Selector:
全員(Everyone)
- Selector:
Step 4: 詳細とセッション期間の設定
- 名前:
ACME Challenge Bypass - セッション期間:
有効期限なし、すぐに期限切れになります(No duration / Immediate)
すべての設定を入力したら、保存をクリックして設定を完了します。
動作確認(curlコマンドでのテスト)
設定反映後、ターミナルから未認証(未ログイン)状態でリクエストを送信し、Bypassが正常に機能しているか検証します。
Bash
curl -I https://sub.example.com/.well-known/acme-challenge/test-token
※ sub.example.com の部分はご自身の環境のドメインに置き換えて実行してください。
レスポンス判定のポイント
- 成功(認証がバイパスできている状態):
- 存在しないファイルに対して
HTTP/2 404(またはファイルが存在する場合はHTTP/2 200)など、レンタルサーバーからの生の応答が返却される。
HTTP/2 404 date: Tue, 28 Jul 2026 00:56:05 GMT content-type: text/html server: cloudflare - 存在しないファイルに対して
- 失敗(Cloudflare Accessで止まっている状態):
HTTP/2 302や403が返り、ログイン画面(*.cloudflareaccess.com)へリダイレクトされている。
まとめ
本設定により、以下の運用メリットが得られます。
- セキュリティとキャッシュの維持: Cloudflareのプロキシ(オレンジの雲)を常にONにしたまま運用可能。
- 完全自動化: レンタルサーバー側の90日ごとのLet’s Encrypt自動更新がノーメンテナンスで完結。


コメント