Railsチュートリアルの11章が終わって、12章の途中で、rails sを実行すると以下のようエラーがでた。
HTTP parse error, malformed request (): #<Puma::HttpParserError: Invalid HTTP format, parsing fails.
要は、ローカル環境でもhttpsでアクセスしてねと。という訳で、ローカルの環境でもhttpsで接続できるように変更する。
自己証明書を簡単に作成できるmkcertを使います。
mkcertをインストール
$ brew install mkcert
$ brew install nss # Firefoxを使う場合はこっちも必要
証明書を作成
$ mkcert -install
$ mkcert example.com
# カレントディレクトリに証明書が生成されます
$ ls -l ./*.pem
-rw------- 1 tofu staff 1708 4 22 20:00 ./example.com-key.pem
-rw-r--r-- 1 tofu staff 1549 4 22 20:00 ./example.com.pem
config/puma.rbに先ほど作成した証明書を参照するように設定します。
# config/puma.rb
cert = "/Users/name/example.com.pem"
key = "/Users/name/example.com-key.pem"
ssl_bind "0.0.0.0", 9292, cert: cert, key: key
あとはrails sではなくpumactl startを実行して、 https://localhost:9292/にアクセス。