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/にアクセス。