Chr*_*ris 30 ruby ssl rack ruby-on-rails webrick
在此之前的Rails 3,您可以修改脚本/服务器文件以SSL参数添加和告诉服务器命令来使用的WEBrick的HTTPS版本.现在,所有这些脚本都消失了,没有人知道如何得到这个使用Rails 3或4个工作?
Jus*_*ker 27
当scriptsRails 4中的bin目录消失时,目录仍然存在.您可以通过编辑bin/rails脚本使WEBrick使用SSL证书.测试Rails 4和Ruby 2.1.1,与rbenv一起安装.
其中大部分来自此博客文章和此Stack Overflow问题.
#!/usr/bin/env ruby
require 'rails/commands/server'
require 'rack'
require 'webrick'
require 'webrick/https'
if ENV['SSL'] == "true"
  module Rails
      class Server < ::Rack::Server
          def default_options
              super.merge({
                  :Port => 3001,
                  :environment => (ENV['RAILS_ENV'] || "development").dup,
                  :daemonize => false,
                  :debugger => false,
                  :pid => File.expand_path("tmp/pids/server.pid"),
                  :config => File.expand_path("config.ru"),
                  :SSLEnable => true,
                  :SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE,
                  :SSLPrivateKey => OpenSSL::PKey::RSA.new(
                                   File.open("certs/server.key").read),
                  :SSLCertificate => OpenSSL::X509::Certificate.new(
                                   File.open("certs/server.crt").read),
                  :SSLCertName => [["CN", WEBrick::Utils::getservername]],
              })
          end
      end
  end
end
APP_PATH = File.expand_path('../../config/application',  __FILE__)
require_relative '../config/boot'
require 'rails/commands'
当SSL环境变量设置为true时,从app目录启动rails服务器现在可以启动启用SSL的服务器,并且在省略环境变量时保留默认的rails设置.
$ SSL=true rails s
=> Booting WEBrick
=> Rails 4.1.0 application starting in development on https://0.0.0.0:3001
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
[2014-04-24 22:59:10] INFO  WEBrick 1.3.1
[2014-04-24 22:59:10] INFO  ruby 2.1.1 (2014-02-24) [x86_64-darwin13.0]
[2014-04-24 22:59:10] INFO  
Certificate:
    Data:
...
如果您不想使用预生成的证书,可以使用WEBrick Utils::create_self_signed_cert,如本答案中所述:
配置WEBrick以使用自动生成的自签名SSL/HTTPS证书
小智 20
作为尝试设置WEBrick为您的Rails应用程序使用HTTPS/SSL的替代方法,您可以尝试切换到使用Thin服务器,因为它提供了方便的选项来设置开箱即用的HTTPS/SSL.
首先,将Thin作为gem添加到Gemfile中:
gem 'thin'
然后从命令行运行bundle install.
如果您只想在本地开发环境中使用HTTPS/SSL测试Rails应用程序,那么您只需运行即可
thin start --ssl
我必须强调,这不适用于生产环境,因为您需要使用来自证书颁发机构的有效SSL证书才能使SSL/HTTPS连接可验证且安全.
还有其他选项可以传递给Thin.您可以通过运行获得完整的列表thin --help.例如,我喜欢指定我自己的ip-address和端口,以及将后台进程中的Thin守护进程:
thin start --ssl \
  --address <ip-address> \
  --port <port> \
  --daemonize
如果您想告诉Thin使用SSL证书(例如,您从有效的证书颁发机构获得的证书),那么您可以使用以下选项:
thin start --ssl \
  --ssl-cert-file <path-to-public-certificate> \
  --ssl-key-file <path-to-private-key>