PositiveSSLをHerokuに適用する
目次

年に1回のSSL更新のイベントです。毎年同じことをすれば良いかというとそうでもなく、販社と卸の都合でSSLの購入方法が微妙に変わります。とは言え、毎年一から調べ直すのも手間なので備忘として記しておきます。
PROBLEM
- HerokuのSSLの期限がきた
SOLUTION
- というわけで、いつも使っているSSL販売代理店SSLs.com(NameCheap社)でPositiveSSL(運用Comodo社)を購入しHerokuに適用します。
HOWTO
- 証明書を購入する
- SSL販売代理店であればどこでもいいのですが、昔から使っているので
- 秘密鍵と署名リクエストをつくる
- 秘密鍵
openssl genrsa -des3 -out server.orig.key 2048 - 秘密鍵パスワードなし
openssl rsa -in server.orig.key -out server.key - 署名リクエスト
openssl req -new -key server.key -out server.csr - ※ 最近このあたりの署名情報は、SSL販売代理店側で生成しているケースが増えてきました
- 秘密鍵
- 証明書発行を申請する
- SSL販売代理店より署名リクエスト
server.csrと関連情報を送信します
- SSL販売代理店より署名リクエスト
- ドメイン保持の証明をする
- PositiveSSLの運用会社Comodoに対しドメイン保持の証明します
- 証明方法はメールを受信する、あるいは、Webサイトにプレーンテキストを設置するかの2択になります
- Heroku用の証明書をつくる
- 証明タスクをこなししばらくすると、Comodo社より複数の証明書が送られてきます
- Heroku用に証明書をつくる
cat www_example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > server.crt
- Herokuに証明書を適用する
- 新規で適用する場合は次のコマンドを実行します
heroku addons:add ssl:endpointheroku certs:add server.crt server.key
- 更新する場合は次のコマンドを実行します
heroku certs:update server.crt server.key
- 新規で適用する場合は次のコマンドを実行します
WRAPUP
このあたりが自動化されれば良いと思いつつ、自動化されたらこのあたりを調べるモチベーションがなくなるので年に一回のリハビリイベントとして位置づけておきます、はい。
後日談
現在はAutomated Certificate Management (ACM) 機能が用意されています。そちらを使う方が手間・実費ともにリーズナブルで、リハビリさえもいらなくなりました。以下適用方法。
- ACMを有効化します。有効化するまでしばし時間がかかるので
watchコマンドをつけて様子見しますwatch heroku certs:auto:enable
- 手動で追加した証明書があるか確認します
heroku certs
- もし手動で追加した証明書がある場合は当該証明書を削除します
heroku certs:remove --name foo-bar
