サブドメインでのssl対応に苦戦しました。
うまくいった方法を記録しておきます。
設定したい内容
# herokuアプリのデフォルトのドメイン
mydomain.herokuapp.com
# 設定したいサブドメイン
hogehoge.mydomain.com
手順
Heroku側にドメインを追加
$ heroku domains:add hogehoge.mydomain.com
HerokuのプランをHobbyプランに変更
Heroku管理画面から設定。
無料のプランだと、カスタムドメインのSSL化ができないようです。
SSLの有効化
Herokuの管理画面
> Settings
> SSL Certificates
からSSLを有効化
DNSターゲットの確認
まずはHerokuの管理画面で、DNSターゲットを確認。(Settings
> Domains
)
末尾が.herokudns.com
で終わるやつです。
CNAMEレコードの設定
(お名前.comとかの管理画面から)ドメインのDNS設定で、CNAMEレコードに先ほど確認したDNSターゲットを設定。
CNAME hogehoge hiogehioerheefoiefjerrrfe.herokudns.com
設定が反映されるまで数時間待つ。
http→httpsにリダイレクト
今回Railsアプリを動かしていたので、production.rbの設定をいじって対応。
config/environments/production.rb
config.force_ssl = true
ハマったポイント
当初CNAMEレコードにherokuのデフォルトのドメインを設定していて、httpだと動くのにhttpsだとNET::ERR_CERT_COMMON_NAME_INVALID
のエラーが出てしまって戸惑いました。
参考