在Apache 2中禁用所有旧版本的ssl以强制通过TLS 1.2进行身份validation?

我在这里读到,为了强制TLS 1.2身份validation,需要禁用所有(较旧的?)版本的SSL。 在Apache 2上如何做到这一点?

我在这里读到,为了强制TLS 1.2身份validation,需要禁用所有(较旧的?)版本的SSL。

这不是它说的! 它说所有版本的SSL都需要禁用才能强制使用TLS,而不是强制使用TLSv1.2。

SSL / TLS有许多版本,按照年龄和安全性的顺序递增:

  1. 的SSLv2
  2. 在SSLv3
  3. 使用TLSv1
  4. TLSv1.1
  5. TLSv1.2工作

SSLv1从来没有提供给公众,目前正在处理TLSv1.3。

从理论上讲,浏览器应该使用它和服务器都支持的最强大的可用性,但是降级攻击会导致使用较低的版本,然后可能会被破坏,以便最好closures那些你不想使用的版本,这样他们根本就不能使用。

人们普遍认为SSLv2和SSLv3由于其中存在的缺陷的组合而变得不安全,并且计算能力的增加意味着它们可以被破坏。 所以你一定要禁用他们使用以下内容:

SSLProtocol all -SSLv2 -SSLv3 

注意SSLv2通常默认情况下是closures的,但没有明确的伤害。

TLSv1很有趣。 PCI合规标准(当您接受网站上的卡片付款时使用)最近强制要求closuresTLSv1,但仍然需要一些仍在使用的浏览器,这样可能会伤害您的一些用户(例如XP上的IE8用户 – 甚至是虽然XP正式退休,不受支持,但仍在使用中)。 我个人认为,我们已经准备好了,但还没有完成。

TLSv1.1是另一个有趣的。 TLSv1.2不久之后出来了,几乎所有支持1.1的浏览器也支持1.2,所以1.1的使用很less。 所以,如果你正在寻求巩固你的SSL / TLSconfiguration,那么可以跳过这一步,直接去TLSv1.2而不是两个,这样可以避免以后find一些漏洞。 另一方面,它仍然是安全的,也许浏览器的一小部分是你的一些访问者。

所以如果你只需要TLSv1.2(将来可以selectTLSv1.3),那么你可以使用这个configuration:

 SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 

或者,也可以只是这个(尽pipe限制你只是TLSv1.2,不pipe以后会发生什么):

 SSLProtocol TLSv1.2 

您还可以使用自定义日志格式来衡量当前的使用情况,以便您可以看到有多less访问者仍然使用TLSv1: http : //httpd.apache.org/docs/current/mod/mod_ssl.html#logformats

但是,这不是一个强大的https设置的全部内容。

首先,它很大程度上取决于您安装的OpenSSL版本和/或编译的版本。 这可能意味着TLSv1.2甚至没有提供给你 – 还有很多OpenSSL 0.9.8安装在那里!

接下来是在该版本的SSL / TLS中使用的CipherSuite。 有些人比别人更安全,有些人比其他人有更多的performance。 你也应该指定服务器应该指定顺序,以便使用最强大的套件。 这是(写作时)一个强有力的build议仍然良好的遗留支持:

 SSLHonorCipherOrder on SSLCipherSuite "EECDH+AES128:EECDH+AES256:+SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:RSA+3DES:!DSS" 

然后还有压缩,HSTS,CT,HPKP和OCSP Stapling等选项,但它们确实是专业科目,超出了这个问题的范围(如果有兴趣进一步阅读,可以在这里发表博文): https : //www.tunetheweb.com/security / https / )

testing您的https设置的最佳select是在线https://www.ssllabs.com/ssltest工具。 只需插入您的网站地址,几分钟后,你有一个关于你的设置有多好的报告。 恕我直言,没有很好的理由不在这里得到一个A级,除非你在旧的硬件/软件(在这种情况下,你为什么不升级?)。 如果照顾一个网站,我强烈build议每季度重新运行一次这个testing,以检查任何新的发展和configuration变化,你可能需要做的,以保持在你的configuration上。

这是不正确的,只使用TLSv1.2将删除一些浏览器兼容性,并不会修复所有的SSL违规。

如果没有更多地使用SSL,那是因为发现了一些违规的证券。 但是这并不能解决所有的麻烦。

为了有效,您需要更新您的OpenSSL版本,并使用Apacheconfiguration来删除其他漏洞

在这里configuration来保护您的SSL,增加浏览器的兼容性而不会受到攻击:

 SSLEngine on SSLOptions +StrictRequire SSLProxyEngine on # Prevent Beast attack SSLHonorCipherOrder on # SSL Compression (CRIME attack) SSLCompression off # HSTS Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; pr$ # PROTOCOL SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2 SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4 

之后,您可以在此网站https://www.ssllabs.com/ssltest上testing您的SSL安全级别

  1. 更新到最新版本的Apache 2。
  2. 更新到最新版本的OpenSSL 1.0.1+。
  3. 编辑Apache ssl.conf或httpd.conf

 # only use TLSv1.2 and above, to have SHA-256 and GCM SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 

重新启动Apache。