Heroku + お名前ドットコム で SSL 通信を行う

📆May 05, 2018🔖 Herokuお名前.com

こんにちは。@___35d です。

好きな音楽をストックできるwebサービス indies.band を個人開発しています。おかげさまで、投稿曲数は 150 を超え、ユーザー数も50名となりました。いつもお使い頂きありがとうございます。まだ使ってない方ぜひ登録してみてください。

indies.band ではようやく SSL 通信に対応しました。調べてもなかなか体系的にまとまっている記事がなく、正直かなり苦戦しました。この記事で同じ苦しみを味わう人が少しでも減れば良いなと思ってこの記事を書き始めました。

前提

下記の2つが既に設定済みであることを前提条件とします。・Heroku の有料プラン (Hobby) 以上に登録済である・お名前.com で独自ドメインを取得しており、独自ドメインでアクセス可能な状態になっている

手順(1/3) Heroku ACM の設定

Heroku には ACM(Automated Certificate Management) という機能が標準で搭載されるようになりました。これは、証明書の更新を自動で行ってくれるようになるものです。これを使うことで、本来ならば数ヶ月に一回、自分で証明書の更新をしないとしなければならないという手間が省けます。

基本的には、上記リンクに載っている手順を踏めば設定完了です。一度は目を通しておいた方が良いとは思いますが、要約すると、以下のコマンドを叩けば設定が完了します。簡単ですね。

heroku certs:auto:enable
heroku certs:auto

これで、デフォルトの URL (*.herokuapp.com) に対して、SSL 通信が有効になります。

※ 下記記述にある通り、2017年3月21日 以降に作成された Heroku アプリケーションに対しては、デフォルトで ACM が有効になっているので、上記コマンドを叩く必要はありません。


手順(2/3) PointDNS の設定を行う

次に DNS 設定を行います。

ALIAS と呼ばれる、特殊な レコードタイプを使用する必要があり、これがお名前.com などには標準で搭載されていないため、PointDNS という Heroku アドオン を使用する必要があります。

アドオン選択画面から PointDNS で検索してインストールしましょう。

インストールが完了したら、設定画面に移ります。以下のようにレコードを追加しましょう。黒塗りの部分には、お名前.com で取得した独自ドメインを入力してください。当サービスの場合は indies.band になります。

上記設定で、 www でアクセスした場合とそうでない場合の両方を SSL 通信に対応させています。

NSレコードに注目してください。dns12.pointhq.com などの値が予め複数セットされています。ここの値を お名前.com に登録して、登録を完了させます。

手順(3/3) お名前.com でネームサーバーの設定を行う

最後に、お名前.com でネームサーバーの設定を行います。上記の ネームサーバーの値を お名前.com のネームサーバー情報入力欄に記載します。

これで、Heroku 側で名前解決を行うようになります。

設定後、お名前.com 側からもメールが飛びますが、ネームサーバーの浸透には時間がかかる場合があります。調査したい場合は dig コマンドで調べることができます。

$ dig indies.band ns

;; ANSWER SECTION:
indies.band.  3600 IN NS dns15.pointhq.com.
indies.band.  3600 IN NS dns12.pointhq.com.
indies.band.  3600 IN NS dns8.pointhq.com.

このようになっていればネームサーバーの設定がうまく行っていることが分かります。https:// でアクセスして証明書の確認してみましょう。

全然うまく行かなくてかなりツラいお仕事だった。