HTTP LBにLet's EncryptでSSL設定したよ

  • 12
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

とりあえずHTTP LBとSSLを試したいという欲求のもと、試しました。
別にLBである必要はないけどやりたいからやりました。

すでに立ててたowncloudをバックエンドにします。
その時の記事はコチラ

今回の要素としてはこんな感じです。

  • Google Cloud Platform
    • Compute Engine
    • Cloud Storage
    • HTTP Load Balancer
  • Docker
    • Docker Compose
  • Let's Encrypt

インスタンスグループ作成

バックエンドにするためにグループ作ります。

gcloud compute instance-groups unmanaged create "owncloud-group" --zone "asia-east1-a"

gcloud compute instance-groups unmanaged add-instances "owncloud-group" \
    --zone "asia-east1-a" \
    --instances "owncloud-1-vm"

ロードバランサーの設定

とりあえずHTTPのみ有効にしときましょう。
コマンドのっけようと思ったんだけど、LBの画面はコマンドラインの生成をしてくれないので画面のSSいれます。

もうできちゃってますけど、ロードバランサーの作成

ネットワーキング_-_ragnarok.png

HTTP(S) 負荷分散の設定を開始

ネットワーキング_-_ragnarok.png

上から順に設定していきます。

ネットワーキング_-_ragnarok.png

バックエンドサービス作ります。
さっき作ったインスタンスグループを入れて下さい。
あとは基本デフォルトで問題ないはず。
ヘルスチェックも80番ポートのチェックしときましょう。

ネットワーキング_-_ragnarok.png

パスのルールとかはとりあず全部通しとけばいいです。
カスタマイズしたい人はどうぞ。
フロントエンドの設定でとりあえずHTTPだけなので、そのまんまで良いですけど、ドメインのAレコード設定しなきゃいけないのでIPはエフェメラルじゃなくて静的IPを振ってあげましょう。

ネットワーキング_-_ragnarok.png

これで一旦終わり。

Let's Encrypt

証明書作りましょう。
今回は他に実行する場所もないのでowncloud動かしてるサーバ上で実行します。
更新の自動化もしちゃいます。

Certbotインストール

https://github.com/certbot/certbot

証明書の作成

基本は総合ポータル呼んでやれば問題なしです。
ただ、最初書いてるとおりstandaloneでやったんですがサーバ止めろと言われでもサーバ動かしてないといけなくてツラくてどうしようもなくてwebrootにしました。
証明書作成できればいいんです。

webrootについてはこちらを見てください。

certbot-auto certonly --webroot -w WEBROOT_DIR -m MAIL_ADDRESS -d DOMAIN --agree-tos

MAIL_ADDRESSにはドメインの管理用のメールアドレス、DOMAINは証明書を作成するドメインを指定してください。
これで証明書ができます。
別にこのowncloudサーバに直接インストールするわけではないので、WEBROOT_DIRは書き込み可能な場所ならどこでもいいと思います。

/etc/letsencrypt/に証明書吐き出されてるので後で使います。

LBの設定

LBの設定をしましょう。

まずは証明書リソースの作成

sudo gcloud compute ssl-certificates create owncloud-cert \
    --certificate /etc/letsencrypt/live/DOMAIN/cert.pem \
    --private-key /etc/letsencrypt/live/DOMAIN/privkey.pem \
    --description "owncloud certification."

んで、LBのターゲットプロキシに証明書を設定

gcloud compute target-https-proxies create owncloud-https-lb-target-proxy \
    --ssl-certificate owncloud-cert \
    --url-map owncloud-http-lb

ああ、あとフロントエンドの設定もHTTPのみ設定してたんでHTTPSを追加しときましょう。
HTTPSオンリーにしてHTTPがいらなければHTTPの方は消して下さい。

証明書の更新を自動化

Let's Encryptの証明書は3ヶ月で切れるので、更新を自動化しとくといいです。

たぶんこんな感じで行けると思います。

certbot-auto renew
gcloud compute ssl-certificates update owncloud-cert \
    --certificate /etc/letsencrypt/live/DOMAIN/cert.pem \
    --private-key /etc/letsencrypt/live/DOMAIN/privkey.pem \
    --description "owncloud certification."

更新されてなかったらgcloudも実行しないようにしといた方がいい気もする。

まとめ

HTTP LB、ほとんど使わなくても素で18ドルくらいかかります。
なので今回構築だけしてSSLのインストールして満足したので消しましたw