• http和https的区别、什么是对称密钥,什么是非对称密钥


    最近花了好长时间才搞懂https,所以写了该博文进行总结。许多细节之处,还有待完善,如有错误,欢迎大家在评论区批评指正。

    1 区别

    (1)http是明文传输的,数据都是未加密的,安全性较差。https(SSL/TLS+http)数据传输过程是加密的,安全性较好。

    (2)使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。

    (3)HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,而 HTTPS除了 TCP,还要加上 ssl 握手。

    (4)http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

    (5)HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源

    2 http问题

    • 明文传输

    • 不会验证对方身份

    • 无法保证数据的完整性和安全性

    3 对称加密和非对称加密

    对称加密用的同一个密钥。非对称加密有两个密钥,一个公钥,一个私钥。

    在https的过程中,使用了两次非对称加密

    • CA对服务器公钥以及其他新的信息使用私钥加密,形成数字签名(证书),服务器发送给客户端以后。CA用公钥进行解密,得到服务器的公钥。

    • 客户端将会话密钥 使用服务器的公钥,加密以后,发送给服务器,服务器使用自己的私钥对数据进行解密,得到会话密钥。

    之后的通信就是使用会话密钥来进行通话的。会话密钥的通信就是对称加密

    4 https

    https是使用ssl+http来进行数据传输的。

    首先建立ssl连接。(前提:服务器向CA申请证书。并把自己的公钥给CA,CA将服务器的公钥以及一些其他信息使用CA的私钥进行加密,生成数组签名(证书))

    (1)首先客户端向服务器发送请求。(包含随机数、TLS版本号、)

    (2)服务器向客户端发送自己的证书。(包含随机数、确认TLS版本号)

    (3)客户端使用内CA的公钥(CA的公钥已经事先置入到了浏览器或操作系统中)进行解密,并且取出服务器的公钥。

    (4)客户端使用 客户端生成的随机数以及服务器生成的随机数,以及pre-master生成会话秘钥。

    (5)客户端使用服务器的公钥 对会话秘钥进行加密,并发送给客户端

    (6)服务器收到 以后,用自己的私钥对信息进行解密,得到会话秘钥

    (7)在后续传输内容的过程中,就可以使用对称秘钥来对数据进行加密。保证了数据的安全性。

  • 相关阅读:
    C++ //练习 10.37 给定一个包含10个元素的vector,将位置3到7之间的元素按逆序拷贝到一个list中。
    MQTT的认识(3)- 案例
    第18节 动态规划一讲
    数字员工:提效利器,用好数字化技术工具,年节省成本超百万
    代码自动化审核操作详解(svnchecker+checkstyle)
    路径某个位置更换名称-python
    十分钟了解MES系统的发展历程和标准体系
    基于PyTorch的flappy bird游戏
    JavaScript -- 字符串常用方法及示例代码介绍
    iOS CI/CD 持续集成 组件化专题二 Cocoapods /Cocoapods Packager 问题汇总
  • 原文地址:https://blog.csdn.net/xuan971130/article/details/126461802