1. Greeting
Hi,大家好,今天我们不写软文也不发ReleaseNotes,来聊聊HTTPS相关的话题,下面我们开始。
2. 为什么聊这个
还要从负载均衡SLB说起,熟悉阿里云负载均衡的同学都知道阿里云负载均衡提供了全面的协议支持TCP/UDP/HTTP/HTTPS/HTTP2/WEBSOCKET(S)(未来还会有QUIC等新协议的支持,敬请期待),部署TCP/UDP/HTTP的负载均衡不是什么难事,三下五除二,点点鼠标就可以完成,唯独HTTPS这个东东概念好像有点多,理解起来也有些吃力,部署实施的时候还常常容易卡壳,也难怪HTTPS协议相关的负载均工单量常年都排名很靠前。为了让小伙伴们能够更好理解HTTPS,今天我就来尝试着白话一下HTTPS。
3. 背景知识及概念解析
大家应该都知道HTTPS是为了加密,对什么加密什么呢?不难理解,是对网络通信的加密,就像保密电话一样,通话的双方需要确保通话的链路是安全可靠的。
所谓的安全可靠可以有两种做法,一种是通信链路绝对的私有(比如专线),即没有任何第三方能够有机会监听(截取)到网络上通信的内容,这样无疑可以保证通信链路是安全可靠的,但这么做的代价往往是非常大的,并且有些时候根本无法做到!比如基于Internet的通信,Internet就是一张将所有人(物)连接起来的一张大网,链路的绝对私密性根本无从谈起;因此要保证在Internet环境下的保证通信链路的安全可靠就需要引入加密的技术,将通信的内容进行可靠(必须要有一定强度)的加密,即便通信链路无法保证完全不被监听,甚至于完全的公开的暴露,由于有加密的存在,监听者也无法获得有效的信息,此时我们也认为通信是安全可靠的。
但HTTPS可不仅仅是提供了一个安全的通信链路这么简单,HTTPS至少对通信双方的会话提供了如下保障
- 保密性
- 权威性
- 不可篡改性
- 不可抵赖性
保密性:很好理解,上面已经说道了;
权威性:是指通过部署HTTPS证书使得网站拥有者的身份得到权威机构的认证(背书);
不可篡改性:确保通过HTTPS通信的内容在信息完整性和正确性(或原始性)上是有保障的,即不会存在消息被第三方串改的情况。
不可抵赖性:是指经HTTPS加密后的信息发送后具有不可否认性,信息的发送者(主要是指私钥持有方)在发送一条信息后,无法否认没有发送过该信息,或者谎称是别人仿冒你来发送的(除了私钥泄露)。
看到这里你或许觉得有点复杂,又有点好奇,HTTPS是怎样做到的上述这些的?这里我们就不得不说些密码学的基础知识。
白话概念:
-
对称加密:对称加密很好理解,就是通信双方持有一个共同的秘钥,在通信时,发送方用这把秘钥进行信息的加密
对称加密的特点是加密速度快,适合大批量加密数据的场景,但是却有一个问题,就是如何让通信双方安全的获得(交换)对称秘钥?假设韩梅梅和李雷相隔甚远,无法当面交换秘钥,那么秘钥的安全性就难以保障,可靠通信也就无从谈起了。
-
非对称加密:指的是加密和解密使用的不同的秘钥,一把秘钥用来加密,另外一把秘钥用来解密。
加密秘钥与解密秘钥是一一配对使用的,因此这样的两把秘钥也称作秘钥对(Key Pair);通常也被称作为公钥(Public Key)和私钥(Private Key),使用这种方案的加密方案也叫做公私钥加密。公钥是可以任意公开的,所有人均可以获取,而私钥则只能是秘钥持有人自己持有,需要绝对保密。公私钥加密有这样一种特点,使用私钥加密的信息,有且只有与之对应的公钥能够进行解密;而使用公钥加密的信息,有且只有与之对应的私钥才能够解密,两者有一种互补的效应,很有意思对吧。
当韩梅梅决定给李雷发送一条让人羞羞的消息时(只希望让李雷看到),她只需要获取李雷的公钥--而李雷可以以任意方式将他的公钥发给韩梅梅(哪怕这个公钥被韩梅梅的妈妈拿到也没关系,即公钥可以在不可信的信道传送),韩梅梅使用李雷的公钥加密一段让人看了会羞羞的消息,然后发送给李雷,李雷使用自己的所持有私钥解密便可阅读到此条消息,即便韩梅梅的妈妈悄悄的发现这样一条(加密)消息,因为使用公钥加密的信息只能使用与之对应的私钥进行解密,因此她也无法得知其中的秘密是什么,这样韩梅梅和李雷便实现了在不可信的信道上进行可靠(安全)通信。但是非对称加密有个问题,性能非常差,不适合作为大量数据的加密算法。
签名算法:签名算法其实就是哈希算法,也称作摘要算法,之所以称之为摘要,就是它能将大段信息进行不可逆的压缩获得一个精简的能唯一代表原始的小段信息(有点绕绕的)。任何一段信息经过哈希(摘要)后变为一段定长的通常精简的多的信息,并且一般来说,只要输入的信息不同,对其进行哈希(摘要)以后产生的摘要信息也必不相同;但相同的输入必会产生相同的输出。即输入改变了,输出也就改变了,两条相似的信息的经摘要变得一点都不相似,甚至是大相径庭的。这就类似世界上不可能有两个人拥有同样的指纹一样,长得再相似的兄弟姐妹,指纹也一定是千差万别的。正因为哈希(摘要)算法有着这种类似提取指纹的效果,因此被大量的应用在数字签名领域,所以也叫做签名算法。常见的签名算法有MD5(已经被中国科学家王小云2004年破解),SHA-1(也被证明不安全),SHA-256等。签名算法是用来做身份认证使用的,就跟在物理世界中,人们常常会在借条、合同、各种确认单上签字按手印一样,签名算法就是为了在网络世界中,完成类似的动作。
HTTPS证书:有了上面的三个概念的介绍,我们可以来说HTTPS证书了,HTTPS证书用于在互联网上标识或证明一个个体、组织、机构的身份。互联网上的个体和组织看得见摸不着,一个网站如何证明自己的身份是个很关键的问题,比如网上银行,如何确保你访问的网上银行就是真实的,而不是黑客伪造的钓鱼网站呢?这里靠的就是HTTPS证书
证书由CA机构(Certificate Authority,证书权威机构)签发,也就是说在网络上你要证明你是你,光凭你自己说是不够的,需要有一个权威机构替你背书,他说你是你,大家才能相信你是你。这乍一听,感觉挺不可思议的,但现实生活中也有相同的例子,比如去银行办理信用卡,修改密码等业务时,银行怎么确认你就是你呢?答案很简单:身份证,身份证是由各级*机关签发的,而*机关的背后是中国*,因此中国*为你的身份背书,你的身份得到了权威机构的认证,因此你才是你:P!在互联网上一样,当一个网站要证明自己身份的时候就需要出示一个证书,而该证书必须要被权威机构认证,才能得到公众的认可。
世界上有很多证书权威机构,下图所示,大大小小都有,但总的来说,越是老牌的、知名的证书权威机构,其颁发的证书越是有权威性。
根证书:证书权威机构有会有自签发的根证书(有人问为什么是自签发,因为足够权威,大家对这些权威机构有足够的信仰),这些根证书就像一个权威机构的公章一样,给你的证书上戳上这么一个章的时候,你的证书就相当于被权威机构认可了,大家也就认可了,这个过程就是证书的签发,当然HTTPS证书的签发由一系列的加密算法来实现,要比戳章复杂的多。
中级证书:根证书因为有着非常高的权威性,因此根证书的重要性不言而喻,因此注定根证书的保密等级是最高的,因此注定只有非常少数的人持有,可是互联网上那么多网站、机构都需要签发证书,全部都找这几个人来签发,那恐怕要这个人日夜不眠也无法完成这项任务,如果给更多的人持有根证书,又难以保证根证书的绝对安全,因此,人们发明了层次式的证书签发体系,通过引入中级证书,来解决这个问题。
证书权威机构一般会使用根证书,签发一批中级证书,然后分发这些中级证书给各代理机构,代理机构再用中级证书给普通用户签发证书。即便某一个中级证书发生了泄露,那么也只是一部分用户的证书变得不可信,而如果是根证书发生泄露,不难想象,将一定会引发互联网上的信任危机。中级证书可以有几层,但是通常都是一层,即根证书签发中级证书,中级证书签发最终用户证书,这样形成一个证书信任链条,也是我们通常说的证书链。
证书域名:互联网基于IP通信,每个网址都有一个IP地址,但IP地址不方便人们记忆,于是人们发明了域名和DNS服务,DNS服务用户将一个方便人类记忆的域名转换为机器可识别的IP地址。HTTPS证书对网站的认证,主要是基于域名进行的,比如www.aliyun.com这个网站,在服务器上必须放置,含有域名www.aliyun.com的证书,并在客户端请求出示该证书,客户端(通常是浏览器)在接收到证书时,会与所访问的域名做比较,如果域名一致,访问才能得以继续,因此签发证书主要是针对域名进行签发的。
HTTPS证书的种类以及他们之前的区别:
DV SSL-Domain Validation SSL:该类证书在申请签发时,仅需要申请者具有对应域名的解析权限,并不对申请者身份做认证,因此申请到该类证书的网站仅仅能证明,申请者拥有该网址域名的解析权限(解析权还不代表拥有权,有可能是黑客入侵域名系统也不一定),而无法对证书持有者的身份做认证。签发过程非常简单,通常几分钟或几小时就可以完成,市面上免费的证书通常都是此类证书。拥有此类证书,仅仅能解决的时安全加密的通信,却无法解决电子商务中首要的信任问题。
OV SSL-Organization Validation SSL:该类证书在申请签发时,对申请者做严格的身份审核验证,提供可信身份证明。和DV SSL的区别在于,OV SSL 提供了对个人或者机构的审核,能确认对方的身份,安全性更高,能够解决信任问题。所以这部分的证书申请是收费的。
EV SSL-Extended Validation SSL:最安全、最严格的EV SSL证书遵循全球统一的严格身份验证标准,是目前业界安全级别最高的* (Class 4级)SSL证书,和OV类似,也会在申请签发时做严格的身份审核验证,不过过程更繁琐,要求提供的证明更多,但是可以得到最高等级的权威认证,因此电子商务类网站都会采用此类证书,当使用此类证书时,浏览器地址栏中会呈现绿色,还能够显示证书持有机构的认证名称,费用会比OV更高。
好了,本篇先写到这里,下篇我们继续接着说HTTPS认证的详细过程。拜拜。