복붙노트

[RUBY-ON-RAILS] 어떻게 레일에 사용 SSL에에 WEBrick을 구성해야합니까?

RUBY-ON-RAILS

어떻게 레일에 사용 SSL에에 WEBrick을 구성해야합니까?

레일 3 이전에는 SSL 매개 변수에 추가에 WEBrick의 HTTPS 버전을 사용하기 위해 서버 명령을 말할 수있는 스크립트 / 서버 파일을 수정할 수 있습니다. 이제 그 모든 스크립트가 사라 것을, 사람이 레일 3 또는 4 일에이를 얻는 방법을 알고 있나요?

해결법

  1. ==============================

    1.레일 4의 스크립트 디렉토리가 사라지고 있지만, bin 디렉토리에 남아 있습니다. 당신은 빈을 편집하여에 WEBrick SSL 인증서와 협력을 얻을 수 / 스크립트를 레일. rbenv와 함께 설치, 레일 4 루비 2.1.1에서 테스트.

    레일 4의 스크립트 디렉토리가 사라지고 있지만, bin 디렉토리에 남아 있습니다. 당신은 빈을 편집하여에 WEBrick SSL 인증서와 협력을 얻을 수 / 스크립트를 레일. rbenv와 함께 설치, 레일 4 루비 2.1.1에서 테스트.

    이것의 대부분은이 블로그 게시물이 스택 오버플로 질문에서입니다.

    #!/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로 설정 될 때 SSL 이제 서버를 사용할 시작 작동하고, 기본 환경 변수가 생략 될 때 설정이 유지됩니다 레일.

    $ 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 인증서를 사용하는

  2. ==============================

    2.이 밖 박스 HTTPS / SSL 설정을위한 편리한 옵션을 제공하기 때문에 레일즈 앱 HTTPS / SSL을 사용하기에 WEBrick을 설정하려고하는 대신, 대신 얇은 서버를 사용하여 전환 시도 할 수 있습니다.

    이 밖 박스 HTTPS / SSL 설정을위한 편리한 옵션을 제공하기 때문에 레일즈 앱 HTTPS / SSL을 사용하기에 WEBrick을 설정하려고하는 대신, 대신 얇은 서버를 사용하여 전환 시도 할 수 있습니다.

    먼저, Gemfile에 보석으로 씬을 추가 :

    gem 'thin'
    

    그런 다음 명령 줄에서 설치 번들 실행합니다.

    당신은 당신이 간단하게 실행, 해당 지역의 개발 환경에서 HTTPS / SSL을 사용하여 레일 응용 프로그램을 테스트하려면

    thin start --ssl
    

    당신이 검증하고 확보하기 위해 SSL / HTTPS 위해서는 인증 기관에서 연결을 유효한 SSL 인증서를 사용할 필요가 있기 때문에 나는이 생산 환경에 적합하지 않은 것을 강조하고있다.

    당신이 얇은에 전달할 수있는 다른 옵션도 있습니다. 당신은 얇은 --help를 실행하여의 전체 목록을 얻을 수 있습니다. 예를 들어, 나는 백그라운드 프로세스로 씬을 daemonizing뿐만 아니라, 내 자신의 IP 주소와 포트를 지정하려면 :

    thin start --ssl \
      --address <ip-address> \
      --port <port> \
      --daemonize
    

    당신은 SSL 인증서를 사용하는 씬을 말하고 싶은 경우 (예를 들어, 당신은 유효한 인증 기관에서 획득 한 것을 하나), 당신은이 옵션을 사용할 수 있습니다 :

    thin start --ssl \
      --ssl-cert-file <path-to-public-certificate> \
      --ssl-key-file <path-to-private-key>
    
  3. from https://stackoverflow.com/questions/3640993/how-do-you-configure-webrick-to-use-ssl-in-rails by cc-by-sa and MIT license