关于c#:运行puma和EC2 AWS的Rails SSL

关于c#:运行puma和EC2 AWS的Rails SSL

规格:Rails 4.2.4、Ruby 2.1.9、运行 puma、生产模式下的 EC2 实例

我有一个 SSL 证书,我想在我的服务器上安装,但使用类似这样的技术没有结果

rails s puma -b 'ssl://0.0.0.0:9292?key=path_to_key.key&cert=path_to_cert.crt&verify_mode=none&ca=path_to_root_bundle.crt'

https://stackoverflow.com/questions/16063117/how-to-configure-rails-with-puma-to-use-ssl

我得到的不是正常运行的服务器

Puma starting in single mode...
* Version 3.2.0 (ruby 2.1.9-p490), codename: Spring Is A Heliocentric Viewpoint
* Min threads: 0, max threads: 16
* Environment: production
* Listening on tcp://ssl://0.0.0.0:9292?key=~/evslideshow.key&cert=~/e3b162f57ea48f91.crt&verify_mode=peer&ca=~/gd_bundle-g2-g1.crt:80
* Exiting /home/ec2-user/.rvm/gems/ruby-2.1.9@slideshow/gems/puma-3.2.0/lib/puma/binder.rb:240:in
`initialize': getaddrinfo: Name or service not known (SocketError)

现在我正在考虑不同的选择。我可以继续使用 puma 并以某种方式使其工作。我可以切换到不同的服务器 gem。或者我可以使用 Amazon 的证书管理系统(尽管我猜这需要一些成本)。

非常感谢您的帮助,我正在尽力避免进行漫长而徒劳的追求。

答案1

显而易见的是,要修复证书路径中的错误。您使用了符号~,它在 Linux 的路径名中没有特殊含义。相反,这是 Bash shell 用来替换用户主目录的快捷方式。但由于您用单引号括住了该参数,因此 Bash 不会执行替换。

您需要明确指定路径,而不是使用~

当然,你需要不是在用户的主目录中有 TLS 证书或 Web 应用程序,但这是另一个讨论。

答案2

通过阅读一些问题页面在 puma 的 Github 页面上。显然我们必须直接调用 puma,而不是通过rails server,尽管这里已经说过了旧的 stackoverflow 答案

工作代码是

RAILS_ENV=production rvmsudo -E puma -d -b "ssl://0.0.0.0:443?key=${KEY_PATH}&       
cert=${CERT_PATH}&verify_mode=peer&ca=${CERT_BUNDLE_PATH}" -p 80 

确保在生产配置文件中也打开 config.force_ssl。

相关内容