1

我正在使用:Erlang OTP 21 和 Cowboy 2.4 代码:

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

我正在使用它来启动 Web 服务器,它在 HTTP1.1 上运行良好,但现在 Chrome 正在使用 HTTP2,并且无法禁用。所以现在我收到:

ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

我在启用 HTTP2 的 Firefox 中也遇到了类似的问题:

Error code: NS_ERROR_NET_INADEQUATE_SECURITY

但在 Firefox 上,我可以禁用 HTTP2。禁用 HTTP2 时它工作正常。我已经验证我的证书是好的并且我在 HTTP1.1 下获得了绿色锁 我已经读到 HTTP2 对所使用的密码和它们出现的顺序更加严格。

修复 Chrome 中的 ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY SSL 错误 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}
    ]}

关于我在这里做错了什么有什么建议吗?

4

1 回答 1

2

HTTP/2禁止使用旧密码,包括您列出的所有 CBC 密码。

启用一些像这样的 GCM 密码,大多数浏览器都应该接受:

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

虽然默认情况下它应该允许这些。

有关更多信息,请参见此处:http: //ezgr.net/increasing-security-erlang-ssl-cowboy/

于 2018-10-31T17:26:49.387 回答