在一个Thin服务器上为Rails应用启用https。

17

我有一个运行在Heroku上的Rails应用,目前使用http协议。我希望在开发和生产环境中都能使用https协议。请问应该从哪里开始操作?

我看到了这个视频教程,他们演示了如何使用POW服务器。但我不想使用POW,我想使用Thin服务器。

我还在这里找到了一些内容。但是他们假设你已经安装了OpenSSL。

我没有找到任何关于如何从头开始在Thin服务器上运行https协议的教程。

我想知道是否有人有建议。

谢谢

4个回答

26

尝试这个:

$ thin start --ssl

如果你想要同时使用 SSL 和非 SSL 端口,你需要使用单独的实例。


我运行了 thin start -e production --ssl --ssl-key-file ~/.ssl/<mydomain>.key --ssl-cert-file ~/.ssl/bundle.crt 命令,我的 .key 文件和 .crt 文件都已经就位。服务器启动正常,但我无法再访问任何 API 端点,还需要做什么才能使用 https:// 前缀访问所有端点呢? - AndroC
对于任何想知道的人:当未指定证书文件和密钥文件时,thin --ssl 使用默认的 SSL 证书(通过 eventmachine)。证书上的名称很奇怪:https://github.com/eventmachine/eventmachine/issues/681。您不会想在生产环境中使用它。 - Nathan Long

26

我不知道你是否需要它,但这对我很有帮助:

  thin start --ssl --ssl-verify --ssl-key-file ssllocal/server.key
--ssl-cert-file ssllocal/server.crt

编辑ssl密钥和ssl文件路径。例如,我的密钥在paypal文件夹中,所以命令是:

    thin start --ssl --ssl-verify --ssl-key-file paypal/server.key
--ssl-cert-file paypal/server.crt

如果你遇到了问题,可以查看这篇文章 - Thin with SSL support and ruby-debug

希望这有所帮助。


难道不可以将它移动到 development.rb 配置文件中,以便继续使用 rails server 命令吗? - Augustin Riedinger
我也问同样的问题,thin是否有一个配置文件,可以在其中放置所有这些SSL设置? - W.M.

8
你需要使用thin来完成它:
$ sudo apt-get install thin

在config/application.rb中添加以下行:
config.force_ssl = true

然后在命令行中使用以下命令在thin上运行应用程序:

$ thin start --ssl

2
警告:如果你只是在尝试实验,使用 force_ssl 将会启用 HTTP 严格传输安全等功能。因此,你的浏览器将会被告知“仅在该域名上使用 https”。如果该域名为 localhost,那么这可能会在以后让你感到困惑。你可以通过 Google 查找如何在浏览器中清除 HSTS。 - Nathan Long

0

按照以下步骤进行操作...直接参考makandra卡片中的内容。 我会将步骤粘贴在下面...但为了更好的清晰度,请访问该页面。

注意- 虽然这不能帮助我设置https以检查Stripe Google Pay按钮,但由于某些原因无法继续...我将尝试使用ngrok设置https并分享我的更新学习成果。

快速更新 - 第二天,我尝试了Ngrok,并遵循链接 - https://ngrok.com/download https://www.sitepoint.com/use-ngrok-test-local-site/,我成功地测试了stripe。

在您的主目录中创建一个名为.ssl的目录。进入该目录并创建自签名证书。当被询问时,输入localhost.ssl作为通用名称非常重要。这是为了让您的浏览器相信该证书归属于localhost域。
将localhost.ssl添加到您的hosts文件中。
echo "127.0.0.1 localhost.ssl" | sudo tee -a /etc/hosts 将附加的初始化程序放入config/initializers中。它会对ForceSSL模块进行猴子补丁以在开发中工作,并包含两个自定义配置设置:use_ssl和ssl_port。
在application.rb中添加config.use_ssl = false。(通常关闭SSL。)
在environments/production.rb中添加config.use_ssl = true。(在生产中启用SSL。)
在environments/development.rb中添加config.use_ssl = true和config.ssl_port = 3001。(在开发中启用SSL并将应用程序指向端口3001。)
将force_ssl添加到任何需要的控制器中。您可以提供:only => :some_action和:except => :some_unsafe_action作为选项。
启动thin
thin start -p 3001 --ssl --ssl-key-file ~/.ssl/server.key --ssl-cert-file ~/.ssl/server.crt 选项-p告诉thin绑定到端口3001。同时运行http开发服务器的方法是使用thin start -p 3000。(要使用thin运行应用程序,请将gem 'thin'添加到您的Gemfile中。)
将浏览器指向http://localhost:3000。您应该会被重定向到https://localhost:3001/。如果被要求提供客户端证书,请勿暴露,取消该警报。它将正常工作。

链接到 Makandra 卡片 - https://makandracards.com/makandra/15903-using-thin-for-development-with-ssl


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接