railsがんばる子

Ruby on Railsがんばる子です。胡蝶蘭のECサイトを運営しています。

rails localでhttpsの通信を受け付ける

スクリプトを作成して、実行するという流れ。

bin/rails_https

#!/usr/bin/env ruby
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.

APP_PATH = File.expand_path('../../config/application',  __FILE__)
require File.expand_path('../../config/boot',  __FILE__)

require 'rubygems'
require 'rails/commands/server'
require 'rack'
require 'webrick'
require 'webrick/https'
require 'webrick/ssl'

module Rails
  class Server < ::Rack::Server
    def default_options

      # cn と comment を適当に設定
      cn = [[ "CN", WEBrick::Utils::getservername]]
      comment = "Generated by Ruby/OpenSSL"
      cert, rsa = WEBrick::Utils::create_self_signed_cert(1024, cn, comment)
      ssl_certificate = cert.to_s
      ssl_private_key = rsa.to_s

      super.merge({
          :Port => 8500,
          :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(ssl_private_key),
          :SSLCertificate => OpenSSL::X509::Certificate.new(ssl_certificate),
          :SSLCertName => cn
      })
    end
  end
end

require 'rails/commands'
chmod 755 bin/rails_https
bin/rails_https s

マルパクリ参考にさせていただいたページ

Railsのローカル環境にhttps(SSL)を導入する方法 - Qiita