HTTPS 详解

简介

本篇博客主要是针对https进行了一个剖析,我会从以下三个方面进行讲解:

  • 为什么要有https?他用来解决什么呢?
  • https的通信过程
  • httpshttp的区别

下面首先说下为什么要存在https.

为什么要有https

大家应该都知道http是明文传输,那么明文传输就会造成以下风险

  • 窃听风险,第三方可以获知通信内容
  • 篡改风险,第三方可以修改通信内容
  • 冒充风险,第三方可以冒充他人身份参与通信

那么https就出现了,它主要的目的就是

  • 所有信息都是加密传播,第三方无法窃听
  • 具有校验机制,一旦被篡改,通信双方会立刻发现
  • 配备身份证书,防止身份被冒充

那么它是怎么实现的呢?他利用的是SSL/TLS协议,这个协议位于会话层,也就是传输层tcp之上,那么SSL/TLS协议主要干了什么呢,也就是https的通信过程。

https的通信过程

首先,我花了一个简易的图,大家可以先看下:
在这里插入图片描述
可以看出,上图有4次传递,这个过程就称为SSL/TLS的四次握手,下面咱们就具体讲下:

  • 首先客户端向服务端的443端口发送请求,告诉服务端自己支持的加密方法TLS的版本号一个随机数A
  • 服务端收到后,利用RSA算法生成非对称秘钥(公钥和私钥),然后服务端会利用哈希算法(sha256)对网站内容进行hash,生城一个数字签名(指纹),防止篡改, CA机构会利用自己的私钥对证书的内容和证书签名进行加密,内容包括网站的网址、网站的公钥、证书的有效期等,最后把选择的加密方法TLS的版本号数字证书一个随机数B告诉客户端
  • 当客户端收到后,首先是要验证证书的身份
    • 首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有找到,此时就会提示用户该证书是不是由权威机构颁发,是不可信任的。如果查到了对应的机构,则取出该机构颁发的公钥
    • 接下来就验证网站内容是否被篡改,原理就是浏览器根据签名的哈希算法针对证书的内容进行hash,然后把此次hash结果和解密出来的数字签名(指纹)进行比较,如果相同,则说明没有被篡改,就可以正常使用解密出来的网站公钥了。
    • 最后浏览器会再次生成一个随机数C,利用网站的公钥加密,发送给服务端
  • 服务端拿到后,利用私钥进行解密,得到随机数C,这时候客户端和服务端就都拥于三个随机数了,接着就按照之前约定好的加密方式,利用这三个随机数计算生成对称秘钥,然后利用这个对称秘钥加密网页内容并传输给客户端
  • 客户端收到后,同样按照之前约定好的加密方式,利用这三个随机数计算生成对称秘钥进行解密。

至此,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用对称秘钥加密内容。

需要特别注意的是,客户端和服务端是利用非对称秘钥进行加密,而通信则使用对称秘钥,为什么这么做呢?这是因为非对称加密计算量比较大,运算速度慢,但是安全,而对称加密不安全,但是运算速度非常快~

https和http的区别

  • http端口是80,而https端口是443
  • http是超文本传输协议,信息是明文传输,https是SSL/TLS协议加密传输
  • https协议需要到CA申请证书
  • http是无状态的,https具有身份认证,校验机制,比http安全
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值