【问题标题】:Ubuntu development configuration with SSL, Puma, and Rails使用 SSL、Puma 和 Rails 的 Ubuntu 开发配置
【发布时间】:2017-06-08 04:01:25
【问题描述】:

目标: 让 ssl 在开发模式下工作(ssl 在 heroku 的生产环境中工作正常)

我的设置: Ubuntu 16.04 导轨 5.0.1 彪马3.6.2

config/environments/development.rb

config.force_ssl = true 

我尝试跟随这个 puma ssl 操作方法: https://gist.github.com/tadast/9932075 (我不确定 github procol 关于在此处粘贴上面的链接内容与引用它是什么)

如果我再使用命令行方法运行 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'

并开始: 轨道s

我没有加载任何页面,但控制台显示:

HTTP 解析错误,格式错误的请求():# 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 沉睡的周日宁静", "GATEWAY_INTERFACE"=>"CGI/1.2"}

我还尝试将 puma 降级到 3.5.2

我哪里错了?

【问题讨论】:

  • 你在使用 vagrant 吗?
  • 不,我没有使用 vagrant

标签: ruby-on-rails ubuntu ssl puma


【解决方案1】:

我通过在 Apache 服务器中启用mod_ssl 解决了这个问题,并为 Apache 添加了一些配置以侦听 443 端口。你也可以在 Puma 前面使用 Nginx 来与套接字通信。还有一种方法可以通过安装Puma-dev 来解决这个问题,它会自动使应用程序通过 SSL 可用。我将描述我这样做的方式,它可能会对您/某人有所帮助:

我首先制作了自签名证书,然后为我的项目制作了新的虚拟主机,例如:site1.local。然后我启用了mod_ssldefault-ssl.conf。我在我的虚拟主机端口 443 中添加了类似的转发保密:

<VirtualHost *:443>
    ServerName site1.local
    SSLEngine on
    SSLCertificateFile "/home/user/.ssh/server.crt"
    SSLCertificateKeyFile "/home/user/.ssh/server.key"
    DocumentRoot /var/www/site1.local/public

    SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2
    SSLHonorCipherOrder On
    SSLCipherSuite EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:!aNULL:!eNULL:!LOW:!MEDIUM:!SEED:!3DES:!CAMELLIA:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4
</VirtualHost>

当我重新启动 Apache 服务器时,我仍然收到 google chrome 的不安全网站警告。我需要在 chrome 中手动添加根证书:chrome://settings/certificates,然后是菜单选项卡 Authoritiesimport button。在导入 server.crt 文件之前,我检查了所有 3 个复选框。完成导入后,我重新启动了 google chrome,并在 chrome 的搜索栏中获得了绿色 https 锁定。

一些参考:

https://leehblue.com/add-self-signed-ssl-google-chrome-ubuntu-16-04/

Getting Chrome to accept self-signed localhost certificate

https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-16-04

https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-puma-and-nginx-on-ubuntu-14-04

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2019-07-11
    • 2016-06-20
    • 2019-07-26
    • 2016-04-20
    • 2016-10-10
    • 1970-01-01
    • 2018-01-22
    • 2014-10-03
    • 2018-07-29
    相关资源
    最近更新 更多