https

1. 概述

HTTPS还是由HTTP进行通信,不过使用了SSL/TLS 来加密数据。所以它可以提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
HTTP默认端口是80端口,HTTPS默认工作的端口是443。
工作流程:

  1. TCP三次握手建立连接
  2. 客户端验证服务端数字证书
  3. 协商对称加密算法,hash算法
  4. SSL安全加密隧道协商完成
  5. 数据使用加密方式参数,用协商好的加密算法和密钥加密,保证数据安全;用hash算法保证数据一致,不被篡改
2. HTTP的优缺点:
  1. 明文传输,安全性差。
  2. HTTP响应速度快,只需要三次握手建立连接,HTTPS需要9次,总共12次
  3. HTTPS需要CA认证
  4. HTTPS使用了加密算法,消耗资源更多
3. 理论知识
  1. 对称加密
    简单理解就是加解密用同一个秘钥,常见的算法有DES,AES
  2. 非对称加密
    简单讲,就是用公钥加密的数据,只能用私钥解密,反之亦然。一般来讲,私钥加密数据用作签名,对应公钥解密数据用作验签。常见的算法有RSA,DSA,ECC
  3. 哈希算法
    又称摘要算法。从原数据中计算输出固定长度的数据,相对原数据很小的数据,这些“指纹”可以唯一确定的原数据的身份。虽然不是绝对唯一,有可能会存在碰撞,算法越好概率越低。常用作验证数据的完整性和正确性。常见的MD5,SHA-1,SHA-256
  4. 数字签名
    数字签名其实是上面讲的非对称加密哈希算法的结合应用。
    举一个例子,假设A要给B发送一段数据,那么A首先用摘要算法得到数据摘要,然后通过A的私钥进行加密,加密之后的数据,我们称之为A的签名。 数据和A的签名,经过网络传输到达B端,B用同样的摘要算法得到数据摘要,然后在用A的公钥对A的签名进行解密得到数据摘要,然后比较两个数据摘要,如果一样则验签成功。如果数据在传输过程中发生丢失会被人篡改,那么数据摘要将会不一致。如果篡改者想把数据和数据摘要改成对应的,那么必须要获得A的私钥才可以。也就是说只有A的私钥才可以签名,不可抵赖。
4. HTTPS的工作原理

直接讲HTTPS的流程,可能对刚刚接触的这个同学不太友好。这里简述一下发展的流程。

4.1 简单的HTTP通信
C S Client Hello Server Hello [数据] [数据] C S

存在的问题

  1. 数据容易被截获
  2. 数据容易被篡改
  3. 通信对象容易被冒充
    可以说安全性很差
4.2 数据加密的通信
C S Client Hello Server Hello [加密的数据] [加密的数据] C S

通信双方每次通信都使用秘钥对数据进行加密,这样即使第三者拿到通信数据,也没法直接篡改。但这个方案也存在问题,那就是通信的对象可能有很多个,他们之间都要维护彼此通信的秘钥,数量庞大,而且很容易被泄漏。

4.3 非对称加密数据
C S Client Hello Server Hello [S公钥加密的数据] [C公钥加密的数据] C S

即用对方的公钥加密数据,这样只有对方的私钥能解密。但是由于公钥是公开的,很容易被人伪装。而且非对称加解密要比对称加解密要复杂,消耗资源要高。

4.4 对称加密和非对称加密相结合
C S Client Hello Server Hello [S公钥加密的对称密钥及对称加密算法] [确认] [对称密钥加密] [对称密钥加密] C S

这个方案结合非对称加密保密性强和对称加密加解密快的特点。而且对称密钥可以随机生成,减小了被破译的可能小。
这里面还存在一个问题就是,对方如何获取自己的公钥。获取S的公钥可以通过PKI。

4.5 SSL

HTTPs基于SSL
image

  1. client向server发送请求,生成随机数1,发送包括随机数1和加密套件1的数据。
  2. server响应握手信息,生成随机数2,发送包括随机值2和加密套件2的数据,加密套件2是加密套件1的子集。
  3. server发送数字证书。数字证书可以自己制作也可以向认证机构申请。自己颁发的证书需要客户端验证通过,否则不能同行。证书主要就是公钥,还包含了证书的颁发机构、过期时间、第三方证书认证机构(CA)的签名、服务端域名信息等。
  4. 客户端解析证书,先会验证公钥是否有效,比如颁发机构,过期时间等等。如果ok,那么就生成一个随机值作为预主秘钥
  5. 客户端认证证书通过通过[随机值1随机值2预主秘钥]生成 会话秘钥。然后通过证书的公钥加密预主秘钥。
  6. 传送加密信息传送的是公钥加密的预主秘钥。
  7. 服务端通过[随机值1随机值2预主秘钥]获得 会话秘钥
  8. 客户端用会话秘钥加密消息发送给服务端
  9. 服务端用会话秘钥加密消息回传给客户端,如果成功,则表明SSL层连接建立完成。
  10. 接下来是就是使用会话秘钥进行正常通信。

参考:
[0] https://www.runoob.com/w3cnote/http-vs-https.html
[1] https://baike.baidu.com/item/HTTPS/285356?fr=aladdin
[2] https://blog.csdn.net/xiaoming100001/article/details/81109617
[3] TCP/IP详解
[4] 文中图片来自CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值