Heroku
SSL

Herokuで2016/9/22から無料でSSL証明書を登録できるようになったので、既存のSSL Endpointから移行する方法

More than 1 year has passed since last update.

2016/9/22からHerokuのSSL利用が無料になった
https://blog.heroku.com/ssl-is-now-included-on-all-paid-dynos#feedback

既存のSSL endpointを利用している場合でもダウンタイムなしに移行できるそうだ

You can migrate from the SSL:Endpoint add-on to Heroku SSL with zero downtime.

https://devcenter.heroku.com/articles/ssl#migrate-from-ssl-endpoint-to-heroku-ssl

残念ながら有料でHerokuを使っているユーザのみだが、月々7ドルのHobbyプランでも利用できる
既存の方法では月20ドル、年240ドル節約できるようになるのでけっこうお得


新方式のSSLのAddonを追加する

git 管理しているアプリのディレクトリへ移動する
公開鍵(example.crt)と秘密鍵(example.key)のパスを指定し、
-type sniオプションを付けて実行するのがポイント

> heroku certs:add example.crt example.key --type sni -a application_name

古いSSL:Endpointを削除する

[重要] 独自ドメインを設定している場合はDNSの浸透待ちが必要

うっかりすぐ削除してしまうとドメイン名でアクセスしてもアクセスできなくなるので注意

Route53など別のサービスでDNS設定をしている場合はそちらの設定もする必要がある

You should note that it may take up to 24 hours before your DNS is fully propagated globally.

heroku的には24時間あれば浸透するらしい

DNSの浸透待ちの確認方法

cnameを確認して、自分のドメイン名.herokudns.comになっていればひとまず自分が利用しているDNSには浸透していることになる。

ただDNSの浸透待ちには罠(ソフトバンクのiPhoneからつなぐとつながらないとか)がいっぱいあるのでHerokuが言うように24時間は待ったほうが良い。

DNS浸透済みの例

> dig www.example.com cname +short
www.example.com.herokudns.com.

だめな例

> dig www.example.com cname +short
shimane-xxxx.herokussl.com.

古いSSL:Endpointを削除する

> heroku addons:destroy ssl -a application_name