发布时间:2024-03-06 13:01
HTTPS是以安全为目标的 HTTP 通道,即 HTTP 的安全版。
为什么需要 HTTPS?
当我们往服务器发送比较隐私的数据(比如说你的银行卡,身份证)时,如果使用 HTTP 进行通信。那么安全性将得不到保障。
首先数据在传输的过程中,数据可能被中间人抓包拿到,那么数据就会被中间人窃取。
其次数据被中间人拿到后,中间人可能对数据进行修改或者替换,然后发往服务器。
最后服务器收到数据后,也无法确定数据有没有被修改或替换,当然,如果服务器也无法判断数据就真的是来源于客户端。
HTTP 存在三个弊端:
无法保证消息的保密性;
无法保证消息的完整性和准确性;
无法保证消息来源的可靠性。
HTTPS 就是为了解决上述问题应运而生的。
一、HTTPS 基本概念
1.对称加密与非对称加密
为了保证消息的保密性,就需要用到加密和解密。加解密算法目前主流的分为对称加密和非对称加密。
(1)对称加密(共享密匙加密):客户端和服务器公用一个密匙用来对消息加解密。
客户端和服务器约定好一个加密的密匙;客户端在发消息前用该密匙对消息加密,发送给服务器后,服务器再用该密匙进行解密拿到消息。
优点:
解决了 HTTP 中消息保密性的问题。
缺点:
虽然保证了消息保密性,但是因为客户端和服务器共享一个密匙,这样就使得密匙特别容易泄露;因为密匙泄露风险较高,所以很难保证消息来源的可靠性、消息的完整性和准确性。
(2)非对称加密(公有密匙加密):客户端和服务端均拥有一个公匙和一个私匙。公匙可对外暴露,私匙仅自己可见。
使用公匙加密的消息,只有对应的私匙才能解开;相反,使用私匙加密的消息,只有公匙才能解开。
这样客户端在发送消息前,先用服务器的公匙对消息进行加密,服务器收到后再用自己的私匙进行解密。
优点:
缺点:
2.数字证书与数字签名
为解决非对称加密中公匙来源的不安全性,可使用数字证书和数字签名来解决。
(1)数字证书的申请
(2)数字证书如何起作用
服务器在获取到数字证书后,服务器会将数字证书发送给客户端,客户端需用 CA 的公匙解密数字证书并验证数字证书的合法性。
Q:如何拿到 CA 的公匙?
A:我们的电脑和浏览器中已经内置了一部分权威机构的根证书,这些根证书中包含了 CA 的公匙。
下图用图解的方式说明一般的证书申请及其使用过程:
二、HTTPS原理
HTTPS 没有采用单一的技术去实现,而是根据他们的特点,充分的将这些技术整合进去,以达到性能与安全最大化。
这套整合的技术称之为 SSL(安全套接层),因此 HTTPS 并非是一项新的协议,它只是在 HTTP 上披了一层加密的外壳。
HTTPS 的建立,先看一下流程图:
把 HTTPS 从建立到断开分为 6 个阶段,12 个过程。
下面对 12 个过程做解释:
另外,在以上流程图中,应用层发送数据时会附加一种叫做 MAC的报文摘要。MAC 能够查知报文是否遭到篡改,从而保证报文的完整性。
用图解进行说明:
总结:HTTPS 先利用数字证书保证服务器端的公匙可安全无误的到达客户端;再用非对称加密安全的传递共享密匙;最后用共享密匙安全的交换数据。
三、HTTPS的使用
Q:HTTPS 那么的安全,是不是我们在什么场景下都要去使用 HTTPS 进行通信呢?
A:答案是否定的。
1.HTTPS 虽提供了消息安全传输的通道,但每次消息的加解密十分耗时,消耗系统资源。
因此除非在一些对安全性比较高的场景下,比如银行系统,购物系统中必须要使用HTTPS 进行通信,其他一些对安全性要求不高的场景,没必要使用 HTTPS。
2.使用 HTTPS 需要使用到数字证书,但一般权威机构颁发的数字证书都是收费的,而且价格也是不菲的。
因此对于一些个人网站来讲,若对安全性要求不高,没必要使用 HTTPS。