如何使用Puma配置Rails以使用SSL?

omn*_*nse 11 ssl ruby-on-rails puma

我只发现了如何使用SSL启动puma:

$ puma -b 'ssl://127.0.0.1:9292?key=path_to_key&cert=path_to_cert'

但是,没有关于如何在文档中包含中间CA证书的说明.有人能指出我正确的方向吗?我正在使用Puma1.6.3

谢谢!

Ale*_*e S 12

仅当您使用nginx时,组合证书和捆绑包才有效.

没有nginx,你可以使用caverify_mode选项:

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://github.com/puma/puma/blob/master/lib/puma/binder.rb

  • root bundle的路径?那是什么呀? (7认同)

Mat*_*ano 9

聚会有点晚了,但是,我有另一个解决方案,您可以查看我的帖子以了解更多详细信息。

\n\n

首先使用mkcert为本地主机创建证书

\n\n
mkcert localhost\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您想让另一个域在 HTTPS 上工作,只需将 localhost 替换为您想要的域,例如mkcert mylocalhost-with-a-cool-domain.com

\n\n

之后,我在该文件夹local-certs下创建了一个文件夹config,并将证书和密钥粘贴到那里。

\n\n

现在您应该将这些证书标记为受信任,I\xe2\x80\x99m 在 Mac 计算机上工作,因此不确定如何在 Windows 或 Linux 发行版上处理此特定部分。看看帖子,有截图。在恢复中,您需要将创建的证书拖到mkcert“钥匙串访问”中。

\n\n

然后在你的 puma 配置文件中,如果没有的话创建一​​个并命名它puma.rb,你应该有类似的东西

\n\n
mkcert localhost\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后运行bundle exec puma -C puma.rb或者bundle exec rails s应该这样做:D

\n\n

如果有人有疑问,请告诉我。希望它对未来的读者有所帮助!

\n

  • 对于 Rails 6.x,您应该使用 `if ENV['RAILS_ENV'] == 'development'` (3认同)
  • @pjo336 是的,只需将 `localhost` 替换为您喜欢的任何内容即可。在我的工作中,我们有一些服务,例如:“api.myjob.com”、“client.myjob.com”、“another_name.myjob.com”。如果是这种情况,您可以执行 `mkcert *.myjob.com` 并使用该证书 (2认同)