ただのメモ書き。
略語 | サービス | 備考 |
---|---|---|
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の時の情報ですが、だいたい変わっていないかと。
- mod_sslをインストール
- sudo a2enmod sslでSSLを有効化(この時点でhttps://でアクセスしたときのブラウザのエラーが変わる)
- Apache2.confで
LoadModule ssl_module modules/mod_ssl.so
しておく - sudo a2ensite default-sslで読み込ませる設定を指定(confの名前は任意)
- (申請後)/etc/apache2/sites-available/default-ssl.confに、各種.pemを読み込ませる記述を追加
- Apacheを再起動
- CSSなどが読み込まれなくなっった場合は、http://で読み込んでいるものが無いかチェック&キャッシュを削除。http://でもSSLのファイルにリダイレクトしてくれるCDNもあるけど、ブラウザが読み込みブロックしている場合がある
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
認証ファイルを置く作業が面倒だが、とりあえず認証できればよろしい。(ちなみに、上記ページのハンドラではリダイレクトがうまくいかなかった)
handlers:
- url: /.well-known/acme-challenge/?.*
script: challenge.txt
この場合はルートのchallenge.txtに認証情報を置く。
このハンドラでもうまく行かない(パイソンでは500エラーが出る)場合は
- 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
参考
-
何故か一部のサブドメインを有効化すると、そのドメインの中身が親ドメインのサイトに表示されてしまう謎現象が起こっていた。証明書はその一環で読み込まれたもののキャッシュだけが残っていたらしい。結局、設定ファイルの名前が悪かった。https://utano.jp/entry/2016/10/amazon-linux-apache-24-virtualhost/ ↩