簡體   English   中英

如何在安全 SSL 模式 HTTPS 中啟動 WEBrick Ruby 服務器

[英]How to start WEBrick Ruby server in secure SSL mode HTTPS

啟動情況:

通過apt安裝程序安裝了Linux Ubuntu操作系統和Ruby。 之后通過 gem packgake 處理程序安裝 WEBrick Ruby 服務器。

帶有版本號的應用程序:

  • Linux Ubuntu 18.04
  • Ruby 2.5.1p57
  • OpenSSL 1.1.1
  • 寶石 WEBrick 2.7.6
  • 寶石 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

我使用以下命令生成了證書/密鑰

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: 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
- -> /

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM