ども、@kimihom です。
Heroku SSL のベータ期間がついに終わったので、本番の SSL Endpoint を Heroku SSL に移した。$20 が無料になるなんて、 Heroku さんの気前の良さは素晴らしい。以下に Route53 を使った場合の移行手順を詳細に記す。
Heroku SSL への移行方法
移行で痛い目を見ないように、まずは以下の記事をしっかりと読んでおこう。
その上で Route53 で DNS 設定している場合の Heroku SSL 設定について詳しく紹介していく。
移行手順
まずは --type sni
をつけて Heroku SSL に証明書をアップロードする。これらのファイル(.crt, .key) はすでに SSL Endpoint の設定時に使っただろうから詳しいことは説明しない。
$ heroku certs:add example.crt example.key --type sni Resolving trust chain... done Adding SSL certificate to ⬢ myapp... done Certificate details: Common Name(s): www.myapp.jp myapp.jp Expires At: 2016-10-31 16:36 UTC Issuer: /C=US/O=GeoTrust Inc./CN=RapidSSL SHA256 CA - G3 Starts At: 2015-10-30 05:52 UTC Subject: /CN=www.myapp.jp SSL certificate is verified by a root authority. === The following common names already have domain entries www.myapp.jp ? Select domains you would like to add myapp.jp Adding domain myapp.jp to ⬢ myapp... done === Your certificate has been added successfully. Update your application's DNS settings as follows Domain Record Type DNS Target ────────────────── ─────────── ──────────────────────────────── www.myapp.jp CNAME www.myapp.jp.herokudns.com myapp.jp ALIAS/ANAME myapp.jp.herokudns.com $ heroku certs Name Endpoint Common Name(s) Expires Trusted Type ────────────────── ─────────────────────────── ────────────────────────────────── ──────────────────── ─────── ──────── velociraptor-5555 (Not applicable for SNI) www.myapp.jp, myapp.jp 2016-10-31 16:36 UTC True SNI hokkaido-1111 hokkaido-1111.herokussl.com www.myapp.jp, myapp.jp 2016-10-31 16:36 UTC True Endpoint
この状態では 2つの証明書情報がアップされたことになっている(velociraptor-5555 が Heroku SSL, hokkaido-1111 が SSL Endpoint)。 Not applicable for SNI とあるのは、現状で 2つ設定されているかららしい。以下の記事参照 When viewing SSL certificates, what does "Not applicable for SNI" mean? - Knowledge Base
次に Heroku SSL でのカスタムドメインを調べておこう。
$ heroku domains === myapp Heroku Domain myapp.herokuapp.com === myapp Custom Domains Domain Name DNS Target ────────────────── ──────────────────────────────── www.myapp.jp www.myapp.jp.herokudns.com myapp.jp myapp.jp.herokudns.com
www.myapp.jp.herokudns.com
ってのが新しい向き先らしい。今までは hokkaido-1111.herokussl.com
みたいなドメインだった。
これを Route53 の CNAME レコードに設定すれば OK。具体的にはwww.myapp.jp
を www.myapp.jp.herokudns.com.
に向くようにする。これは Route53 の TTL 設定によってしばらく待つことになるだろう。
しばらくして dig www.myapp.jp cname +short
の戻りが www.myapp.jp.herokudns.com.
になったら移行が完了したことになる。それが確認できたら、SSL Endpoint を削除しよう。 $20 の節約だ!
heroku addons:destroy ssl
以上で無事に更新が完了する。
終わりに
私の場合、 SSL Endpoint を早めに削除しすぎて数分ほどアクセスできない状態ができてしまった。。 移行の場合のドキュメントがイマイチ具体的な手順がわかりにくかったってのがあったので、本記事でより安全な SSL の移行をしていただけたらと思う。