Google AppEngine で独自ドメイン + SSL を使うとき、以前だったら Google Apps を経由しないといけなかったのですが、本日 Apps なしで Google Developers Console から直接設定する機能がリリースされました。
Announcing SSL for GAE Custom Domains in the Developers Console
さっそく試してみました。
まずは Custom Domain を登録する
Adding a custom domain for your application
Developers Console の Compute > AppEngine > Settings で Custom Domains タブをクリックして "Add a custom domain" ボタンをクリック。
- 未登録のドメインであれば、 "1. If you haven't already, verify that you own the domain." でドメイン名を入力して Verify をクリックする。 (Name.com などの有名レジストラであれば一瞬で完了、それ以外はTXTレコードなどを追加して認証)
- サブドメイン( www.example.com など)を使うときも、認証は Naked なドメインでやったほうが良さそう。 AppEngine App で使うサブドメインは後で指定できる。
- ドメインを認証したら、 "2. Select the domain you want to point to..." でAppEngine Appで使うドメインを選ぶ。
- DNS に設定するレコードが表示されるので、 DNS にレコードを追加する。
- 1 でサブドメインとしてドメイン認証して、 2 でサブドメインを指定してないと A レコードと AAAA レコードをいっぱい設定するはめになってちょっと面倒。
SSL 証明書を取得する
AppEngine が受け付けるのは下記のタイプの証明書。 More about App Engine support for SSL certificates
- Single Domain/Hostname
- Self-signed
- Wildcard
- Subject Alternative Name (SAN) / Multi Domain
今回は Rapid SSL で試しにとってみました。やり方忘れがちなのでメモです。
- Private Keyを作る
# openssl genrsa -des3 -out appengine.key 2048
- CSRを作る
# openssl req -new -key appengine.key -out appengine.csr
- Common Name は AppEngine App で使うドメインを正しく入力。(今回なら app.testdomain-00.com )
- Rapid SSL の Portal に CSR を貼り付けて証明書を取る
-
-----BEGIN CERTIFICATE-----
から始まるやつが出てくるので、appengine.crt
とかの名前で保存する。
- Private Key ファイルの Pass Phrase を消す
openssl rsa -in appengine.key -out appengine-nopass.key
- これやってなくてハマった。(Developers Consoleから登録するときにエラーになる: "The SSL certificate provided could not be inserted.")
Developers Console に証明書を登録する
Developers Console の Compute > AppEngine > Settings で SSL Certificates タブをクリックして "Upload a new certificate" ボタンをクリック。
-
"PEM encoded X.509 public key certificate" には、証明書ファイル(上記の
appengine.crt
)をアップロード -
"Unencrypted PEM encoded RSA private key" には、 Pass Phraseなしの 秘密鍵ファイル(上記の
appengine-nopass.key
)をアップロード
-
"Upload" ボタンをクリックする
-
最後に "Enable SSL for the following custom domains" で AppEngine App に使うドメインにチェックを入れて "Save" ボタンをクリックする。
試してみる
以上でカスタムドメインでも HTTPS でアクセスできるはずです。
いまのところできなさそうなこと
- Developers Console から登録する証明書は、 SNI でのみ使用可能。Virtual IP は相変わらず Google Apps 経由でしか使えない模様。 Purchasing a virtual IP (VIP)
- Naked ドメインでも SSL を使えるようになったのかはまだ試してません。
- Adding a custom domain for your application には " If you are not using SSL, and want to use a naked domain, use the first option to specify a naked domain (such as http://example.com)." って書いてある…。
Google Apps の¥500/月の経費申請書出すのがめんどくさすぎて SSL / Custom Domain を諦めていた自分には、お手軽になって朗報でした。