Cloudflare Partial (CNAME) Setupでプロキシ前にUniversal証明書を有効化する方法
はじめに
Cloudflareにおいて、Partial (CNAME) Setupを設定している状態で、プロキシ前にUniversal証明書を有効化しようとして少し詰まったので記事にします。
有効化手順の選択肢
公式ドキュメントではこんな説明があります。
権限のないドメインまたは部分的なドメインの場合、Universal SSL は次のようになります。
DNS レコードがCloudflare を通じてプロキシされるとプロビジョニングされます。
検証済み:
- 権限のある DNS にドメイン制御検証 (DCV)レコードを追加するとすぐに実行されます。
- DCV レコードを追加しない場合は、短時間のダウンタイムが発生します(トラフィックがプロキシされた後)。
プロキシを有効にするには、DNSレコードの向き先をCloudflareに設定する必要があります。ただし、本番環境で使用しているレコードの向き先を変更する場合、ダウンタイムを最小限に抑えるためにも、切り替え前にCloudflare側で証明書を有効化しておくことが望ましいです。
ですので、今回はプロキシ前に有効化するこちらの方法を実践してみます。
- 権限のある DNS にドメイン制御検証 (DCV)レコードを追加するとすぐに実行されます。
手順
DCVレコード追加の方法として、公式ドキュメントには、委任、TXT、HTTPの3つの方法があると説明されています。
この中で、
- 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ではチームの一員になっていただける仲間を募集中です!
下記フォームよりお気軽にご連絡ください!
Discussion