Веб-сервер Cowboy, использующий HTTP2 и TLS, получает ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY в Chrome - PullRequest
0 голосов
/ 31 октября 2018

Я использую: Erlang OTP 21 и Cowboy 2.4 Код:

cowboy:start_tls( 
                  my_listener,
                  [
                      {port, Web_Server_Port},
                      {certfile, Cert_File},
                      {keyfile, Key_File}
                  ],
                  #{env => #{dispatch => dispatcher()}}
                )

Я использую это для запуска веб-сервера, который отлично работает на HTTP1.1, но теперь Chrome использует HTTP2, и это нельзя отключить. Итак, теперь я получаю:

ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

Я также сталкиваюсь с подобной проблемой Firefox с включенным HTTP2:

Error code: NS_ERROR_NET_INADEQUATE_SECURITY

но в Firefox я могу отключить HTTP2. Это работает нормально, когда HTTP2 отключен. Я подтвердил, что мой сертификат в порядке, и я получаю зеленую блокировку по HTTP1.1 Я читал, что HTTP2 более строг в отношении используемых шифров и порядка их появления.

Исправление ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY ошибки SSL в Chrome https://www.jeffgeerling.com/blog/2016/fixing-errspdyinadequatetransportsecurity-ssl-error-chrome Но не уверен, что это проблема.

Я не уверен, какие шифры использовать, также не совсем уверен, как указать их использование в ковбоях. Я попытался добавить опцию шифрования в опции, но это не решает проблему:

{ciphers, [
        {ecdhe_ecdsa,aes_256_cbc,sha384,sha384},
         {ecdhe_rsa,aes_256_cbc,sha384,sha384}, 
         {ecdh_ecdsa,aes_256_cbc,sha384,sha384},
         {ecdh_rsa,aes_256_cbc,sha384,sha384},
         {dhe_rsa,aes_256_cbc,sha256},
         {dhe_dss,aes_256_cbc,sha256},
         {ecdhe_ecdsa,aes_256_cbc,sha},
         {ecdhe_rsa,aes_256_cbc,sha},
         {dhe_rsa,aes_256_cbc,sha},
         {dhe_dss,aes_256_cbc,sha},
         {ecdh_ecdsa,aes_256_cbc,sha},
         {ecdh_rsa,aes_256_cbc,sha},
         {ecdhe_rsa,aes_128_cbc,sha},
         {dhe_rsa,aes_128_cbc,sha},
         {dhe_dss,aes_128_cbc,sha},
         {ecdh_ecdsa,aes_128_cbc,sha},
         {ecdh_rsa,aes_128_cbc,sha}
    ]}

Любые предложения о том, что я здесь делаю не так?

1 Ответ

0 голосов
/ 31 октября 2018

HTTP / 2 запрещает использование старых шифров , включая все перечисленные вами шифры CBC.

Включите некоторые шифры GCM, как это, что должно быть принято большинством браузеров:

{ciphers, ["ECDHE-RSA-AES256-GCM-SHA384"]}

Хотя по умолчанию это должно быть разрешено.

Смотрите здесь для получения дополнительной информации: http://ezgr.net/increasing-security-erlang-ssl-cowboy/

...