(By Jack)很多人经常跟我提起,现在SSL部署变得越来越简单,大部分的时候通过搜索引擎或者通过阅读一些技术人员写的博客基本上都可以完成一个SSL证书在各类服务器上 的部署。尽管SSL与HTTPS服务于各行业站点做加密已经很长时间了,他们仍然不只是安装上去那么简单,在证书的背后,还有一些问题:使用新的更加安全 的加密套件,站点内容是否包含有不安全的内容,等等,通过对这些问题的深入讨论,SSL在服务器上的部署就不那么看似简单了。
对于防止黑客的入侵和盗窃网络资源一直以来是安全行业前进的驱动力,更多的人不断的在提出新的方案设计和构建更加安全的防护系统,网络安全协议作为其中之一,一直以来更新的网络安全协议的更新,都是旨在为提高网络服务的安全性,保证在线交易服务尽可能的不受到新风险的威胁。
这种情况的出现也需要系统管理员不断的调整网络服务器上的安全策略,去年被广为推崇的好的方案在今年可能已经完全不再适用。因此对于系统管理员的要求也是需要不断的提高在安全性上的认知,同时也需要获取更新的安全信息,优化SSL在服务器上的部署,以寻求尽可能保障服务器的安全。
在提高网络服务器的SSL部署优化方面,我们通常建议系统管理员注意:
使用更加安全的加密套件
这是SSL配置使得系统管理员更为迷惑的部分之一,同时它也是重要的一个,无论目前所使用的证书的私钥长度有多么强大,但是SSL的加密套件同时也是很重要的,因为它加密了会话密钥。
对于这一点,我们提出对常见的服务器支持的方案
Apache
SSLProtocol -ALL +SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2;
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 RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
SSLHonorCipherOrder on;
Nginx
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
ssl_prefer_server_ciphers on;
这些设定基于服务器的强度加密,互操作性是同时需要服务器和客户端支持的,也就是说如果在服务器上已经配置了更新的加密套件,也需要尽可能使用比较新的浏览器,例如Chrome/Firefox。
在SSL协议下禁用不安全的 HTTP 调用
通常,我们通过浏览器访问一个已经部署了SSL的网站,如果这个网站中包含了一些非HTTPS的内容调用,这些内容可能是图片,外站 Javascript,或者其他的一些网页内的资源,导致了当访问这个网站时,浏览器会提醒当前网站中包含一些不安全的内容,从而无法正常显示加密状态的 锁状标志。
对于这种情况,简单的办法一般就是通过Chrome浏览器自带的开发者工具,在控制台中重新加载当前页面,所有有问题的资源将会显示在控制台中,只要尽数将其更改至HTTPS协议保护下的资源,就可以解决如上图所提示的问题。
在服务器的安全优化以及部署上,本文可能还有很多没有提及的问题,同时,安全性也不仅仅是软件问题,同时存在于硬件,例如路由器,防火墙等。
在计算机计算能力迅速发展的今天,对于层出不穷的各种网络攻击事件,对于系统管理员来讲不仅需要进行日常系统提供的安全更新;同时更应该深入到安全协议层面,只有对协议更加了解,才能防护针对于对协议层面出现的攻击。
所以一个看似简单的SSL部署,其可能涉及到的内容并没有那么简单