启动情况。
通过apt安装程序安装了Linux Ubuntu操作系统和Ruby。之后通过gem packgake handler安装WEBrick Ruby服务器。
有版本号的应用程序。
目标情况。
在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'
有谁知道,如何解决这个问题?
答案可以在你收到的错误信息中找到。
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
- -> /