折腾SSL安全级别

网站搬迁完成后,想起这次也将SSL证书给安装上去了,并且是AWS,其实也就是VPS了,可以各种折腾,之前使用虚拟空间,配置都是很多不能改的。现在是AWS了,各种无拘无束了。所以就开启那个SSL检查的网站——ssllabs(也可以使用globalsign的在线检查工具,其实也是用ssllabs的,只是其有提供中文的说明)。

测试完,竟然只有A-,看来大部分使用Ubuntu的默认配置,还是不够的,不过好在网络都有提供一些提示之类的。还是很友好的。就谷歌对应的解决办法。还是挺多的。最后的话,折腾到了A,其实还是可以进一步到A+的,不过使用A+的话,需要把整个站点都开始HTTPS加密的方式。觉得登录用就行了,如果整个站点都用的话,一些插件,可能会用不了。比较蛋疼。

折腾完后,我这个站点的级别如下:

ssltest

还不错吧,需要说的是,我现在并没有全站开启SSL,所以被降到了A,因为有些插件(社会化插件对SSL兼容差,所以就没有全站开了)。说说一般默认配置下,会导致降分的原因吧。主要就是下面的一些配置项吧

BEAST漏洞攻击

这个吧,好多大神都说了,这个是因为SSLv2 SSLv3级TLSv1上会出现的漏洞,但是当RC4与TLSv1结合及TLSv1.1或TLSv1.2版本的不会被BEAST漏洞攻击,但是大神对这个也很纠结,因为RC4是弱加密的,但是大神又说还是有不少终端对于RC4支持比较多,所以大神保留了RC4,不过也有其他大神干掉了RC4,如果你打算规避掉BEAST漏洞攻击的话,可以关闭掉SSLv2,SSLv3及TLSv1。但是从维基百科上看,网络上对于SSLv3级TLSv1的支持是近100%的,具体可以点击这里查看,所以我还是保留TLSv1,这样能保证最好的兼容性,但是关闭了RC4的加密。这样其实还是会被BEAST漏洞攻击的,还是等以后TLSv1.1级TLSv1.2普及了,就可以把TLSv1干掉了。

协议配置

所以对于协议这方面,我就配置成只是禁用掉SSLv2及SSLv3了。

SSLProtocol all -SSLv2 -SSLv3

当然,如果后面TLSv1.1及TLSv1.2支持更广了,就可以把TLSv1也干掉,那么久配置成下面这样(暂时还是兼容为主吧):

SSLProtocol all -SSLv2 -SSLv3 -TLSv1

 OCSP 装订

这个的配置就相对比较容易了。不会很复杂。大神把SSLStaplingResponderTimeout配置成5,是5秒的意思,默认值是10,差距不大,所以我是没加这个了。

SSLUseStapling on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache shmcb:/var/run/ocsp(128000)

还有一点的是SSLStaplingCache shmcb:/var/run/ocsp(128000)是不能配置到virtual host里面的,所以可以写到外面就OK了。

全站开启SSL

这个的配置,也可以通过修改htaccess规则来实现的。前面也说过了,所以我是关闭的。开启的话,配置如下

Header add Strict-Transport-Security "max-age=15768000"

可以适当修改数值的大小。

关闭SSL压缩

规避CRIME attack

SSLCompression off

Heartbleed Vulnerability

这个就是之前很著名的事件了,发生在openssl的某些版本上,升级下openssl的版本就规避了。Ubuntu14.04已经是规避该问题了。

Forward secrecy

这个是和加密方式的配置还有就是上面的压缩配置及协议有关,,加密方式、协议、及压缩都配置好了,这个就OK了,最早的时候,我就是为了找这个如何规避掉,然后就找了一大片,然后。。嗯,然后就发了这篇文章了。

加密方式

需要开启如下的开关才能自定义配置

SSLHonorCipherOrder On

含有RC4的

SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA 3DES RC4 !aNULL !eNULL !LOW !MD5 !EXP !PSK !SRP !DSS +3DES 3DES +RC4 RC4"

不含RC4的(我使用该配置)

SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-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:!CAMELLIA:!DES:!MD5:!PSK:!RC4

或者配置成这样,也是不含RC4

SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

CA证书链

还有就是记得配置上CA证书链,因为有些终端如果没有CA证书链的话,会出现SSL证书错误,比如Firefox浏览器,一些手机的终端等,都会有这样的问题。

 SPDY

这个是用TLS 下一代协议协商(NPN),谷歌上面开发的,只是beta版本,由于deb包和14.04的Ubuntu有依赖上的问题,等到时候解包了,重新封装deb包后,我再更新这一段吧。不配置的话,不影响分数的。哈哈哈。

后来我下载了源码,编译SPDY模块,发现其现在应该是只支持apache2.2版本的,而ubuntu14.04是2.4版本的,编译的时候,都自己下载httpd的源码进行编译,所以就不搞这个了,等其出兼容2.4版本的,再直接安装吧。

参考资料:

Transport Layer Security

Online Certificate Status Protocol

Apache Module mod_ssl

Configuring Apache, Nginx, and OpenSSL for Forward Secrecy

Disable SSLv2 and SSLv3 in Apache

Strong SSL Security on Apache2

Server Technologies – HTTPS BEAST Attack

Forward secrecy

Google developers spdy

HTTP Strict Transport Security

转载请注明: 转载自elkPi.com

本文链接地址: 折腾SSL安全级别

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top