gpt4 book ai didi

ruby - 如何使用 Chrome 和 Firefox 与 Ruby 服务器建立安全的 HTTP/2 连接?

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:45 25 4
gpt4 key购买 nike

以下服务器代码与 curl 和 Safari 建立 SSL 连接,但不适用于 Firefox 或 Chrome。保存证书异常后在 Safari 上工作。

  server = TCPServer.new( 8080 )

ctx = OpenSSL::SSL::SSLContext.new
ctx.cert = OpenSSL::X509::Certificate.new(File.open('lib/keys/server.crt'))
ctx.key = OpenSSL::PKey::RSA.new(File.open('lib/keys/server.key'))

ctx.ssl_version = :TLSv1_2
ctx.options = OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:options]
ctx.ciphers = OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ciphers]

server = OpenSSL::SSL::SSLServer.new(server, ctx)

我尝试将证书添加到 Firefox 和钥匙串(keychain) (OSX),但我仍然得到

The webpage at https://localhost:8080/ might be temporarily down or it may have moved permanently to a new web address.

ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

谷歌搜索表明密码存在问题,但以下内容没有任何区别:

ctx.ciphers = 'AESGCM:HIGH:!aNULL:!MD5'
ctx.ciphers = 'EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES'
ctx.ciphers = 'TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5'

注释掉 ctx.ciphers也没有帮助。

在 Firefox 上,连接挂起。没有找到获取错误的好方法。

使用 Chrome 53、Firefox 46 和 OpenSSL 1.0.2j。

什么会导致这个错误?

最佳答案

Chrome 似乎坚持使用 HTTP/2 的临时 ECDH key 交换,要使其正常工作,您需要设置 tmp_ecdh_callback :

ctx.tmp_ecdh_callback = lambda do |*args|
OpenSSL::PKey::EC.new 'prime256v1'
end

我基于 example code from the Ruby http-2 gem ,我认为这也是您获得代码的地方。请注意,在该代码中它使用了 lambda do |_args|,(带有下划线但没有 *)这会导致问题,因为 args 的数量是错误的并且 lambda 严格要求传递正确的数字,因此会出现错误。我已经把它改回原来的 *args 这里,它似乎有 been changed to fix Rubocop warnings .由于您似乎在该存储库中很活跃,因此您可能希望将其更改为类似 |*_args| 的内容。

关于ruby - 如何使用 Chrome 和 Firefox 与 Ruby 服务器建立安全的 HTTP/2 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40194046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com