用于Web服务器的SSLconfiguration与关于禁用CBC和TLSv1.0的PCI-DSS要求兼容

我正在寻找支持当前(2015年11月)关于SSL的PCI-DSS要求的Web服务器(nginx)configuration:

  • 没有TLSv1.0(将来只有TLSv1.1和TLSv1.2和TLSv1.3)。
  • 没有微弱的密码,这意味着没有CBC(密码块链接),没有DES,IDEA密码套件,没有RC4等。

使用Nexpose进行多次扫描后,我创build了Nginxconfiguration,最终满足了这个非常严格的要求。 我目前的testingconfiguration如下所示:

server { #(..) ssl_certificate asdf.crt; ssl_certificate_key sadf.key; ssl_protocols TLSv1.1 TLSv1.2; #see about TLSv1.1 below ssl_ecdh_curve secp521r1; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; ssl_dhparam asdf-dh2048.pem; #sorry, no support for Java 6u45 ssl_ciphers #ssh_ciphers of course should be in one line ECDHE-ECDSA-AES256-GCM-SHA384: ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES256-GCM-SHA384: ECDHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES128-GCM-SHA256: AESGCM: !aNULL:!eNULL:!EXPORT:!RC4:!MD5:!PSK; } 

不幸:

  • 只有7个ssl_ciphers,通常使用的只有前6个。
  • 即使我启用TLSv1.1,它也不是,上面的密码仅在TLSv1.2中可用。
  • 使用https://www.ssllabs.com/ssltest扫描显示,网站有A +格栅(太棒了!),但也显示,许多(或大多数)的浏览器和库将无法连接,由于“协议或密码套件不匹配“(不工作:IE 6-10,Java 6和7,Android 2.3-4.4,OpenSSL 0.9.8,Safari 5-8等)。
  • 我删除了TLSv1.0,所以没有select使用安装在Win XP,Win Vista,Win Server 2003上的应用程序,我知道。
  • 使用Nexpose扫描显示没有问题(i.ed.没有使用CBC等)。

Nginx使用openssl,所以根据https://www.openssl.org/docs/manmaster/apps/ciphers.html (章节“CIPHER SUITE NAMES”在页面中间)删除CBC,RC4和其他“弱”元素,我没有看到使用TLSv1.0或TLSv1.1协议的任何选项。 我也没有看到使用更多密码的TLSv1.2的可能性。

有没有人有想法,我的configuration中可以改变什么,为了增加与浏览器/库/系统的兼容性,仍然是PCI-DSS兼容?

如果您禁用TLS1.0,并且禁用所有CBC密码,那么增加与浏览器的兼容性并没有多大的作用。

但是,如果TLS1.0被禁用,CBC密码不被视为“弱”。 BEAST攻击所依据的漏洞在TLS1.1及以上版本中不存在。