ナレッジ

PositiveSSLをHerokuに適用する

目次

thumbnail

年に1回のSSL更新のイベントです。毎年同じことをすれば良いかというとそうでもなく、販社と卸の都合でSSLの購入方法が微妙に変わります。とは言え、毎年一から調べ直すのも手間なので備忘として記しておきます。

PROBLEM

  • HerokuのSSLの期限がきた

SOLUTION

  • というわけで、いつも使っているSSL販売代理店SSLs.com(NameCheap社)でPositiveSSL(運用Comodo社)を購入しHerokuに適用します。

HOWTO

  1. 証明書を購入する
    • SSL販売代理店であればどこでもいいのですが、昔から使っているので
  2. 秘密鍵と署名リクエストをつくる
    • 秘密鍵 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販売代理店側で生成しているケースが増えてきました
  3. 証明書発行を申請する
    • SSL販売代理店より署名リクエストserver.csrと関連情報を送信します
  4. ドメイン保持の証明をする
    • PositiveSSLの運用会社Comodoに対しドメイン保持の証明します
    • 証明方法はメールを受信する、あるいは、Webサイトにプレーンテキストを設置するかの2択になります
  5. Heroku用の証明書をつくる
    • 証明タスクをこなししばらくすると、Comodo社より複数の証明書が送られてきます
    • Heroku用に証明書をつくる cat www_example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > server.crt
  6. Herokuに証明書を適用する
    • 新規で適用する場合は次のコマンドを実行します
      • heroku addons:add ssl:endpoint
      • heroku certs:add server.crt server.key
    • 更新する場合は次のコマンドを実行します
      • heroku certs:update server.crt server.key

WRAPUP

このあたりが自動化されれば良いと思いつつ、自動化されたらこのあたりを調べるモチベーションがなくなるので年に一回のリハビリイベントとして位置づけておきます、はい。

後日談

現在はAutomated Certificate Management (ACM) 機能が用意されています。そちらを使う方が手間・実費ともにリーズナブルで、リハビリさえもいらなくなりました。以下適用方法。

  1. ACMを有効化します。有効化するまでしばし時間がかかるので watch コマンドをつけて様子見します
    • watch heroku certs:auto:enable
  2. 手動で追加した証明書があるか確認します
    • heroku certs
  3. もし手動で追加した証明書がある場合は当該証明書を削除します
    • heroku certs:remove --name foo-bar