2013-01-22 3 views
3

그래서있어 간단한시나 사이트 받아들이 :"오류 잘못된 URI"려고 할 때에 WEBrick가 HTTPS

# app.rb   
require 'sinatra' 

get '/' do  
    'Hello world!' 
end    

을 내가 HTTP를 통해이 서비스를 제공하는 랙을 설정할 수 있습니다

# config.ru    
require './app'   
run Sinatra::Application 

# vim: ft=ruby   

내가 http://localhost:9292를 탐색 할 때 그것을 잘 작동합니다 : 일부는 이동 후에 내가 generated a self-signed certificate을했습니다

% rackup 
[2013-01-22 10:27:52] INFO WEBrick 1.3.1 
[2013-01-22 10:27:52] INFO ruby 1.9.2 (2011-02-18) [x86_64-darwin10.7.4] 
[2013-01-22 10:27:52] INFO WEBrick::HTTPServer#start: pid=7525 port=9292 
127.0.0.1 - - [22/Jan/2013 10:28:05] "GET/HTTP/1.1" 200 12 0.0177    
127.0.0.1 - - [22/Jan/2013 10:28:06] "GET /favicon.ico HTTP/1.1" 404 447 0.0007 

을하고, 추파를 던지는, 내가 a way of setting up my rack file to use the cert and serve HTTPS 찾을 생각 :

# config.ru                  
require './app'                 
require 'webrick'                

Rack::Server.start(                
    :Port    => 9292,              
    :Logger   => WEBrick::Log::new($stderr, WEBrick::Log::DEBUG),   
    :app    => Sinatra::Application,          
    :SSLEnable  => true,              
    :SSLVerifyClient => OpenSSL::SSL::VERIFY_NONE,        
    :SSLPrivateKey => OpenSSL::PKey::RSA.new(File.read "server.key"),   
    :SSLCertificate => OpenSSL::X509::Certificate.new(File.read "server.crt"), 
    :SSLCertName  => [["CN", WEBrick::Utils::getservername]]     
)                    

# vim: ft=ruby                 

을하지만 https://localhost:9292를 방문 할 때 ... 불행 내가 Error code: ssl_error_rx_record_too_long 얻을에 WEBrick은 다음과 같습니다

% rackup 
[2013-01-22 10:46:28] DEBUG TCPServer.new(0.0.0.0, 9292) 
[2013-01-22 10:46:28] DEBUG TCPServer.new(::, 9292) 
[2013-01-22 10:46:28] DEBUG Rack::Handler::WEBrick is mounted on /. 
[2013-01-22 10:46:28] INFO WEBrick::HTTPServer#start: pid=7660 port=9292 
[2013-01-22 10:46:33] DEBUG accept: 127.0.0.1:62185 
[2013-01-22 10:46:33] ERROR bad URI `?w~Rx03I?\x06?\x00\x00H\x00??'. 
localhost - - [22/Jan/2013:10:46:33 EST] "\x16\x03\x01\x00?\x01\x00\x00?\x03\x01P??Y?KOƛ\x0Ew/yO;P\x1E\x13 ?w~Rx03I?\x06?\x00\x00H\x00??" 400 316 
- -> ?w~Rx03I?\x06?\x00\x00H\x00?? 
[2013-01-22 10:46:33] DEBUG close: 127.0.0.1:62185 

는 스스로를 자유롭게 사용해, 모든 파일을 수행해야 실행 (config.ru, app.rb, server.crt, server.key)은 this gist입니다.

그래서 나는 분명히 뭔가 잘못하고 있습니다. 어떻게 해결할 수 있습니까?

+0

을 작업하기 위해 추가해야합니다, 나는 포기했다. 나는 그것이 작동하도록하는 방법을 찾을 수 있는지보기 위해 흥미가있을 것입니다! – iain

답변

0

당신은

require "webrick/https" 

는 내가 너무 전에이 시도

+0

나를 위해 작동하지 않습니다 - 그냥'config.ru'에 추가하고 지금 webrick 침을'!! 잘못된 요청'이고 브라우저에 여전히 '오류 코드 : ssl_error_rx_record_too_long'이 표시됩니다. – rampion