目标: 在开发模式中使 SSL 正常工作(在 Heroku 上的生产环境中,SSL 工作正常)
我的设置: Ubuntu 16.04, Rails 5.0.1, Puma 3.6.2。
config/environments/development.rb
config.force_ssl = true
我尝试跟随这篇Puma SSL教程:https://gist.github.com/tadast/9932075(我不确定在这里粘贴链接内容和引用它的GitHub协议是什么)。
如果我使用命令行方法运行Puma。
puma -b 'ssl://127.0.0.1:3000?key=/home/sean/.ssh/server.key&cert=/home/sean/.ssh/server.crt'
当我尝试在浏览器中访问时,由于尝试添加证书到Ubuntu后,Chrome会显示“不安全”的错误。
sudo cp server.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
我应该在这里看到1吗?我还尝试将server.crt复制到/etc/ssl/certs
如果我在chrome阻止之后继续操作,我会收到控制台错误:
SSL error, peer: 127.0.0.1, peer cert: , #<Puma::MiniSSL::SSLError: OpenSSL error: error:1407609C:SSL routines:SSL23_GET_CLIENT_HELLO:http request - 336027804>
我没有在命令行使用puma,而是尝试将其添加到config/initializers/puma.rb中。
bind 'ssl://127.0.0.1:3000?key=/home/sean/.ssh/server.key&cert=/home/sean/.ssh/server.crt'
启动命令为"rails s",但没有页面加载,控制台输出如下:
HTTP parse error, malformed request (): # 2017-01-23 10:04:43 -0500: ENV: {"rack.version"=>[1, 3], "rack.errors"=>#>, "rack.multithread"=>true, "rack.multiprocess"=>false, "rack.run_once"=>false, "SCRIPT_NAME"=>"", "QUERY_STRING"=>"", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"puma 3.6.2 Sleepy Sunday Serenity", "GATEWAY_INTERFACE"=>"CGI/1.2"}
我还尝试将puma降级到3.5.2版本,但问题依旧。
请问我哪里出错了?