GCPのクロスプロジェクト間でCertificate ManagerでDNS-01検証用レコードを発行するには

2 min

language: ja bn en es hi pt ru zh-cn zh-tw

こんにちは、無能です。

あまり起こらないと言えば起きないのですが、AのプロジェクトとBのプロジェクトでワイルドカード証明書を発行する場合通常の FIXED_RECORD の場合というか一般的な場合は

_acme-challenge.example.com. 先の CNAME レコード先として登録する必要がありますがこの場合だとクロスプロジェクト間で同じレコード先を向いて競合してしまいます。

そこで、 gcloud コマンドでしか現状使えなさそうでWeb Console上だと見当たらなかったのでおそらく gcloud コマンドだけでしかというかAPI経由からの作成しか恐らくできないものだと思われますが

PER_PROJECT_RECORD のオプションを使うことでこの競合を回避できます。なかなかよく出来た仕組みだなあとおもうとこもありつつもはやGoogleの独自実装と言うか、これに依存した運用自体はあまり行うべきではないとおもいますが必要になるシーンは恐らくあります。

AWSのACMでも似たような仕組みがあるっぽいので、まあGCP - AWS間の移行とかならば問題にはならない気がします。

gcloud certificate-manager dns-authorizations create my-dns-01-auth \
  --domain="*.example.com" \
  --type=PER_PROJECT_RECORD \
  --location=global \
  --project=PROJECT_ID

そうするとこのようなレコードを登録する必要となります。

_acme-challenge_abc123.example.com. CNAME ...
_acme-challenge_xyz123.example.com. CNAME ...

ただ、この abc123 だか xyz123 はプロジェクトIDだったような記憶もありありますが・・・

Related Posts