网站使用SSL和TLS部署实践指南教程详细
在顶级域名系统中,所有的安全都是从服务器,的加密身份开始的,这需要一个强大的私钥来防止攻击者进行模拟攻击。拥有一个有效且强大的证书也很重要,该证书授予一个私钥来表示一个特定的主机名。对于大多数网站来说,2048位RSA密钥提供的安全性已经足够。RSA公钥算法被广泛使用,这使得它成为安全的默认选择。如果想要更高的安全性,RSA密钥就不能很好的扩展。椭圆曲线数字签名算法ECDSA表明它为您提供了更好的安全性和更好的性能。以ECDSA256为例,ECDSA密钥提供了128位密钥。在大多数SSL和TLS部署中,只有服务器证书需要两个或更多证书来建立完整的信任链。加密套件是用来在SSL/TLS握手期间协商安全设置的算法组合。
在顶级域名系统中,所有的安全都是从服务器,的加密身份开始的,这需要一个强大的私钥来防止攻击者进行模拟攻击。拥有一个有效且强大的证书也很重要,该证书授予一个私钥来表示一个特定的主机名。
对于大多数网站来说,2048位RSA密钥提供的安全性已经足够。RSA公钥算法被广泛使用,这使得它成为安全的默认选择。对于2048位的RSA密钥,可以提供大约112位的密钥。如果想要更高的安全性,RSA密钥就不能很好的扩展。例如,要得到一个128位的密钥,你需要一个3072位的RSA密钥,这显然运行缓慢。椭圆曲线数字签名算法ECDSA表明它为您提供了更好的安全性和更好的性能。以ECDSA256为例,ECDSA密钥提供了128位密钥。
如何保护私钥
(1)私钥应该在具有足够熵的可信计算机上生成。
(2)从一开始就为密钥设置密码保护,防止密钥存储在备份系统中时受到攻击。私钥密码在实际操作中不会有太大的安全性,因为攻击者可以随时从进程内存中检索密钥。即使服务器遭到破坏,硬件设备(硬件安全模块或HSM)也能保护私钥,但这些设备价格昂贵,因此只适用于有严格安全要求的组织。
(3)被攻击后,撤销旧证书,生成新密钥。
(4)每年更新证书。最好是你的设备能自动执行这个过程。因此,使用寿命较短的证书在实践中更安全。
(5)除非有特殊情况,每当获得新的证书时,都要生成相应的新私钥。
确保证书涵盖您正在使用的网站
确保您的证书覆盖您使用的网站,并避免无效证书的警告。
即使您只有一个域名,您也应该确保证书与www前缀相关,例如xxxx.com和www.xxxx.com。应该为服务器安全网的每个域名配置一个有效的证书。而且,访问私钥的人越少越好。
可靠的CA获得证书
选择CA时,请注意以下五个方面:
(1)所有核证机关的保安状况应定期接受审核;
(2)选择以CA为主营业务,提供各种功能支持的组织;
(3)您选择的证书颁发机构应支持证书吊销列表的吊销和在线证书状态协议(OCSP);
使用强大的证书签名算法
证书的安全性取决于用于签署证书的私钥的强度和签名中使用的哈希函数的强度。最初,大多数证书依赖于SHA1散列函数,但它已被证明是不安全的。所以现在的趋势是转型到SHA256。到2016年底,网站将不再支持SHA1证书。
服务器顶级域名系统的配置
使用完整的证书链
无效的证书链将使服务器证书无效,并导致浏览器发出安全警告。在大多数SSL和TLS部署中,只有服务器证书需要两个或更多证书来建立完整的信任链。
使用安全协议
SSL/TLS系列有五种协议:SSL 2、SSL 3、TLS 1.0、TLS 1.便宜美国vps1、TLS 1.2。
SSL2和SSL3都很过时,建议不要用。理论上也不应该用TLS 1.0,但实践中经常用到。到目前为止,TLS 1.1和1.2都没有安全问题,只有1.2提供了现代的加密算法。
因此,TLS 1.2应该是使用的主要协议,因为它是唯一提供现代认证加密的版本(也称为AEAD)。
选择最佳加密套件
加密套件是用来在SSL/TLS握手期间协商安全设置的算法组合。在客户端Hello和服务器Hello消息交换之后,客户端发送优先级列表的密码支持套件。然后,服务器用从列表中选择的密码套件进行响应。加密套件是以下组合:
密钥交换算法(RSA、DH、ECDH、PSK);
认证算法(RSA,DSA);
批量加密算法(AES、山茶花、咏叹调);
消息认证码算法(sha-256);
但是,有几个过时的加密原语必须被禁止:
(1)匿名Diffie-Hellman(ADH)套件不提供认证。
(2)NULL加密包不提供加密。
(3)导出的加密套件在连接协商期间不安全,但它也可以用于更强大套件的服务器(FRANK攻击)。
(4)使用弱密码(通常是40位和56位)很容易受到攻击。
(5)RC4不安全。
(6)3DES运行缓慢,容易被攻击。
在SSL 3和更高协议版本中,客户端将首先提交一系列受支持的加密包,服务器将从列表中选择一个包进行连接。但是,并非所有服务器公司都能执行此操作,有些公司会从客户列表中固定选择第一个受支持的套件,因此服务器公司积极选择最佳可用加密套件以实现最佳安全性非常重要。
使用前向保密
前向安全或前向保密(英文:前向保密,缩写:FS)有时被称为完美的前向安全[1]
语:Perfect Forward Secrecy,缩写:PFS),是密码学中通讯协议的安全属性,指的是长期使用的主密钥泄漏不会导致过去的会话密钥泄漏。 [2] 前向安全能够保护过去进行的通讯不受密码或密钥在未来暴露的威胁。如果系统具有前向安全性,就可以保证在主密钥泄露时历史通讯的安全,即使系统遭到主动攻击也是如此。
使用强大的密钥交换算法
确保数据的传输、存储安全,通常都会对传输的数据加密后存储或传输,接收方收到数据后解密密文,还原明文。通常采用的加密算法主要有对称密钥加密算法以及非对称密钥加密算法。在安全的数据通信中,通信的双方必须分别具有加密的密钥以及解密的密钥。一旦通信的密钥被泄漏或破解,由其加密的信息就会被泄漏。因此,如何安全地交换或协商通信密钥就成为至关重要的问题,从而如何保证密钥的安全,特别是安全的密码交换就成为电子商务中安全信息交换的核心问题。
2015年,研究人员发现一个SSL加密安全漏洞LogJam,LogJam漏洞将影响任何支持DHE_EXPORT密码的服务器及所有浏览器,包括最新版的IE、Chrome、Firefox、Safari等。随后他们评估称学术派黑客可以破解768位的密钥,而国家支持的黑客更可以突破1024位的密钥。所以为了安全起见,如果部署DHE,至少要配置2048位的密钥。
正确部署前的验证
也许在按着本文的方法在进行部署时,许多软件和硬件配置都有了新的版本,建议大家先对自己的SSL / TLS做个全面评估,以确保运行的安全,推荐大家使用此链接进行测试。
实践部署过程中的注意事项
避免一味的追求过高的安全性
使用太短的密码肯定是不安全的,但使用太长的密码也不一定安全,比如会导致操作的复杂。对于大多数网站来说,使用强于2048位的RSA密钥以及使用强于256位的ECDSA密钥会浪费CPU功耗,并可能会损害用户体验。类似地,增加临时密钥交换的强度对于DHE为2048位以及ECDHE为256位几乎没有什么好处,使用高于128位的加密也没有明显的好处。
使用会话重用机制
由于SSL握手的非对称运算无论是RSA还是ECDHE,都会消耗性能,故为了提高性能,对于之前已经进行过握手的SSL连接,尽可能减少握手round time trip以及运算。
SSL提供2中不同的会话复用机制。
(1)session id会话复用;
(2)session ticket会话复用,Session id会话复用有2个缺点,其一就是服务器会大量堆积会话,特别是在实际使用时,会话老化时间配置为数小时,这种情况对服务器内存占用非常高。
使用广域网优化
广域网优化(WAN optimization),通常也被称为广域网加速(WAN acceleration),即通过一些优化技术来提供高性能的远程数据访问,从而提高应用程序在广域网上的活动:慈云数据爆款香港服务器,CTG+CN2高速带宽、快速稳定、平均延迟10+ms 速度快,免备案,每月仅需19元!! 点击查看性能。
缓存公共内容
通过TLS进行通信时,浏览器可能会把所有流量都视为敏感数据。这样,它们通常会使用内存来缓存某些资源,但一旦关闭浏览器,所有内容都可能会丢失。为了获得性能提升并实现对某些资源的长期缓存,可以将公共资源(例如图像)标记为公开。
启用OCSP Stapling
OCSP (Online Certificate Status Protocol) 通常由 CA 提供,用于在线实时验证证书是否合法有效,这样客户端就可以根据证书中的 OCSP 信息,发送查询请求到 CA 的验证地址,来检查此证书是否有效。
而 OCSP Stapling ,顾名思义,是将查询 OCSP 接口的工作交给服务器来做,服务器除了可以直接查询 OCSP 信息,还可以仅进行少数次查询并将响应缓存起来。当有客户端向服务器发起 TLS 握手请求时,服务器将证书的 OCSP 信息随证书链一同发送给客户端,从而避免了客户端验证会产生的阻塞问题。由于 OCSP 响应是无法伪造的,因此这一过程也不会产生额外的安全问题。
使用快速加密原语
尽可能使用支持硬件加速AES的CPU,如果你真的想要进一步提高性能,请考虑使用ECDSA密钥。
HTTP的加密
加密整个网站,加密的问题可能是当今最大的安全问题之一,比如:
(1)没有TLS的网站
(2)具有TLS但不执行TLS的站点
(3)混合了TLS和非TLS内容的网站,有时甚至在同一网页内
(4)编程错误的网站会破坏TLS
删除混合内容
即使你加密了整个网站,仍然可能会从第三方网站中检索出未加密的一些资源。混合内容页面是通过TLS传输但是包含不通过TLS传输的资源(例如,JavaScript文件,图像,CSS文件)的页面。这样的页面非常不安全,这些不受保护的JavaScript资源会被中间人攻击所利用,例如劫持整个用户会话。
了解第三方服务
多数网站都是通过从另一台服务器下载的JavaScript代码来激活的第三方服务比如Google Analytics。包含第三方代码的网站会创建一个隐含的信任连接,有效地使对方完全控制你的网站。虽然第三方连接可能不是恶意的,但是这些服务背后的厂商可能被攻击,比如,如果一个服务器被攻击,那攻击者将自动访问所有依赖该服务器的站点。
安全设置Cookie
为了在保持性能的前提下,实现安全,网站需要TLS,而且所有的Cookie在创建时都被明确标记为安全的。否则就有可能被MITM攻击者利用,建议大家为你的Cookie添加加密完整性验证。
安全的HTTP压缩
CRIME攻击通过利用压缩过程中的漏洞,可解密部分安全连接。而禁用TLS压缩可防止这种攻击。另外要注意,HTTP压缩可能被TIME和BREACH攻击利用。与TLS压缩不同,HTTP压缩是必需的,不能关闭。因此,为了解决这些攻击,需要对应用程序代码进行更改。
配置使用HTTP严格传输安全(HSTS)
要激活HSTS保护,你可以向你的网站添加一个新的响应头。之后,支持HSTS的浏览器就会执行它。通过自动将所有明文链接转换为安全的链接,来实现了这一目标。
建议大家添加对HSTS的支持,这是为TLS安全性做出的最重要的保障。为了获得最佳安全效果,请考虑使用HSTS预加载,将HSTS配置嵌入到浏览器中。只要是在有效期内,浏览器都将直接强制性的发起HTTPS请求。
部署内容安全策略(CSP)
敏感内容作出处理
由于使用基于云的应用平台正在增加,所以为了让所有敏感内容只让接收方收到,你必须小心对敏感内容作出处理。
《网站使用SSL和TLS部署实践指南教程详细》来自互联网同行内容,若有侵权,请联系我们删除!