https是如何保证数据传输的安全:
https实际就是在TCP层与http层之间加入了SSL/TLS来为上层的安全保驾护航,主要用到对称加密、非对称加密、证书,等技术进行客户端与服务器的数据加密传输,最终达到保证整个通信的安全性。
https的安全传输机制在传输层,http在应用层。
Q:假设我们要购买阿里云的产品,那么怎么确保我们访问的网站不是钓鱼网站呢?或者说怎么确保我们在访问的过程中数据不被篡改和监听呢?
A:这时就需要一个可信的第三方机构(CA),CA会颁发一个数字证书给阿里云。当用户访问阿里云网站的时候,阿里云服务器会把数字证书发送给用户的客户端,客户端会校验数字证书的合法性,如果检验通过,直接建立https链接,如果校验失败,则直接报错。
Q:如果有中间什么人拿到阿里云的数字证书(这个很容易拿到),是不是就可以骗过用户了呢?
A:答案是否定的。因为由于非对称加密的原因,即使中间人拿到的阿里云的数字证书,也无法解密客户端发送的密文信息,因为只有服务端的私钥才能解密,而私钥是保存在服务端或者银行或者保险柜中,一般人是拿不到的。
Q:用户客户端是如何校验数字证书的?
A:数字证书由两部分组成,第一部分是明文,第二部分是密文。数字证书校验的大概意思是密文通过公钥解密之后和明文比较,如果相等则说明校验通过。
SSL/TLS协议作用:
- 认证用户和服务器,确保数据发送到正确的客户机和服务器;
- 加密数据以防止数据中途被窃取;
- 维护数据的完整性,确保数据在传输过程中不被改变;
HTTPS工作原理:
- 首先HTTP请求服务端生成证书,客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;
- 客户端如果校验通过后,就根据证书的公钥的有效, 生成随机数,随机数使用公钥进行加密(RSA加密);
- 消息体产生后,对它的摘要进行MD5(或者SHA1)算法加密,此时就得到了RSA签名;
- 发送给服务端,此时只有服务端(RSA私钥)能解密;
- 服务端利用私钥解密得到的随机数,再用AES加密,作为密钥(此时的密钥只有客户端和服务端知道);