Следующий код сервера делает SSL-соединение с curl и Safari, но он не работает с Firefox или Chrome. Работает над Safari после сохранения исключения сертификата.Как сделать безопасное соединение HTTP/2 с сервером Ruby с Chrome и Firefox?
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 и брелок (OSX), но я все еще получаю
Веб-страница https://localhost:8080/ может быть временно недоступна или постоянно перемещена по новому адресу ,
ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY
Googling предполагает, что существует проблема с шифрами, но следующий не делали разницы:
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.
Что может вызвать эту ошибку?
Похоже, что это изменение изменится в будущих версиях Openssl и привязок Ruby: https://github.com/ruby/openssl/commit/fcb9b4a6b5c6e30a99d9acb8c73e62c3c7559001 – matt
ОМЗ. Я провел целый день, пытаясь понять это. И я использую тот же пример кода. Я думал, что это проблема с шифрами. Я извлек этот код, потому что он вызывал проблемы, и он вот-вот должен был добавить его обратно и понять, почему он терпит неудачу. –
@ Даже мне потребовалось некоторое время, чтобы выяснить, что происходит. Проблема с использованием 'lambda' была сложной - это вызвало отказ callback полностью, но не было очевидно, почему. – matt