Rails
Heroku
SSL
HTTPS
cloudflare

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

More than 1 year has passed since last update.

前置き

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

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

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

環境

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

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

Cloudflareを使う

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

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

仕様イメージ

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

手順

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

2. ドメインを入力する

image.png

3. CNAMEとかを設定する

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

4. Planをfreeに

image.png

5. DNSを変える

image.png

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

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

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

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にする

image.png

8. 一日待つ(重要)

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

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