2012-11-06 2 views
2

시나 응용 프로그램, 우분투 (12) 다음우분투 12시나 - SSL 오류

#config.ru 
require 'sinatra/base' 
require 'openssl' 
require 'webrick' 
require 'webrick/https' 

class App1 < Sinatra::Base 
    get '/' do 
    'app1' 
    end 
end 

class App2 < Sinatra::Base 
    get '/' do 
    'app2' 
    end 
end 

app = Rack::Builder.new do 
    map '/app1' do 
    run App1 
    end 
    map '/app2' do 
    run App2 
    end 
end 

webrick_options = { 
    :Port    => 8443, 
    :Logger    => WEBrick::Log::new($stdout, WEBrick::Log::DEBUG), 
    :DocumentRoot  => "./public", 
    :SSLEnable   => true, 
    :SSLCertificate  => OpenSSL::X509::Certificate.new( File.open("/etc/ssl/certs/ssl-cert-snakeoil.pem").read), 
    :SSLPrivateKey  => OpenSSL::PKey::RSA.new(   File.open("/etc/ssl/private/ssl-cert-snakeoil.key").read), 
    :SSLCertName  => [ [ "CN",WEBrick::Utils::getservername ] ] 
} 

Rack::Handler::WEBrick.run app, webrick_options 

나는 그것이

sudo rackup 

가 실행 실행하고 괜찮을 것 같다 :

[2012-11-06 16:10:14] INFO WEBrick 1.3.1 
[2012-11-06 16:10:14] INFO ruby 1.9.3 (2012-04-20) [x86_64-linux] 
[2012-11-06 16:10:14] DEBUG TCPServer.new(0.0.0.0, 8443) 
[2012-11-06 16:10:14] DEBUG TCPServer.new(::, 8443) 
....... 

하지만, 내가 http://localhost:8443/app1에 갈 때

[2012-11-06 17:07:25] ERROR OpenSSL::SSL::SSLError: SSL_accept returned=1 errno=0 state=unknown state: http request 
     /usr/lib/ruby/1.9.1/openssl/ssl-internal.rb:164:in `accept' 
[2012-11-06 17:07:25] ERROR OpenSSL::SSL::SSLError: SSL_accept returned=1 errno=0 state=unknown state: http request 
     /usr/lib/ruby/1.9.1/openssl/ssl-internal.rb:164:in `accept' 
[2012-11-06 17:07:25] ERROR OpenSSL::SSL::SSLError: SSL_accept returned=1 errno=0 state=unknown state: http request 
     /usr/lib/ruby/1.9.1/openssl/ssl-internal.rb:164:in `accept' 

및 페이지에서 "이 웹 페이지를 사용할 수 없습니다."

내가 뭘 잘못하고 있니?

답변

0

WEBrick은 브라우저의 HTTP 요청을 잘못 구성된 HTTPS 요청으로 해석합니다.

HTTPS 요청을 대신 발행하려면 https://localhost:8443/app1을 방문하십시오.

HTTP 요청을 HTTPS URL로 리디렉션하는 포트 8080에서 항상 두 번째 서버를 실행할 수 있습니다.