HTTPS

 HTTPS 就是 HTTP + SSL/TLS

SSL(Secure Sockets Layer 安全套接层协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。

 Http由于是明文进行传输,所以会出现窃听、篡改、冒充等风险

对称加密

 

 对称加密就是双方都用一个密钥进行加密

优点:加密计算量小,速度快,

缺点:交易双方都使用同样钥匙,安全性得不到保证

            每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长

非对称传输

 非对称加密使用两个密钥来进行加密和解密,两个密钥分为公钥和私钥

如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密
优点:密钥分配简单,可以满足互不相识的人之间进行私人谈话时的保密性要求

缺点:效率低,计算量大

SSL/TSL加密

为保证安全性,同时拥有较快的加密速度,https中使用非对称加密与对称加密相结合的方式

 利用对称加密算法加密数据,用非对称加密算法加密对称加密算法密钥

 

 

 

  1. client向server发送请求https://baidu.com,然后连接到server的443端口。

  2. 服务端必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,这套证书其实就是一对公钥和私钥。

  3. 传送证书 这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间、服务端的公钥,第三方证书认证机构(CA)的签名,服务端的域名信息等内容。

  4. 客户端解析证书 这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值(密钥)。然后用证书对该随机值进行加密。

  5. 传送加密信息 这部分传送的是用证书加密后的密钥(随机值),目的就是让服务端得到这个密钥(随机值),以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

  6. 服务端加密信息 服务端用私钥解密,得到了客户端传过来的密钥(随机值),然后把内容通过该值进行对称加密

  7. 传输加密后的信息 这部分信息是服务端用密钥(随机值)对称加密后的信息,可以在客户端被还原。

  8. 客户端解密信息 客户端用之前生成的密钥(随机值)解密服务端传过来的信息,于是获取了解密后的内容。

   建立连接的步骤:

  1. 请求由客户端发起。客户端发送Client Hello报文开始SSL通信。报文中包含了SSL的版本,加密组件等信息。
  2. 服务器收到请求会以Server Hello报文作为应答,报文内容和请求时差不多(经过筛选的)。
  3. 紧接着服务器再发送一条Certificate报文,报文中包含了证书。
  4. 服务器活还没干完,还需要发送Server Hello Done报文给客户端,表示SSL握手结束。
  5. 然后该客户端了,客户端会回应一个Client Key Exchange报文,报文包含用步骤3中公钥加密后的随机密码串。
  6. 接着客户端继续发送Cipher Spec(密码规范)报文,提示服务器,用步骤5的随机密码串作为密钥加密之后的通信。
  7. 然后客户端发送Finished报文,表示这次协商结束,是否成功还得看服务器能不能解密该报文。
  8. 服务器没问题,发送Change Cipher Spec报文。
  9. 服务器发送Finished。
  10. SSL连接完成,接下来使用HTTP进行通信。
  11. 最后由客户端断开连接。发送close_notify报文。

数字证书                                                                                                             

服务器向客户端发送自己的证书时,如何保证证书没有被篡改呢?

 方法就是数字签名

                                                                                                                                                                                                 

                                                   

       每个证书除了包含该证书的日期、域名、序列号、公钥等信息,还包含一个数字签名,这个数字签名是颁发证书的机构通过非对称加密算法,将证书的明文先进行报文摘要算法,然后在利用密钥加密生成的。           

        在传输过程中,此证书上的内容如果被篡改,客户端利用公钥对签名进行解密与证书明文进行报文摘要的的结构就会不同。客户端就可以发现此证书有问题

那问题来了,解密这个签名的公钥客户端是怎么知道的呢?

如果公钥是通过网络传输方式告知的依然不能避免被掉包

所以此公钥是直接存在我们操作系统中的某个证书中的,这个证书也叫Root CA证书,所以这里是通过我们操作系统中内置的证书中的公钥来解密签名,进而验证服务端证书的合法性

还有一个问题,黑客可以自己申请一个合法证书调包我们原本的证书,按道理来说我们利用操作系统中的证书进行验证此证书是也是可以通过的,但实际上客户端还会验证证书的域名是否是自己请求的域名。

其实Charles(http代理服务器)就是利用以上方法实现抓包,所以在使用之前需要安装Charles的证书。

                                                                                                                                          证书链 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

 通常服务器的证书都不能直接使用根证书直接验证,因为服务器使用的一般是中间的二级或者三级证书,客户端收到的证书一般会包含整个证书链,此时客户端会的根证书会用自己的公钥验证自己的签名和中间证书的签名,中间证书的签名又验证下一级服务器证书的签名。                              参考:

    Https 原理与工作流程及证书链校验 - 走看看本文为博主原创,未经允许不得转载: 目录 HTTP传输三大风险 安全通信原则 HTTPS定义 TLS/SSL 协议及加密算法 HTTPS工作流程 HTTPS协议和HTTP协议的区别 CA机构 证书链校http://t.zoukankan.com/zjdxr-up-p-14359904.html   

HTTPS:对称加密和非对称加密相结合 - 知乎定义HTTP+ 加密 + 认证 + 完整性保护=HTTPS 。可以这么理解,HTTPS是安全版的HTTP,它不是一个新的协议,而是HTTP 加上加密处理(解决HTTP通信使用明文的问题)和认证(解决HTTP无法验证通信方的身份问题)以及完…https://zhuanlan.zhihu.com/p/354110178             

18 张图彻底弄懂 HTTPS 的原理!https://baijiahao.baidu.com/s?id=1685474345600994715&wfr=spider&for=pc                                                                                                                                                                                                                                                                                                                                                                                     

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值