我们的开发环境使用 HTTP,产品使用 HTTPS,这导致我们无法在本地重现与 HTTPS 相关的问题。
如何在本地使用 SSL 运行 Rails 以进行测试?有 Webrick 配置吗?
谢谢
你应该使用thin来做到这一点:
$ sudo apt-get install thin
并在 config/application.rb 中添加这一行
config.force_ssl = true
然后使用命令行在 Thin 上运行应用程序:
$ thin start --ssl
我认为这里的问题是特定于Rails“测试”环境的,这可能意味着rspec,如果是这样,jaikoo 的这个要点对我有用:
https://gist.github.com/jaikoo/daf88024b8de1cf9339b
关于“开发”环境,最终我使用了 Thin,但我并不是很想这样做,但我看到的最好的文章是 Keyur Gohil 的这篇文章:
https://blog.botreetechnologies.com/enable-ssl-in-developement-using-thin-2a4bd1af500d
虽然我将其放入批处理文件中并添加了 -D -V 并确保它在不同的端口上运行:
#!
# Sets up the use of SSL in development
#
# https://www.devmynd.com/blog/rails-local-development-https-using-self-signed-ssl-certificate/
#
bundle exec thin -D -V start -a localhost -p 3001 --ssl --ssl-key-file ~/development/apps/localhost_ssl_tsl_keys/localhost.key --ssl-cert-file ~/development/apps/localhost_ssl_tsl_keys/localhost.crt
对于当前的 Rails 版本(使用 Rack 3 和 Puma 作为默认 Web 服务器),我能找到的最简单的方法是:
创建自签名证书:
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -keyout localhost.key -out localhost.crt
启动彪马:
puma -b 'ssl://0.0.0.0:9292?key=localhost.key&cert=localhost.crt&verify_mode=none'
最终,您应该在没有 SSL 的情况下运行开发,就这样。除非您的 SSL 证书出现问题,否则您不应出现与不同环境无关的错误。
登台是您测试 SSL 框架的地方。