Edited at

GCPのマネージドTLSを触ってみた


GCPマネージドTLSについて

GCPでGoogleが管理する証明書のサービス提供が開始されました。

これを利用することで、GCP上で構築したWebサービスに無償SSL証明書を簡単に適用することができるようになりました。

自己管理証明書との大きな差は以下の通りです。

自己管理証明書
GCP マネージドTLS

価格
有償
無償

種別
選択可能
DVのみ

ワイルドカード

不可

有効期間
選択可能
3ヶ月

[マネージドTLSについての公式ページ]

https://cloud.google.com/load-balancing/docs/ssl-certificates


既存のWebサイトをHTTPS化してみる

HTTPのみを提供していたロードバランサーに、HTTPSのフロントエンドを追加します。

フロントエンドに割り当ててあるIPアドレスは、「ip-static-address」という名前で事前に静的アドレスを予約取得しました。

スクリーンショット 2018-12-20 19.16.18.png


証明書の作成

以下のコマンドを実行して、証明書リソースを作成します。

始める前にgcloudを最新まであげておきましょう。(gcloud components updateで最新化できます)

$ gcloud beta compute ssl-certificates create [証明書リソース名] --domains [取得したいFQDN]


コマンド実行例

$ gcloud beta compute ssl-certificates create sample-cert --domains sample.example.com

Created [https://www.googleapis.com/compute/beta/projects/<あなたのGCPプロジェクト名>/global/sslCertificates/sample-cert].
NAME TYPE CREATION_TIMESTAMP EXPIRE_TIME MANAGED_STATUS
sample-cert MANAGED 2018-11-16T01:16:43.038-08:00 PROVISIONING
sample.example.com: PROVISIONING


HTTPSプロキシの作成

HTTPS用のプロキシターゲットを作成します。

$ gcloud beta compute target-https-proxies create [HTTPSプロキシ名] \

--url-map=[URL_MAP名] \
--ssl-certificates=[作成した証明書リソース名]


コマンド実行例

$ gcloud beta compute target-https-proxies create ssl-proxy \

> --url-map=lb-ssl-service \
> --ssl-certificates=ssl-cert

Created [https://www.googleapis.com/compute/beta/projects/<あなたのGCPプロジェクト名>/global/targetHttpsProxies/ssl-proxy].
NAME SSL_CERTIFICATES URL_MAP
ssl-proxy ssl-cert lb-ssl-service


フロントエンドの追加

ロードバランサの設定にHTTPS用のターゲットプロキシを組み込み、HTTPS対応させます。

gcloud beta compute forwarding-rules create [フォワーディングルール名] \

--global \
--target-https-proxy=[作成したHTTPSプロキシ名] \
--address=[取得済みの静的アドレス名] \
--ports=443


コマンド実行例

gcloud beta compute forwarding-rules create frontend-ssl-rules \

> --global \
> --target-https-proxy=ssl-proxy \
> --ip-protocol=TCP \
> --address=ip-static-address \
> --ports=443

Created [https://www.googleapis.com/compute/beta/projects/<あなたのGCPプロジェクト名>/global/forwardingRules/frontend-ssl-rules].


確認してみる

最初に確認したロードバランサの詳細をみてみると、フロントエンドにHTTPSが追加されました。

上記手順で新規にHTTPSのフロントエンドを追加した直後は、証明書部分をマウスオーバーすると PROVISIONING になっており、アクセスを受け付けません。

10分ほど待つと、以下の画面のようにステータスが ACTIVE になり、実際に利用可能になります。

スクリーンショット 2018-12-20 20.07.05.png

また、以下のコマンドでも確認することが可能です。

$ gcloud beta compute ssl-certificates list

NAME TYPE CREATION_TIMESTAMP EXPIRE_TIME MANAGED_STATUS
ssl-cert MANAGED 2018-12-20T02:25:17.851-08:00 2019-03-20T03:00:05.000-07:00 ACTIVE
sample.example.com: ACTIVE

以下は証明書のプロパティの部分キャプチャとなります。

中身はLet’s Encryptで期間は3ヶ月でした。

スクリーンショット 2018-12-21 12.44.10.png


おわりに

これでHTTPSサイトの構築ができることが確認できました。

この機能を使うことで、開発環境等でエラーを発生させないようにしたり、コストダウンへの貢献などができるかと思います。

みなさまもこれを機会に導入してみてはいかがでしょうか。