HTTP知识点(2)——HTTPS
图片和知识点来自《图解HTTP》
http的不足:通信使用明文;无身份验证;无法证明报文完整性。
对于第一点,通信使用明文,应对方式就是加密技术。加密的对象分为,通信加密,和内容加密。通信加密是指,将http与SSL/TLS组合使用,加密通信内容。内容加密则只加密报文主体,不加密报文头部。
第二点,无身份验证。无法验证请求发送至目标的web服务器是否是真的;无法验证响应返回到的客户端是否是真的。C/S都可能伪装。无法确定正在通信的双方是否具备访问权限。
第三点,报文完整性,指无篡改。中间人攻击。
针对这三个问题,HTTP + 加密 + 认证 + 完整性保护 = HTTPS
通常,HTTP直接和TCP通信。当使用SSL时,变成先和SSL通信,再由SSL和TCP通信。

启用https之后,通信就拥有了SSL的通信加密、证书和完整性保护。
SSL: 公钥加密。
加密和解密使用同一个秘钥的方式叫做共享密钥加密、对称密钥加密。

公开密钥加密可以解决对称加密的问题。使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。

https使用共享密钥和加密密钥混合的方式。即建立连接使用加密密钥,传输数据使用共享密钥。

证书:公开密钥加密的时候,无法证明公钥的正确性,即公钥确实来自真服务器。证书就是为了证明这一点。


首先,服务器的运营人员向数字证书认证机构提出公开密钥的申请。数字证书认证机构在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起。
服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信。公钥证书也可叫做数字证书或直接称为证书。
接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事:一,认证服务器的公开密钥的是真实有效的数字证书认证机构。二,服务器的公开密钥是值得信赖的。
此处认证机关的公开密钥必须安全地转交给客户端。使用通信方式时,如何安全转交是一件很困难的事,因此,多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥。


HTTPS的通信流程:

