Zenn
🤖

Cloudflare Partial (CNAME) Setupでプロキシ前にUniversal証明書を有効化する方法

2025/03/21に公開

はじめに

Cloudflareにおいて、Partial (CNAME) Setupを設定している状態で、プロキシ前にUniversal証明書を有効化しようとして少し詰まったので記事にします。

有効化手順の選択肢

公式ドキュメントではこんな説明があります。

権限のないドメインまたは部分的なドメインの場合、Universal SSL は次のようになります。

  • DNS レコードがCloudflare を通じてプロキシされるとプロビジョニングされます。

  • 検証済み:

    • 権限のある DNS にドメイン制御検証 (DCV)レコードを追加するとすぐに実行されます。
    • DCV レコードを追加しない場合は、短時間のダウンタイムが発生します(トラフィックがプロキシされた後)。

https://developers.cloudflare.com/ssl/edge-certificates/universal-ssl/enable-universal-ssl/

プロキシを有効にするには、DNSレコードの向き先をCloudflareに設定する必要があります。ただし、本番環境で使用しているレコードの向き先を変更する場合、ダウンタイムを最小限に抑えるためにも、切り替え前にCloudflare側で証明書を有効化しておくことが望ましいです。

ですので、今回はプロキシ前に有効化するこちらの方法を実践してみます。

  • 権限のある DNS にドメイン制御検証 (DCV)レコードを追加するとすぐに実行されます。

手順

DCVレコード追加の方法として、公式ドキュメントには、委任、TXT、HTTPの3つの方法があると説明されています。
https://developers.cloudflare.com/ssl/edge-certificates/changing-dcv-method/methods/

この中で、

  • Universal証明書を使用
  • ダウンタイムを許容できない

という要件を満たすものはTXTによる方法しかないため、こちらの方法で有効化します。

1. 検証方法をTXTに変更

デフォルトの検証方法がHTTPになっているので、これをTXTに変更します。
この変更はAPI経由でしかできないため、必要な情報を入手した後で変更APIを実行するかたちになります。

ZONE_IDの確認

API実行に必要なZONE IDを入手します。
こちらはドメインの概要ページに記載があります。

CERTIFICATE_PACK_IDの確認

次に有効化する証明書のCERTIFICATE_PACK_IDというものを入手します。
前項のZONE IDを使用してこちらを実行してください。いろいろ出力されますがidがCERTIFICATE_PACK_IDになります。

curl https://api.cloudflare.com/client/v4/zones/$ZONE_ID/ssl/certificate_packs?status=all \
    -H 'Content-Type: application/json' \
    -H "X-Auth-Email: $CLOUDFLARE_EMAIL" \
    -H "X-Auth-Key: $CLOUDFLARE_API_KEY" 

validation_methodをTXTに変更

最後こちらのAPIを実行します。

curl https://api.cloudflare.com/client/v4/zones/$ZONE_ID/ssl/verification/$CERTIFICATE_PACK_ID \
    -X PATCH \
    -H 'Content-Type: application/json' \
    -H "X-Auth-Email: $CLOUDFLARE_EMAIL" \
    -H "X-Auth-Key: $CLOUDFLARE_API_KEY" \
    -d '{
      "validation_method": "txt"
    }'

うまく有効化できていると、管理コンソールの証明書のところがこんなかんじにTXT認証の設定になっているはずです。

2. TXTレコードを登録

前項のvalidation_method変更のAPIの出力、または管理コンソールの証明書の部分から必要なTXTレコード情報が取得できます。

証明書のドメインを管理しているDNSにTXTを追加すると証明書が有効化されます。

We're Hiring!

DELTAではチームの一員になっていただける仲間を募集中です!
下記フォームよりお気軽にご連絡ください!

https://docs.google.com/forms/d/e/1FAIpQLSfQuWNU1il5lq2rVdICM0tSK_jTsjqwc52LYEwUxBq7_ImtrQ/viewform

DELTAテックブログ

Discussion

ログインするとコメントできます