casillic
casillic

Reputation: 1837

Cowboy Webserver using HTTP2 and TLS getting ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY in Chrome

I'm using: Erlang OTP 21 and Cowboy 2.4 Code:

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

I'm using this to start the web server, which work fine on HTTP1.1,but now Chrome is using HTTP2 and that can't be disabled. So now I'm receiving:

ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

I also experience a similar problem Firefox with HTTP2 enable:

Error code: NS_ERROR_NET_INADEQUATE_SECURITY

but on Firefox I can disable HTTP2. It work fine when HTTP2 is disabled. I have verified my certificate is good and I get the green lock under HTTP1.1 I have read that HTTP2 is stricter with the ciphers that are used and the order they appear.

Fixing ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY SSL error in Chrome https://www.jeffgeerling.com/blog/2016/fixing-errspdyinadequatetransportsecurity-ssl-error-chrome But not sure if that is the problem.

I'm not sure of what ciphers to use also not exactly sure how to indicate their use in cowboy. I have tried adding a cipher option in the options, but this doesn't correct the problem:

{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}
    ]}

Any suggestions on what I'm doing wrong here?

Upvotes: 1

Views: 1256

Answers (1)

Barry Pollard
Barry Pollard

Reputation: 45905

HTTP/2 forbids the use of old ciphers including all the CBC ciphers you have listed.

Enable some GCM ciphers like this, which should be accepted by most browsers:

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

Though by default it should allow these.

See here for more information: http://ezgr.net/increasing-security-erlang-ssl-cowboy/

Upvotes: 2

Related Questions