Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在安全SSL模式下启动WEBrick Ruby服务器HTTPS_Ruby_Linux_Ssl_Openssl_Webrick - Fatal编程技术网

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

如何在安全SSL模式下启动WEBrick Ruby服务器HTTPS,ruby,linux,ssl,openssl,webrick,Ruby,Linux,Ssl,Openssl,Webrick,开始情况: 通过apt安装程序安装Linux Ubuntu操作系统和Ruby。之后,通过gempackake处理程序安装webrickruby服务器 具有版本号的应用程序: Linux Ubuntu 18.04 Ruby 2.5.1p57 OpenSSL 1.1.1 gemwebrick 2.7.6 gem openssl 2.7.6 目标情况: 以https模式运行WEBrick服务器 我查看了WEBricks的主页,下面是安装示例 require 'webrick' require 'w

开始情况:

通过apt安装程序安装Linux Ubuntu操作系统和Ruby。之后,通过gempackake处理程序安装webrickruby服务器

具有版本号的应用程序:

  • Linux Ubuntu 18.04
  • Ruby 2.5.1p57
  • OpenSSL 1.1.1
  • gemwebrick 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

我使用以下命令生成了cert/key

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

答案可在您收到的错误消息中找到:

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

在ROR5中,默认服务器是puma。您可以将其与新应用程序一起使用,在终端中执行“rails服务器”命令。韦布里克也很好。如果您使用单独安装进行ROR测试,那么webrick是不错的。可能是红宝石的问题。是的。这是关于普通WEBrick安装,没有ROR gems。在ROR 5中,默认服务器是puma。您可以将其与新应用程序一起使用,在终端中执行“rails服务器”命令。韦布里克也很好。如果您使用单独安装进行ROR测试,那么webrick是不错的。可能是红宝石的问题。是的。这是关于普通WEBrick安装,没有ROR gems。