LoginSignup
16
21

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-05-07

ただのメモ書き。

略語 サービス 備考
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へ向ける。あとは中身を一般公開するだけ。

SSL化

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

申請

今回はLet's Encryptを使います。
サブドメインのは親ドメインのを発行しておくと楽、というかサブドメインのみ取得だと、親ドメインがブラウザ側に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の場合は毎回新規取得する事になるようだ。

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

Google Cloud Storage

CNAMEでの転送がHTTPSに対応していないのでまだ無理。
ロードバランサを噛ませればなんとかなるらしい https://cloud.google.com/storage/docs/hosting-static-website?hl=ja

参考


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

16
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
21