为什么 Firefox 33 不在我们的网络服务器上使用 GCM?

为什么 Firefox 33 不在我们的网络服务器上使用 GCM?

我们有一个带有 apache2 2.2.22-1ubuntu1.7 的网络服务器(Ubuntu 12.04)。

从客户端使用 openssl:

$ echo QUIT | openssl s_client -connect OURSERVER:8080 2>/dev/null | egrep "Cipher is|Protocol"
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-GCM-SHA384
    Protocol  : TLSv1.2
$ 

我们可以连接OK,但是我们的Ubuntu 14.04下的Firefox 33只能连接max:

TLS_DHE_RSA_WITH_AES_256_CBC_SHA

但是当我们使用相同的 Firefox 33 访问其他网站时,我们可以看到它可以使用 GCM!

问题:为什么我们无法使用 GCM 连接到我们的网络服务器?为什么 Firefox 不使用例如:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256?

我们的 apache 配置如下所示:

SSLCipherSuite "HIGH"
SSLProtocol -ALL +TLSv1
SSLHonorCipherOrder on

答案1

“密码套件”HIGH是一组密码套件。显然,您对这些密码套件的排序的期望与默认值不同。

正如您在以下命令输出中看到的openssl ciphers,该DHE-RSA-AES256-SHA256密码套件优于您期望的 GCM 密码套件。

$ openssl 密码 -V HIGH | \
> grep -nC1 'DHE-RSA-AES256-SHA256\|ECDHE-RSA-AES128-GCM-SHA256' |列-t
11- 0x00,0x9F - DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
12: 0x00,0x6B -  DHE-RSA-AES256-SHA256          TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
13- 0x00,0x6A - DHE-DSS-AES256-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(256) Mac=SHA256
--
33- 0x00,0x8D - PSK-AES256-CBC-SHA SSLv3 Kx=PSK Au=PSK Enc=AES(256) Mac=SHA1
34: 0xC0,0x2F -  ECDHE-RSA-AES128-GCM-SHA256    TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
35- 0xC0,0x2B - ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD

如果您想强制执行特定顺序,请显式指定套件,如下所示:

SSLCipherSuite "EECDH+AESGCM+AES128 EECDH+AESGCM DH+AESGCM+AES128 DH+AESGCM+AES EECDH+AES128 EECDH+AES DH+AES128 DH+AES RSA+AESGCM+AES128 RSA+AESGCM+AES RSA+AES128 RSA+AES RSA+3DES !MD5:!aNULL"

请注意,您的 Apache 版本是太老支持 ECDH 密码套件。此外,通过使用SSLProtocol -ALL +TLSv1,您将在较新版本的 Apache 中排除使用 TLSv1.1 和 TLSv1.2。我建议改用SSLProtocol ALL -SSLv2 -SSLv3并升级您的网络服务器。

作为参考,这里是测试SSL服务器SSLCipherSuite HIGH我使用and为在 Ubuntu 12.04 上运行的 Apache 2.22 获得的输出SSLProtocol ALL -SSLv2 -SSLv3

Supported versions: TLSv1.0 TLSv1.1 TLSv1.2
Deflate compression: no
Supported cipher suites (ORDER IS NOT SIGNIFICANT):
  TLSv1.0
     RSA_WITH_3DES_EDE_CBC_SHA
     DHE_RSA_WITH_3DES_EDE_CBC_SHA
     DH_anon_WITH_3DES_EDE_CBC_SHA
     RSA_WITH_AES_128_CBC_SHA
     DHE_RSA_WITH_AES_128_CBC_SHA
     DH_anon_WITH_AES_128_CBC_SHA
     RSA_WITH_AES_256_CBC_SHA
     DHE_RSA_WITH_AES_256_CBC_SHA
     DH_anon_WITH_AES_256_CBC_SHA
     RSA_WITH_CAMELLIA_128_CBC_SHA
     DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
     DH_anon_WITH_CAMELLIA_128_CBC_SHA
     RSA_WITH_CAMELLIA_256_CBC_SHA
     DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
     DH_anon_WITH_CAMELLIA_256_CBC_SHA
  (TLSv1.1: idem)
  TLSv1.2
     RSA_WITH_3DES_EDE_CBC_SHA
     DHE_RSA_WITH_3DES_EDE_CBC_SHA
     DH_anon_WITH_3DES_EDE_CBC_SHA
     RSA_WITH_AES_128_CBC_SHA
     DHE_RSA_WITH_AES_128_CBC_SHA
     DH_anon_WITH_AES_128_CBC_SHA
     RSA_WITH_AES_256_CBC_SHA
     DHE_RSA_WITH_AES_256_CBC_SHA
     DH_anon_WITH_AES_256_CBC_SHA
     RSA_WITH_AES_128_CBC_SHA256
     RSA_WITH_AES_256_CBC_SHA256
     RSA_WITH_CAMELLIA_128_CBC_SHA
     DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
     DH_anon_WITH_CAMELLIA_128_CBC_SHA
     DHE_RSA_WITH_AES_128_CBC_SHA256
     DHE_RSA_WITH_AES_256_CBC_SHA256
     DH_anon_WITH_AES_128_CBC_SHA256
     DH_anon_WITH_AES_256_CBC_SHA256
     RSA_WITH_CAMELLIA_256_CBC_SHA
     DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
     DH_anon_WITH_CAMELLIA_256_CBC_SHA
     TLS_RSA_WITH_AES_128_GCM_SHA256
     TLS_RSA_WITH_AES_256_GCM_SHA384
     TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
     TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
     TLS_DH_anon_WITH_AES_128_GCM_SHA256
     TLS_DH_anon_WITH_AES_256_GCM_SHA384
----------------------
Server certificate(s):
  d975495633785b152215100eb449c57bee391e98: CN=ubuntu
----------------------
Minimal encryption strength:     strong encryption (96-bit or more)
Achievable encryption strength:  strong encryption (96-bit or more)
BEAST status: vulnerable
CRIME status: protected

相关内容