本日も乙

ただの自己満足な備忘録。

GCPのHTTPロードバランサ用のマネージドSSL証明書がリリースされたので試してみた

Google Cloud Load Balancer(GCLB) でマネージドのSSL証明書がパブリックベータでリリースされました。

Creating and Using SSL Certificates  |  Load Balancing  |  Google Cloud

AWS Certificate Manager のように無料かつ期限間近になると自動更新してくれるサービスがほしいと思っていました!
すでにSSL証明書を購入しているのでマネージドSSL証明書に切り替えてみました。すでにGCLBや既存のSSL証明書などの設定はしているものとします。
このあたりの設定が済んでない人はこちらの記事を参考に作成してみてください。

blog.jicoman.info

目次

Cloud SDKのアップデート

gcloudコマンドで操作するために最新版にアップデートします。

$ gcloud components update

$ gcloud --version
Google Cloud SDK 220.0.0
alpha 2018.09.04
app-engine-python 1.9.77
app-engine-python-extras 1.9.74
beta 2018.07.16
bq 2.0.34
cloud-datastore-emulator 2.0.2
core 2018.10.08
gsutil 4.34

マネージドSSL証明書を作成

残念ながらワイルドカード証明書(*.example.com)はまだ未サポートのようです。

# リソースの作成
$ gcloud beta compute ssl-certificates create foo-example-com \
        --domains foo.example.com

# ターゲットプロキシとの関連付け
$ gcloud beta compute target-https-proxies update basic-target-https-proxy \
  --ssl-certificates foo-example-com

作成後、プロビジョニング状態になります。この状態から次の状態(アクティブ)になるには、次の条件を満たす必要があります。

  • ドメインのDNSをAレコードで正引きした結果、ロードバランサのターゲットプロキシのグローバルIPアドレスが返される
  • ターゲットプロキシとマネージドSSL証明書の関連付けられている
  • フォワーディングルールの作成を含め、ロードバランサの設定が完了している

ドキュメントではアクティブになるまで30〜60分かかる可能性があるとありますが、私が手元で試したら10分程度でアクティブになりました。

$ gcloud beta compute ssl-certificates list
NAME                                            TYPE     CREATION_TIMESTAMP             EXPIRE_TIME  MANAGED_STATUS
foo-example-com  MANAGED  2018-10-11T03:59:15.804-07:00               ACTIVE
    foo.example.com: ACTIVE

アクティブになればSSL証明書は有効になっています。証明書の発行を見ると Let's Encryptなんですね。

managed-certs.png

既存のSSL証明書から移行するときは注意

既存のSSL証明書から変更してわかったのですが、ターゲットプロキシを変更してアクティブになるまでの間、SSL証明書が無効になってしまいます。
解決策としては、マネージドSSL証明書用のターゲットプロキシを新規作成しマネージドSSL証明書を紐づけてから、そのターゲットプロキシをGCLBに紐付ければいけると思います。そのあたりの検証ができたらまた記事を書きます。

最後に

リリースされたばかりのマネージドSSL証明書を発行してGCLBに紐づけてみました。
AWS ACMと違って、ドメインの検証までGoogle側がやってくれるのは、上手いこと良い具合にやってくれるGoogleらしいです。
ただ、アクティブになるまでの条件が厳しいので、よくあるDNS認証をサポートしてくれると嬉しいですね。