Как запустить сервер WEBrick Ruby в безопасном режиме SSL HTTPS - PullRequest
1 голос
/ 25 апреля 2020

Ситуация запуска:

Установлено Linux Операционная система Ubuntu и Ruby через установщик apt. После этого установил WEBrick Ruby сервер через обработчик gem packgake.

Приложения с номерами версий:

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

Целевая ситуация:

Для запуска сервера WEBrick в режиме https

я заглянул на домашнюю страницу 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'

Кто-нибудь знает, как решить проблему?

1 Ответ

0 голосов
/ 25 апреля 2020

Ответ можно найти в сообщении об ошибке, которое вы получаете:

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