CloudFlareを使ったサイトのcPanelでDNS DCVエラーに対処

目次

発端はcPanelからのエラーメール

レンタルサーバーはミックスホストを利用しています。このレンタルサーバー上で、複数のサイトを公開しています。その中で、いくつか表示を高速化させる目的で無料で使えるCDNのCloudFlareを使用しています。CloudFlareを使用しているドメインを対象にミックスホストのコントールパネルであるcPanelから、以下のメールが届きました。

cPanelからのエラーメール

DNS DCV: No local authority: "cpanel.example.com"; HTTP DCV: "cpanel.example.com" does not resolve to any IP addresses on the internet.

DNS DCV: ローカルオーソリティがありません: "cpanel.example.com"; HTTP DCV: "cpanel.example.com" は、インターネット上のどの IP アドレスにも解決しません。

内容としては、AutoSSLでサーバー証明書を更新するために必要なドメイン認証ができなかったということでした。

この時点で、何かしらの設定をcPanel側かCloudFlare側のどちらにすればいいのか?初めてのことでチンプンカンプンでした。しかし、このまま放っておくと、サーバー証明書の期限が切れて面倒なことになると嫌だなと対処することにしました。

一時的にCloudFlareを無効化してからAutoSSLを更新

海外のサイトにヒントがありました。

日本語訳にしたこのページによると、この問題を解決するには、以下の4つが候補とありました。

  1. スタンドアロンのSSL証明書を購入する
  2. cPanelのAutoSSLをオフにして、CloudflareのSSLのみを使う
  3. CloudflareのSSLはなしで、cPanelのAutoSSLのみを使う
  4. Cloudflareを一時的に停止してから、AutoSSLの証明書を更新する

私はどちらのSSLも有効なまま使用したいので、迷わず4番を実行することにしました。

手順

1.CloudFlareにログインして、対象のドメインを選択

2.「Overview」メニューを選択し、ページ右下の「Advanced Action」にある「Pause Cloudflare on Site」をクリック

「Overview」メニューを選択し、ページ右下の「Advanced Action」にある「Pause Cloudflare on Site」をクリック

3.「Confirm」をクリック

「Confirm」をクリック

4.MixhostのcPanelの「SSL/TLS Status」を開き、「Run AutoSSL」ボタンをクリック

MixhostのcPanelの「SSL/TLS Status」を開き、「Run AutoSSL」ボタンをクリック

5.処理が終わるまで数分待ちます

「Run AutoSSL」の処理中

6.するとエラーが消え更新完了となります

AutoSSLのドメイン認証が完了

7.最後に、Cloudflareに戻り、「Overview」メニューを選択し、ページ右下の「Advanced Action」にある「Enable Cloudflare on Site」をクリックして有効化

Cloudflareに戻り、「Overview」メニューを選択し、ページ右下の「Advanced Action」にある「Enable Cloudflare on Site」をクリックして有効化

以上。

エラーが残ったままになる場合

cPanelの「SSL/TLS Status」の画面でエラーが一部残ったままになる場合は、CloudflareのDNSにCNAMEまたはAレコードの登録が不足しているのが原因かと思われます。特にサブドメインのURLです。私はこのパターンでした。以下のようにレコードを追加して、再度「Run AutoSSL」を行ってみてください。解消されるはずです。

CNAMEを追加した例

CloudflareのDNS Recordsにサブドメイン名とFQDN(対象ドメイン)を追加

CloudflareのDNS Recordsの画面にCNAMEを追加

Aレコードを追加した例

CloudflareのDNS Recordsにサブドメイン名とレンタルサーバー(Mixhost)のIPアドレスを追加

CloudflareのDNS Recordsの画面にAレコードを追加

この事に繋がるヒントが以下のページにありました。

まとめ

今回のエラーはDNSに対してCNAMEによるドメイン認証、またはhttp通信でコモンネーム(FQDN)をCSRを元に作成したハッシュ値をファイル名にしたテキストファイル(http(s)://ドメイン/.well-known/pki-validation/ハッシュ値.txt)をサイト上で確認したかったが、それをクラウドフレアが邪魔しているといった話のようです。AutoSSLは3ヶ月に一度、サーバー証明書が自動更新される仕組みなので、3か月後もこの作業をしなければならないかもしれません。

今度試してみたいこと(その1)

後からの気づきですが、3ヶ月に1回この作業をするのも面倒なので、Cloudflareに設定を追加して今回のドメイン認証エラーを回避することができるのではないかと思いました。

例えば、

  • /.well-known/pki-validationの階層では「キャッシュを無視(スキップ)」、「SSLオフ」、「アプリの無効化」など、考えられるいずれかのルールを追加する
  • 【効果なし】DNS Recordsにあるドメインを除き、サブドメインのAレコードをすべてCNAMEに変更する
  • 【効果なし】DNS Recordsにあるドメインを除き、サブドメインのAレコードをすべて削除する

このどれかで回避できちゃったりするのかもしれませんので、またエラーが出たときに試してみたいと思います。

以下のCloudflareによるDCVのページ(下の階層も含む)にもヒントがありそうです。

今度試してみたいこと(その2)

以下のページではHTTPSへのリダイレクトが原因とありました。これも試してみたいと思います。

  • 【効果なし】Cloudflare側のHTTPSの強制をやめる
  • 【効果なし】Cloudflare側の/.well-known/pki-validationの階層では「SSLオフ」のルールを追加する
  • .htaccess/.well-known/pki-validation階層ではhttpsに転送を除外する

今度試してみたいこと(その3)

Cloudflareの[SSL/TLS]-[オリジンサーバー]-[認証済みOrigin Pull]「オン」にしてみる。

AutoSSLの更新がうまくいってるドメインのサイトは、ここがONになっていました。次回エラーが出た際はこれを試してみたいと思います。

Cloudflareの[SSL/TLS]-[オリジンサーバー]-[認証済みOrigin Pull]を「オン」にする

前へ

【Vue】ページ初回表示時にフォームのバリデーションエラーを発火させない

次へ

製造業向けのWordpressテンプレートメモ