【完全無料】Herokuで独自ドメイン + HTTPSに対応する【Rails】


前置き

「heroku ssl 無料」とかで、ググると

  • SSLの使用量は無料
  • Let's encryptを使えば無料
  • ただし、paid dynoを使う必要あり

みたいな記事が多いと思いますが、 完全無料独自ドメイン + HTTPSに対応する方法を見つけたので、共有しておきます。

環境

  • お名前.comでドメインを取得済み
  • herokuのアプリはデプロイ済み

を想定して書いています。

Cloudflareを使う

Cloudflare という文字を見て、「ああ、それかよ」ってなった方は、この記事を読む意味はないと思われます。

CloudflareはCDNとして有名っぽいのですが、SSLのサービスも提供しています。

仕様イメージ

クライアント(PC)からCloudflareを踏んで、Herokuに流しています。

手順

1. https://www.cloudflare.com にアクセスしてアカウントを作る

2. ドメインを入力する

3. CNAMEとかを設定する

ここでは、herokuのapp名をexample、取得したドメインもexampleの画像です。適宜読み替えてください。

4. Planをfreeに

5. DNSを変える

最後のところでDNSをこれにしろって言われるので変える。
お名前.comにログインして、サイドバーからネームサーバーの変更を選ぶ。

変更したいドメインにチェック入れて、さっき指定されたドメインを設定しておく。

(*画像では一致してないが、本当は一致させる)

6. アプリケーションをSSLに対応させる

Railsを使っていたので、production.rb の force_ssl を true にして、Herokuにpushする。

# config/environments/production.rb
...
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
  config.force_ssl = true
...

7. cryptタブからsslをfullにする

8. 一日待つ(重要)

結構時間がかかるみたいで、設定してから1日ぐらいかかると思っておいた方がいいと思わます。
全然反映されなくて、焦るけど、とりあえず忘れて、1日過ごすのが吉。

1日待って、https://example.com を叩いてみても、herokuに向いてなかったら、何かがおかしい気がする。
頑張ってdigとか使って調査してみてください。