41
46

More than 5 years have passed since last update.

HerokuでSSL(https)接続する方法

Last updated at Posted at 2015-05-10

独自ドメインを使う場合です。

独自ドメインの設定

独自ドメインの取得、DNS設定の説明は簡略化します。

  • お名前.com等で独自ドメインを取得

  • DNSでCNAME登録
    (Rootドメインの場合はCNAMEが使えないところが多いので対応が面倒そうです・・・)
    *追記しました: [追記] ルートドメイン(Naked Domain)の設定方法
    ホスト名 : www.ORIGINALDOMAIN.com
    Value : APP_NAME.heroku.com

SSL add onの追加

有料($20/month)です。
heroku addons:add ssl

SSL証明書の取得

StartSSLを利用すれば無料で取得できます。
https://www.startssl.com/

StartSSLでの取得方法はググるといろいろ出てくるのでこちらも省略します。
参考 : http://qiita.com/k-shogo/items/870b6d3939dd08da2de4

ただ、ハマった点だけメモしておきます。

証明書のRevokeは有料!

StartSSLで独自ドメインのSSL証明書を発行してHerokuにアップロードします。
heroku certs:add server.crt server.key

このエラーで先に進めず・・・。
No certificate given is a domain name certificate.

以下のコマンドで確認すると、なんと秘密鍵と公開鍵の組み合わせが間違っていることが判明・・・。
openssl x509 -in server.crt -noout -modulus
openssl rsa -in server.key -noout -modulus

StartSSLの画面上で秘密鍵の生成も行ったのですが、ページが重すぎてゴニョゴニョしているうちに秘密鍵をなくした状態で公開鍵を作ってしまっていたようです。
その後、新しい秘密鍵で作りなおしたのですが公開鍵は古いものとペアだったようです。
ほんとのところはよく分かりません・・・。

問題は一度発行した証明書をRevokeするのは有料だということです。
F.A.Qによると$24.90とのこと。

気をつけましょう。

秘密鍵からパスワードを削除

openssl rsa -in server.orig.key -out server.key

ルートの証明書と中間証明書を結合

StartSSLから証明書を落としてきて、StartSSLで作成した公開鍵と一緒にします。

wget https://www.startssl.com/certs/ca.pem
wget https://www.startssl.com/certs/sub.class1.server.ca.pem

cat server.orig.crt sub.class1.server.ca.pem ca.pem > server.crt

証明書のアップロード

heroku certs:add server.crt server.key
証明書アップロード時に独自ドメインSSL用のEndPointが表示されるのでメモしておきます。

DNSの設定

SSL用のEndPointはこのコマンドでも確認できます。
heroku certs --app APP_NAME

Endpoint(fukui-7777.herokussl.comのようなアドレス)をDNSレコードにCNAME登録します。
(独自ドメイン設定の時にAPP_NAME.heroku.comと設定しているところをSSL用のendpointに書き換えます)

反映が完了したらhttpsで接続できるようになるはずです。

[追記] ルートドメイン(Naked Domain)の設定方法

以下のページにあるように、PointDNSというサービスを使うと簡単にできます。
http://shindolog.hatenablog.com/entry/2015/02/01/225521

基本的な設定は上記サイトを見ればできると思います。

自分の場合はお名前.comで取得したドメインを使用したのでそちらの設定も書いておきます。
お名前.com側でネームサーバーの変更をする必要があるので、PointDNSのネームサーバー(管理画面のNameServersタブで確認できます)を設定します。

PointDNS管理画面

Screen Shot 2016-05-31 at 21.13.53.png

お名前.com ネームサーバー変更画面

Screen Shot 2016-05-31 at 21.16.55.png

ルートドメインでSSL接続

SSL接続をする場合は、PointDNSの設定で"[APP_NAME].heroku.com"となっているところをSSL用のEndPoint"~.herokussl.com"に変更します。

41
46
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
46