Railsチュートリアルの11章が終わって、12章の途中で、rails s
を実行すると以下のようエラーがでた。
1
|
HTTP parse error, malformed request (): #<Puma::HttpParserError: Invalid HTTP format, parsing fails.
|
要は、ローカル環境でもhttps
でアクセスしてねと。という訳で、ローカルの環境でもhttps
で接続できるように変更する。
環境
- macOS Mojave 10.14.4
- Rails 5.2.2
- ruby 2.6.1
自己証明書を作成
自己証明書を簡単に作成できるmkcertを使います。
mkcertをインストール
1
2
|
$ brew install mkcert
$ brew install nss # Firefoxを使う場合はこっちも必要
|
証明書を作成
1
2
3
4
5
6
7
|
$ 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
に先ほど作成した証明書を参照するように設定します。
1
2
3
4
5
|
# 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/にアクセス。
See Also