我接下来分享的会更加技术化一点,站在运维的角度上,HTTPS我做一个简单的介绍,其实对运维人员来讲完全不需要介绍,就是为了保护我们客户端到服务端之间传输数据的安全。我们传统用的协议是HTTP的协议,HTTP这个协议发明到今天已经差不多30多年时间了,当初设计HTTP协议的时候只是用来传输文本的,没想到到了今天我们现在基于HTTP下面的应用太广泛了,包含支付,包含一些金融的,都是跑在这个协议下。但是这个协议因为不安全,所以我们需要去增加它的安全性,所以出现了HTTPS这样的协议。
传统的很多互联网企业都会用到HTTPS,会在他的服务器端部署S证书。这里面传统的运维过程当中就会碰到很多问题,很多企业可能买了非常多的S证书,证书跟域名是一样的,每个证书会有有效期,跟我们注册域名是一样的道理,比如我买一年的两年的,一年到期以后,你需要续费,或者两年到期已经你需要续费,对大型的互联网公司来讲他可能买的证书上千张的也有,我们拜访过一些客户,他们怎么做的,自己建Excel表,把购买过证书的信息自己手动填进去,到了每年续费到那个表看一看哪些要到期了。第二个密钥,对管理存在的安全隐患,之前我们了解到很多企业都是把密钥放在笔记本上,非常危险。第三个是网站上部署的HTTPS,我们用浏览器访问的时候是可以正常访问的,但是是不是代表了安全,不一定,能浏览器访问不表示就是安全的。第四个问题,我们这个HTTPS它对客户端的兼容性到底怎么样,比如说是不是我只支持最新的浏览器可以访问,我换一个稍微旧一点的访问会不会出问题。对一般的企业来讲,可能没有关注那么多,所以我们这个问题也是非常严重的。第五个,性能的优化方面,这个对于运维人员来讲是非常关键的,如果我的服务器端,很野蛮的把它部署完了,HTTPS可以访问了,但是HTTPS实际上是一个加密服务,它会对服务器端的CPU有消耗,如果我们不对它做优化,有可能给企业造成非常大的损失。如果做了优化,它可以帮企业做非常多的节省,这个时候比如对于我们运维人员来讲,我怎么知道我的性能消耗是不是合理,我的优化还有没有更多的空间。最后一个是非常关键的,跟咱们今天的金牌运维有非常大的关系,我可不可以把这个做成自动化的,因为传统的HTTPS,就像一个传统的产品一样,我把它买过来,我每年都在这签一份合同,每年买一次,我到我的服务器上都需要人工去部署一次。但是现在全自动化的运维,可能从其他的角度来讲,都是希望把能自动化的事情尽可能自动化,很少人工介入,这样出现问题的概率才会降低。
实现HTTPS全生命周期管理,需要做到四点,第一个,对我的证书有一个合理的管理,确保证书本身每年的更新不会出任何问题。第二,需要对我的HTTPS进行一个深入的检测,确保它的兼容性、安全性没有任何问题。第三个是自动化的部署,也就是说我前面把证书的交付自动化了,我的部署可不可以做成自动化。最后一个是监控,前面三块可能做好了,但是我需要有一个状态,实时能知道它会不会有问题,如果有问题,我能第一时间知道问题出在哪里,并且及时修复它。
说到生命周期,HTTPS里有个最关键的叫SSL证书,部署以后才能把HTTPS的协议跑起来。你需要用到SSL证书,以前传统的可能就是通过Excel表把购买的所有证书管理起来,这样肯定不行,非常容易出问题。这个时候就需要一个非常好的管理平,对你所有的SSL证书进行有效管理。有这样的平台能解决这个地方证书的申请、吊销、重新颁发、到期提醒、证书更新,确保证书的生命周期是完整的。
密钥的管理,现在在正常的运维过程当中都是我们把我们的公私钥匙放在一块,好的方案可以把自己的私钥跟Web Server进行分离,哪怕是用一些金融的行业,也确保它的安全是绝对的。
现在看看自己的HTTPS是不是安全的,这里面就会存在几个,第一,前面网易的张总也提到,openssl,我们的Web Server要跑HTTPS的话,基本上是基于openssl这个库的,但是openssl近几年它里面本身的漏洞也非常多,因为它本身就是一个开源的库,可能很多企业都会用它。但是谁之前也没有想过它里面其实也很多问题。第二个,SSL协议的版本问题,我们现在用HTTPS,其实它的协议的版本叫TLS,当前草案最新的是1.3,现在当前用的高是1.2,SSL早期我们用的是2.0版本,后来到3.0版本,在这个版本当中,旧的一些版本也存在一些安全的缺陷。所以如果说服务器上用的正好是一个安全缺陷的,它也会来安全隐患。第三,SSL协议加密套件,它的HTTPS的协议实际上有一个密码的套件组合完成的,有可能很多的运维人员把HTTPS配置起来跑起来了,但是它里面会用一些已经不安全的密码算法在里面,这样也会给自己的网站造成一些安全的威胁。第四个是证书链的完整性,我们配置的SSL证书实际上也一个证书链,如果证书链不完整的情况下就会导致一些问题,我可能拿PC去访问这个网站,用HTTPS访问是ok的,如果用安卓手机或者iPhone手机访问的时候就不能访问了,所以我们也把它定义在不安全里面。第五个是正向保密技术,这个也是我们HTTPS协议当中比较重要的一环。苹果要求他的App和服务传输加密过程中是把正向保密技术作为标配放在他的HTTPS标准中的。第六个是ATS,ATS是苹果公司提出来的安全标准,要求每一个App,App连接到服务端必须是HTTPS的来传输的,但是里面提到了一些安全的要求,他自己提了一个ATS的安全标准,里面会涉及到一些SSL的版本和增强保密技术。最后一个,PCI DSS,这是支付行业的HTTPS标准,做金融行业的,你想自己的网站可能会通过相关的一些金融的安全标准,去通过他们的审计,在PCI DSS里要求你的HTTPS也必须对那个标准是合规的。
除了我刚才讲到那些之外,这个里面就会涉及到刚才我说openssl相关的漏洞,这几年爆发的漏洞确实不少,2014年爆发出来的心血漏洞,这个漏洞严重到什么程度,可能我们随便发起一个攻击,可能所有的存在漏洞的网站都会把数据返回到客户端。我们有必要对自己的HTTPS的网站有一个实时的监测,确保每个网站当前不存在这些漏洞,这些漏洞确实非常危险。
刚才我们提到了兼容性,怎么样检测它,一般情况下我们会模拟各个操作系统,包含移动端的包括PC端的,各个版本的系统,然后来发起一个请求,然后去测试对方服务端部署的SSL,比如他的证书的兼容性,对这些平台来讲是否可信。这个里面提到一个非常关键的,近几年,比如说谷歌的搜索引擎提出来,如果你的网站是HTTPS,你在我谷歌的搜索引擎里面,我会优先收购你的网站。有一个非常关键的,既然是HTTPS,对于搜索引擎来讲,它其实也是一个客户端,它也是模拟客户端向你的网站发起请求的。我们做客户端兼容性测试的时候,也是把各家浏览器都加到我们这里面来。刚才提到的是证书兼容性的测试,这边是加密套件,我们服务器端需要去做一些密码套件的配置,但是这个配置以后我们也是一样,还是以客户端的方式发起,确保它能支持比如说什么样的协议、用了什么样的套件,它是可以正常握手了。
刚才提到服务器端还可以做性能方面的优化,我们在这些优化之前,根据我服务端当前的情况去做进一步的优化。这个协议的详情是可以把服务端当前的配置很好的显示出来。比如我已经发现了我服务端的一些问题,我如何来配置,如何来优化它,或者有哪些具体的方法。这个地方我们用了六个点来大概展现一下。第一,我们SSL证书当中用得算法是ISA的,但是ISA的金融形非常好,现在我们看到国内大部分的网站基本上都是用ISA的,优点是兼容性非常强大,但是为什么建设有线使用ECC的算法,因为ECC算法对服务器端性能的要求会大大降低,但是它的加密强度其实是提升了。如果我们优先使用ECC,也有一个曲线,包含苹果、安卓和其他的旧一点的PC的浏览器,它不是每一个都支持的,可能会出现不兼容。定律这几年尝试,其实有一个最佳的方案,ECC+RSA双重部署。我们现在评估下来看,市面上常用的,这是我们通过百度公布出来自数据来看,应该是90%以上的浏览器都是支持ECC算法的,我们想用双重的部署方式,90%的用汇就可以降低我服务端的性能了,剩下的90%的用户我可以用RSA弥补它的兼容性。第二部分,优先使用AES的算法,当前服务器下面的CPU,针对AES算法里面是有硬件方面做的加解密的性能优化,也会降低服务器端的性能。第三,启用HTTPS2.0,我们之前用的HTTP的协议,我们最新的版本目前是1.1的,但是在2015年的时候,HTTP2.0的标准已经正式发布了,里面解决了两个问题,第一个是安全,第二个是解决了客户端和服务端协议连接的速度,对协议本身做了优化,建议一般的服务端都可以去配置支持它。第四个是OCSP装订,是用来查询我当前使用的证书是不是有效的,因为有些非常网站,可能通过一些特殊的渠道或者做了一些不符合法律的,但是证书可能发证机关就可以把它吊销。吊销完以后,这个OCSP能第一时间知道它被作废了。每个浏览器会向发证机关查询,所以这个查询的速度往往会非常慢。里面使用了数字签名的技术,做了封装,所以不担心状态有人去修改它。第五个是启用HSTS,我们去访问网站的时候,怎么能让用汇变成HTTPS的,从事五年以上的网民应该都有了解,当我把网址输完了,它实际上把HTTP自动加上去,但是不会加HTTPS。百度前面乐观HTTP会自动变成HTTPS,这是以前传统的方式。用户发起的请求还是HTTP的,但是服务端跳转为HTTPS。现在主流的浏览器都支持这个,意味着他是支持HTTPS的。最后一个是LTS,我们也建议起用它,我们跟服务端发起的每一次握手,都会有一个握手的过程,减少握手次数,降低服务器运算。
讲了这么多,对运维人员可能就有点懵了,这么多配置怎么发现它。我们也在学腾讯,我们自己发布了一个,叫MySSL.com,这个平台是用对我们HTTP的网站做一个深度的体检,兼容性到底怎么样,到底修改没有优化的空间,以及我们根据一些相关的参数去做了一个评级,用来确认我们当前这个网站的安全级别是属于哪个等级。这样对用户来讲可能会有一个比较直观的了解。因为要实现自动化,把我们一系列的经验做成一个方案,整合到跟国内一线的云计算厂商进行合作,然后把它打造为全自动化的,我这个地方拿腾讯云里举个例子,我们现在把我们手上HTTPS自动化的方案已经整合到腾讯云上了,如果是腾讯云的用户,那么就可以在平台上看到SSL证书的产品,里面的基础版也是免费的,比如有一些初创企业,好多规模很小的没有盈利的企业,都可以在腾讯云上免费申请这样的产品。如果我们用的是腾讯云的一些服务,节可以一键自动化的把我们申请的证书部署到腾讯云的某一个服务当中。也就是说对于用户来讲,其实不需要那么多的学习过程,而且我前面讲的那么多优化、检测,其实在腾讯上已经经过了深入的整合。
这个是把我们的方案已经整合到了一些云计算的平当中,使用这些云计算平的时候,你就可以一键开启HTTPS,而且在HTTPS安全和自动化方面完全实现了。