🎉

Rails の開発環境 (localhost) で https を使う

2024/12/26に公開

みなさんこんにちは。
バックエンドエンジニアの豊永です。

Railsの開発環境は、特に設定をせずに利用すると http://localhost:3000 となります。

公開されてる環境では ほとんどの場合 https が使われていると思いますが、httphttps の差異によって挙動が変わって困ることがあったので、開発環境で https を使う方法を調べました。

やりたいこと

Railsの開発環境 (localhost) で https を使いたいです。

動作確認の環境

$ sw_vers
ProductName:		macOS
ProductVersion:		14.5
BuildVersion:		23F79

$ ruby --version
ruby 3.3.6 (2024-11-05 revision 75015d4c1f) [arm64-darwin23]

$ rails --version
Rails 8.0.1

やったこと

SSL証明書を作成する

mkcertという開発用の証明書を作成するためのツールを使います。

FiloSottile/mkcert: A simple zero-config tool to make locally trusted development certificates with any names you'd like.

  1. mkcertをインストールする
$ brew install mkcert
  1. ローカル認証局 (CA) を作成する
$ mkcert -install
  1. 作成されたことを確認する
$ mkcert -CAROOT
/Users/hogehoge/Library/Application Support/mkcert

Railsの設定を変更する

/path/to は Railsブロジェクトの直下とします。

  1. 証明書を作成する
$ mkdir -p /path/to/config/ssl
$ cd config/ssl
$ mkcert localhost 127.0.0.1 ::1

私の環境では以下のファイルが作成されました。

  • localhost+2-key.pem
  • localhost+2.pem
  1. Puma の設定を変更する

以下の設定を追加してください。3001 ポートで、https接続できるようにします。

config/puma.rb

+ ssl_bind '0.0.0.0', '3001', {
+   key: "config/ssl/localhost+2-key.pem",
+   cert: "config/ssl/localhost+2.pem",
+   verify_mode: "none"
+ }

Railsサーバーを起動する

/path/to は Railsプロジェクトの直下とします。

$ cd /path/to
$ bin/rails s

https://localhost:3001/ で接続することができます。

表示されました!
ホーム画面

Linc'well, inc.

Discussion