RailsのローカルだってSSL/HTTPSにしたい
サードパーティなJSライブラリを入れると、HTTPS環境もしくはlocalhostじゃないと動かないよとか、ServiceWorkerを動かしたいけどlocalhost以外の名前でアクセスしたいよとか、色々と要望はあると思います。なので、Rails5 + pumaで設定してみました。簡単です。
証明書の作成
プロダクション用の本物証明書を使ってもいいですし、ローカルでHTTPSになっていれば良いやって言う場合はオレオレ証明書を作ってブラウザで例外追加してもいいです。オレオレ証明書は下記コマンドでさくっと作れます。
$ openssl genrsa 2048 > server.key
$ openssl req -new -key server.key > server.csr
$ openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt
pumaの設定
config/puma.rb
を編集します。SSLで必要な証明書などのパスを設定するだけです。
config/puma.rb
if "development" == ENV.fetch("RAILS_ENV") { "development" }
ssl_bind '0.0.0.0', '9292', {
key: "/file_path/server.key",
cert: "/file_path/server.crt",
ca: "/file_path/ca", # オレオレ証明書の場合は必要ないです/中間証明書が必要な場合は指定してください
verify_mode: "none"
}
end
pumaの起動
通常は rails s
とやると思いますが、puma.rbを反映させたいので下記のコマンドにします。
$ bundle exec pumactl start
これで https://local.example.com:9292/
でアクセスが出来ると思います。
問題
通常の rails s
ではアクセスログがダーッとコンソールに流れてきますが、これだと流れてきません。log/development.log
には入ってくるのでそっちをtailすれば支障はないですが、ちょっと面倒くさいですね…。