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

  • 相关阅读:
    01-服务与服务间的通信
    Golang 中的 String、rune 和 byte
    JAVA【操作BLOB类型字段】【批量操作】
    Pdfium.Net SDK 9.71.39 NEW-Pdfium.Net SDK
    [PAT练级笔记] 32 Basic Level 1032 挖掘机技术哪家强
    关于组织开展2022年广东省技术先进型服务企业认定工作的通知
    99%的人都把三层架构和SpringMVC的关系搞错了
    更好的用户体验, 开源实时监控新版发布
    Python制作GUI学生管理系统,不会的看这里
    ubuntu实现定时重启
  • 原文地址:https://blog.csdn.net/xuan971130/article/details/126461802