GoogleAppEngine
GoogleCloudPlatform

Google AppEngine - Custom Domain + SSLが簡単になった

More than 3 years have passed since last update.

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. 未登録のドメインであれば、 "1. If you haven't already, verify that you own the domain." でドメイン名を入力して Verify をクリックする。 (Name.com などの有名レジストラであれば一瞬で完了、それ以外はTXTレコードなどを追加して認証)


    • サブドメイン( www.example.com など)を使うときも、認証は Naked なドメインでやったほうが良さそう。 AppEngine App で使うサブドメインは後で指定できる。



  2. ドメインを認証したら、 "2. Select the domain you want to point to..." でAppEngine Appで使うドメインを選ぶ。

  3. DNS に設定するレコードが表示されるので、 DNS にレコードを追加する。


    • 1 でサブドメインとしてドメイン認証して、 2 でサブドメインを指定してないと A レコードと AAAA レコードをいっぱい設定するはめになってちょっと面倒。



Add_Domain.png


SSL 証明書を取得する

AppEngine が受け付けるのは下記のタイプの証明書。 More about App Engine support for SSL certificates


  • Single Domain/Hostname

  • Self-signed

  • Wildcard

  • Subject Alternative Name (SAN) / Multi Domain

今回は Rapid SSL で試しにとってみました。やり方忘れがちなのでメモです。


  1. Private Keyを作る # openssl genrsa -des3 -out appengine.key 2048

  2. CSRを作る # openssl req -new -key appengine.key -out appengine.csr


    • Common Name は AppEngine App で使うドメインを正しく入力。(今回なら app.testdomain-00.com )



  3. Rapid SSL の Portal に CSR を貼り付けて証明書を取る



    • -----BEGIN CERTIFICATE----- から始まるやつが出てくるので、 appengine.crt とかの名前で保存する。



  4. 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" ボタンをクリック。


  1. "PEM encoded X.509 public key certificate" には、証明書ファイル(上記の appengine.crt )をアップロード

  2. "Unencrypted PEM encoded RSA private key" には、 Pass Phraseなしの 秘密鍵ファイル(上記の appengine-nopass.key )をアップロード

    AddSSLCert.png


  3. "Upload" ボタンをクリックする


  4. 最後に "Enable SSL for the following custom domains" で AppEngine App に使うドメインにチェックを入れて "Save" ボタンをクリックする。

    App_EngineSSLDomain.png



試してみる

以上でカスタムドメインでも HTTPS でアクセスできるはずです。

SSL Enabled.png


いまのところできなさそうなこと


  • Developers Console から登録する証明書は、 SNI でのみ使用可能。Virtual IP は相変わらず Google Apps 経由でしか使えない模様。 Purchasing a virtual IP (VIP)

  • Naked ドメインでも SSL を使えるようになったのかはまだ試してません。



Google Apps の¥500/月の経費申請書出すのがめんどくさすぎて SSL / Custom Domain を諦めていた自分には、お手軽になって朗報でした。