如何在安全的SSL模式HTTPS下启动WEBrick Ruby服务器。

问题描述 投票:0回答:1

启动情况。

通过apt安装程序安装了Linux Ubuntu操作系统和Ruby。之后通过gem packgake handler安装WEBrick Ruby服务器。

有版本号的应用程序。

  • Linux Ubuntu 18.04
  • Ruby 2.5.1p57
  • OpenSSL 1.1.1
  • gem WEBrick 2.7.6
  • gem openssl 2.7.6

目标情况。

在https模式下运行WEBrick服务器。

我看了一下WEBricks的主页,其中有以下的设置示例。

require 'webrick'
require 'webrick/https'
require 'openssl'

cert = OpenSSL::X509::Certificate.new File.read '/path/to/cert.pem'
pkey = OpenSSL::PKey::RSA.new File.read '/path/to/pkey.pem'

server = WEBrick::HTTPServer.new(:Port => 8000,
                                 :SSLEnable => true,
                                 :SSLCertificate => cert,
                                 :SSLPrivateKey => pkey)

trap 'INT' do server.shutdown end

server.start

我用以下命令生成了certkey

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

毕竟,WEBrick无法工作,并打印出以下错误信息。

ERROR OpenSSL::SSL::SSLError: SSL_accept returned=1 errno=0 state=error: http request
    /var/lib/gems/2.5.0/gems/webrick-1.6.0/lib/webrick/server.rb:299:in `accept'
    /var/lib/gems/2.5.0/gems/webrick-1.6.0/lib/webrick/server.rb:299:in `block (2 levels) in start_thread'

有谁知道,如何解决这个问题?

ruby linux ssl openssl webrick
1个回答
0
投票

答案可以在你收到的错误信息中找到。

ERROR OpenSSL::SSL::SSLError: SSL_accept returned=1 errno=0 state=error: http request

当你试图访问服务器的时候,你发出的是HTTP请求,而不是HTTPS请求。OpenSSL期望的是HTTPS请求。

更改 http://localhost:8000 在您的客户中,以 https://localhost:8000 你就会得到。

[2020-04-25 13:08:49] ERROR `/' not found.
::1 - - [25/Apr/2020:13:08:49 PDT] "GET / HTTP/1.1" 404 285
- -> /
© www.soinside.com 2019 - 2024. All rights reserved.