
Herokuにアプリケーションをデプロイし、独自ドメインを割り当てたら、次にやることはSSL化でしょう。今回はHerokuアプリにSSLを設定する方法を紹介します。
見出し
はじめに
HerokuアプリをSSL化するには有料の方法と無料の方法があります。有料の方法はHerokuが用意している正攻法、無料の方法は他のサービスを利用した少し手の込んだ方法です。今回はHerokuアプリをSSL化する上で一般的な前者の方法を紹介します。
HerokuアプリにSSLを設定する
前提として、すでにアプリケーションをデプロイしたdynoがあるものとします。それでは始めましょう。
無料のdynoの設定を確認する
Herokuのサイトにログインし、対象のHerokuアプリ(dyne)のSettingsを確認します。
SSLの欄には「Upgrade to paid dynes to configure Heroku SSL」と書かれている通り、無料枠ではSSLの設定はできませんが、有料にアップグレードすればSSLが設定できることが分かります。
dynoをアップグレードする
対象のHerokuアプリ(dyne)を選択し、「Upgrade」を選びます。SSLの設定を可能にするには、HobbyでもProfessionalでもどちらでも良いのですが、今回はHobbyを選択します。
SSLを有効にする
対象のHerokuアプリ(dyne)のSettingsを選び、「Configure SSL」をクリックします。
今回は「Automatically」を選択し、「Continue」をクリックします。SSL証明書を自分で用意する場合は「Manually」を選んで下さい。
「I’ve done this」をクリックします。
「Continue」をクリックします。
これでSSLの設定は完了です.
SSLが正しく設定されていることを確認する
ブラウザで確認してもよいですが、curlコマンドでSSLが正しく設定されていることを確認します。Herokuアプリのドメインが「www.yourdomain.com」であると仮定した場合のコマンドは以下のようになります。
$ curl -kvI https://www.yourdomain.com
* Rebuilt URL to: https://www.yourdomain.com/
* Trying XXX.XXX.XXX.XXX...
* TCP_NODELAY set
* Connected to www.yourdomain.com (XXX.XXX.XXX.XXX) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /etc/ssl/cert.pem
CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server accepted to use http/1.1
* Server certificate:
* subject: CN=www.yourdomain.com
* start date: Apr 11 06:37:11 2018 GMT
* expire date: Jul 10 06:37:11 2018 GMT
* issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
* SSL certificate verify ok.
...
SSLの設定を確認できました。気づいた人もいると思いますが、後で軽く紹介するLet's Encryptというサービスを利用してHerokuはSSL化を自動で行っています。詳しくは公式サイトを参照して下さい。
無料でSSLを設定するには?
ここまでは、Herokuのdynoをアップグレードする(課金する)という、一般的な方法を紹介してきました。よっぽどお金に困っていなければこれで良い気がしますが、どうしても無料で何とかSSLにしたいという人は、以下の代替案もありますので、調べてみて下さい。
- Let's Encryptというサービスを使う
- Cloudflareというサービスを使う
最後に
いかがでしたか?HerokuのSSLの設定はお金さえ払えば非常に簡単に行なえることが分かったと思います。いまやSSL化は必須の時代になっていますので、覚えておくと良いでしょう。では。

