Edited at

Google Cloud Platformでの独自ドメイン関連まとめ

ただのメモ書き。

略語
サービス
備考

GCP
Google Cloud Platform

GAE
Google App Engine
PaaS

GCE
Google Compute Engine
IaaS

GCS
Google Cloud Storage


独自ドメイン

Google Domainsはまだ日本の住所だと契約できなかったので、適当に他のレジストラで契約する。

DNS設定を触れるようになったら、Search Consoleで所有権の確認をしておくと良い

サブドメインを利用すれば、GCE/GAE/GCSで同じ親ドメインで運用可能。

GCE内ではバーチャルドメインでサブドメイン増やし放題。

GCSはルートドメインでの運用はできない(はず)。というか静的ファイルしか置けないので…。

流石に独自ドメイン設定の詳細は既に情報がたくさんあるのでググろう。


  • GCE:インスタンスを立ち上げる際、静的IPを予約しておく。DNSのAレコードにそのIPを追加。サブドメインはバーチャルホストを使い、CNAMEで親ドメインへ向ける。メールの話はこちら→http://qiita.com/yukari-n/items/45624096582111dd25b9

  • GAE:サブドメインで利用したい場合は、 認証から DNS設定までサブドメインで。AレコードとAAAAレコードを指示通りに追加。

  • GCS:サブドメインのバケットを作成し、DNS設定でc.storage.googleapis.comへ向ける。あとは中身を一般公開するだけ。


Let's Encrypt (SSL)


  • GCS:CNAMEでの転送がHTTPSに対応していないのでまだ無理。


Google Compute Engine


SSLの有効化

Debian/Apache2.4.10の時の情報ですが、だいたい変わっていないかと。


  1. mod_sslをインストール


  2. sudo a2enmod sslでSSLを有効化(この時点でhttps://でアクセスしたときのブラウザのエラーが変わる)

  3. Apache2.confで LoadModule ssl_module modules/mod_ssl.so しておく


  4. sudo a2ensite default-sslで読み込ませる設定を指定(confの名前は任意)

  5. (申請後)/etc/apache2/sites-available/default-ssl.confに、各種.pemを読み込ませる記述を追加

  6. Apacheを再起動

  7. CSSなどが読み込まれなくなっった場合は、http://で読み込んでいるものが無いかチェック&キャッシュを削除。http://でもSSLのファイルにリダイレクトしてくれるCDNもあるけど、ブラウザが読み込みブロックしている場合がある


default-ssl.conf

SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem

SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem


申請

サブドメインのは親ドメインのを発行しておくと楽、というかサブドメインのみ取得だと、親ドメインがブラウザ側にINVALIDな証明書だと思われてしまう事がある1

git clone https://github.com/certbot/certbot.git

cd certbot
./certbot-auto certonly -a standalone

の後でドメインを複数入力できるので、親ドメインを含めてまとめて申請する。


You have an existing certificate that contains a portion of the domains you

requested (ref: /etc/letsencrypt/renewal/example.com.conf)

It contains these names: example.com

You requested these names for the new certificate: example.com,

sub1.example.com, sub2.example.com.

Do you want to expand and replace this existing certificate with the new

certificate?


というメッセージが出るので(E)xpandを選ぶ。

バーチャルホストのポート番号の変更と設定のリロードを忘れない。


更新

cloneしたcertbotフォルダで

sudo ./certbot-auto renew

Apacheやnginxなどサーバーが動いていると更新できないので止めてから実行する。


Google App Engine

Googleが無料で自動更新してくれるようになりました。

http://www.publickey1.jp/blog/17/google_app_engine_managed_ssl.html

―――――ここから古い内容―――――

以下の記事の方法でできた。

GAEでSSLの設定(Let’s Encrypt の導入備忘録)

但し、cloneするのは新しいcertbotの方が良いと思います。

git clone https://github.com/certbot/certbot

sudo ./certbot-auto -a manual certonly

認証ファイルを置く作業が面倒だが、とりあえず認証できればよろしい。(ちなみに、上記ページのハンドラではリダイレクトがうまくいかなかった)


app.yaml

handlers:

- url: /.well-known/acme-challenge/?.*
script: challenge.txt

この場合はルートのchallenge.txtに認証情報を置く。

このハンドラでもうまく行かない(パイソンでは500エラーが出る)場合は


app.yaml

- url: /.well-known/acme-challenge/?.*

static_files: challenge.txt
upload: challenge.txt

「とりあえずGCEで取得する」というやり方も見かけてやってみたが、IPで弾かれてしまうので、ブラウザ上のGAEコンソールでちゃちゃっとやってしまうと良い。

GCEでまとめて取得できたら更新が楽なんだけど、GAEの場合は毎回新規取得する事になるようだ。

―――――ここまで―――――


参考





  1. 何故か一部のサブドメインを有効化すると、そのドメインの中身が親ドメインのサイトに表示されてしまう謎現象が起こっていた。証明書はその一環で読み込まれたもののキャッシュだけが残っていたらしい。結局、設定ファイルの名前が悪かった。https://utano.jp/entry/2016/10/amazon-linux-apache-24-virtualhost/