HerokuでカスタムドメインのSSL endpointを利用する方法
カスタムドメインは設定済みの状態でSSLアドオンを追加してSSL証明書を設定するまでの方法をメモ。
Herokuのアプリケーション名を sample-app とする
■ SSLアドオンの追加
$ heroku addons:add ssl:endpoint --app sample-app
■中間証明書の取得
SSL証明書を取得したところが配布しているものを取得する
例えばRapidSSL社が提供するものだと以下のコマンド実行で取得できる
$ curl https://knowledge.rapidssl.com/library/VERISIGN/ALL_OTHER/RapidSSL%20Intermediate/RapidSSL_CA_bundle.pem > chain_ca.pem
※formatがdosのため必要に応じて文字コードを変換する必要がある
■ 秘密鍵ファイルの作成
SSL証明書を発行する上で準備した秘密鍵ファイルを用意する。
秘密鍵ファイルは先頭が下記で始まるもので、ここでは準備したファイル名を server.key とする
-----BEGIN RSA PRIVATE KEY-----
■ 証明書ファイルの作成
業者から送られてきた証明書ファイルを用意する。
証明書ファイルは先頭が下記で始まるもので、ここでは準備したファイル名を server.crt とする
-----BEGIN CERTIFICATE-----
■ 証明書に中間証明書を追加
$ cat chain_ca.pem >> server.crt
■ Herokuへ証明書ファイルと秘密鍵ファイルを送信
$ heroku certs:add server.crt server.key --app sample-app
Adding SSL endpoint to sample-app... done
messageleaf now served by iwate-2222.herokussl.com
Certificate details:
・・・(略)・・・
■ CNAME情報のアップデート
CNAMEの設定を、カスタムドメイン設定時に指定されたものから、レスポンスのテキスト内に表示されているところに変更する
sample-app.herokuapp.com. => iwate-2222.herokussl.com.
■ 確認
$ heroku certs --app sample-app
Endpoint Common Name(s) Expires Trusted
------------------------ ---------------------------------- ----------------------- -------
iwate-2222.herokussl.com www.sample-app.com, sample-app.com 2014-07-26 10:00:00 JST True
あとはSSL証明書が設置されるまで数分程度だけ。
----追記
SSL証明書の更新をする場合は以下のコマンドを実施してください。
$ heroku certs:update server.crt server.key --app sample-app