skillup

技術ブログ

サーバー・ネットワーク

herokuでのLet’s Encrypt設定

投稿日:2020年4月29日 更新日:

herokuで運用しているアプリでhttps設定(Let’s Encrypt)をしたいという要望があり、調査、設定をすることに。

当然herokuでなくても大丈夫です。

過去に行ったhttps設定に関して

SSLに関して(主にオレオレSSLの作成方法など)

SSLの設定に関して

Let’s Encryptとは

通常SSLの証明証発行ではお金がかかることが多いのですが、Let’s Encryptでは無料で設置ができるようです。

無料SSL証明書のLet’s Encryptとは?

ローカルのmacで鍵、証明書を作成でき、これをサーバーに配置すればOKかと思います。

デメリットとしては更新頻度がやや短い(3ヶ月ごと?)ということでしょうか。プログラムで自動化してしまえば大丈夫っぽいですが。

作成方法

もうほとんどここのリンクに書かれていることを実行すれば大丈夫かと思いました。

MacOS に CertBot を入れて Let’s Encrypt 証明書を作ってみる

わかりやすすぎ・・

手順1 CertBotのインストール

証明書を作成するために、CertBotというソフトをインストールする必要があります。

下記コマンドでそのまま入れられます。

手順2 証明書発行

ソフトがインストールできたら実際に証明書を作成します。

sudo certbot certonly --manual --domain  example.herokuapp.com

ここでインストールとウィザードが始まります。詳細は先ほどのリンクをみた方がいいでしょう(汗)

最後に下記のようなメッセージが出て実際に鍵が作られますが、ここでEnterを押してはダメです。

これは要するに http://example.herokuapp.com/.well-known/acme-challenge/foofoofoo というurlにアクセスをした時にhogehogehogehogeというレスポンスを返してね、という指示ですので、アプリ側の設定が必要になります。

(注:実はherokuの場合このurl自体にアクセスをさせるのが大変でした・・・
参考リンク herokuでのhttpd.conf設定 )

まだ準備もしていないうちにEnterを押しても当然期待通りのレスポンスはかえってきませんので、エラーになります。

ルーティングでも実際にファイルをおくでもいいのですが、上記URLでアクセスした時に上記の文字列を返すような処理を入れましょう。

うまく行けば上記のように自分のPCに鍵が生成されています。

手順3 鍵配置

実際に上記のディレクトリ /etc/letsencrypt/live/ に行くとサーバ証明証と中間CA証明書の結合( /etc/letsencrypt/live/example.herokuapp.com/fullchain.pem )と秘密鍵( /etc/letsencrypt/live/example.herokuapp.com/privkey.pem )がありますので(実際にはシンボリックリンクですので本来のパスは /etc/letsencrypt/archive/example.herokuapp.com/ 直下です。)、これらをサーバーに配置して通常の設置(参照:SSLの設定に関して)あげれば大丈夫かと思います。

ちなみにherokuだとサーバーへのアップが直接できないため下記のようにコマンドであげます。

(* fullchain.pem → cert.pem にリネームしてます。)

heroku certs:add cert.pem privkey.pem

Freeプランだとできないので注意しましょう・・

LaravelでHerokuにSSLを設定した話。

Let’s Encryptで取得した証明書をHerokuに反映させてみた

オチ

実は私が触っていた案件はドメインが独自ドメインではなく、 http://example.herokuapp.comのようなherokuディフォルトのドメインだったため、すでにhttps設定はされていました。

四苦八苦して設定を試していたところ未設定のはずなのにhttpsが通ったんで、ブラウザを調べてみましたが、証明証がすでに発行されておりました。

不要だったわけですね・・・。

よく考えりゃ、herokuのドメインなので自体は当然してますよね・・・

ちなみに一般のVPSサーバーなどでは、

作成した鍵をscpでローカルからサーバーに移管し、

そのあと下記のように鍵の位置に配置し、

webサーバー(apacheなど)再起動しましょう。

そのあと、ブラウザでURL欄の「証明書」の有効期限が更新されていればOKです。

-サーバー・ネットワーク
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

vagrantで仮想環境を別PCにコピー

vagrantで自分の作った環境を他人にコピーしたい機会があり、なんとか成功したのでメモします。いや~便利ですね・・・ 環境は vagrant 1.7.4 win8 です。 Contents1 準備2 …

no image

mod_rewriteについて

本日はapacheのmod_rewriteについて。 例えばget句に郵便番号を付けて、住所を出力するWEBプログラムがあるとします。 この場合、そのままだと[crayon-61723f381f1b9 …

no image

AWSのCLIに関して

実務でAWSを使ってたんですがテスト時にはコマンドを使っている方がはるかに早いためコマンドライン環境を作っておいたほうが良いです。 ちなみに使用する前にはAWSのコンソールからIAMユーザーを作成する …

no image

zabbixオリジナルアイテム&トリガー

zabbixは標準でもかなりのアイテム&トリガーが入っていますが、オリジナルなものを入れたいときも当然あるかと思います。 そんなときにオリジナルのアイテム&トリガーを入れることができます。 実務ではg …

no image

MacでのVirtualHost設定

MacでのVirtualHostについて。 Contents1 設定方法2 注意点2.1 httpd -S2.2 httpd: Could not reliably determine the ser …