首页 > 其他分享 >HTTPS 如何建立连接 -- SSL/TLS 的建⽴过程

HTTPS 如何建立连接 -- SSL/TLS 的建⽴过程

时间:2022-08-30 20:22:26浏览次数:45  
标签:TLS 加密 -- 秘钥 SSL 服务器 客户端

前两步:(握手阶段)

建立 SSL/TLS 协议

涉及四次通信

一、ClientHello

由客户端向服务器发起加密通信请求

内容:

  1. 客户端⽀持的 SSL/TLS 协议版本
  2. 客户端⽣产的 随机数c1 ( Client Random ) (后⾯⽤于⽣产「会话秘钥」)
  3. 客户端⽀持的 密码套件 列表

二、SeverHello

服务器收到客户端请求后,向客户端发出响应

内容:

  1. 确认 SSL/ TLS 协议版本 ( 如果浏览器不⽀持,则关闭加密通信 )
  2. 服务器⽣产的随机数s2( Server Random )(后⾯⽤于⽣产「会话秘钥」)
  3. 确认的密码套件列表
  4. 服务器的 数字证书

三、客户端回应

⾸先通过浏览器或者操作系统中的 CA 公钥,确认服务器的数字证书的真实性。

如果证书没有问题,客户端会从数字证书中取出服务器的公钥,然后使⽤它加密报⽂ 。

内容:

  1. 被服务器公钥加密的 一个随机数c3。
  2. 加密通信算法改变通知。( 表示随后的信息都将⽤「会话秘钥」加密通信 )
  3. 客户端握⼿结束通知。 (包含 之前所有内容的数据摘要,⽤来供服务端校验)

四、服务器的最后回应

至此服务器和客户端同时有三个随机数,接着就⽤双⽅协 商的加密算法,各⾃⽣成本次通信的「会话秘钥」 。

内容:

  1. 加密通信算法改变通知。( 表示随后的信息都将⽤「会话秘钥」加密通信 )
  2. 服务器握⼿结束通知 。(包含 之前所有内容的数据摘要,⽤来供客户端校验)

 


至此,整个 SSL/TLS 的握⼿阶段全部结束。接下来,客户端与服务器进⼊加密通信,就完全是使⽤普通的 HTTP 协议,只不过⽤「会话秘钥」加密内容 。

标签:TLS,加密,--,秘钥,SSL,服务器,客户端
From: https://www.cnblogs.com/tiddler/p/16640684.html

相关文章

  • 杭州市民卡面试题【杭州多测师】【杭州多测师_王sir】
    市民卡面试题:1.自我介绍2.项目介绍一下3.项目里做接口的部分是哪些4.自动化做过么5.接口用什么做的6.自动化用什么做的7.Linux查文件命令8.数据库用过么  ......
  • FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式
    FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式_boker的博客-CSDN博客_ftp传输二进制 https://blog.csdn.net/z507263441/article/details/38586769FTP的传输有......
  • 1.二分查找
    1.模板intsearch(vector<int>&nums,inttarget){intl=0;intr=nums.size();intmid;while(l<r){mid=(l+r)/2;if(nums[mid]<t......
  • 私信列表(十四)
    一、Message表结构设计from_id:发送方用户idto_id:接受方用户idconversation_id:标识一个会话,不区分发送方和接收方,用户id小的在前,大的在后二、数据访问层私信......
  • leetcode704基本二分查找
    intsearch(vector<int>&nums,inttarget){intl=0;intr=nums.size()-1;cout<<r<<endl;intmid;while(l<r){mid=(l+r)/2;......
  • leetcode35二分查找并插入
    intsearchInsert(vector<int>&nums,inttarget){intl=0;intr=nums.size();intmid=0;while(l<r){mid=(l+r)/2;......
  • docker: Error response from daemon: driver failed programming external connectiv
    docker容器做端口映射报错docker:Errorresponsefromdaemon:driverfailedprogrammingexternalconnectivityonendpointnginx01(7c843d5ed27818f58179a567ebab7......
  • 链式编程学习
    链式编程学习什么是链式编程在我们编写代码过程中听到过很多说法;像面向切面编程、函数式编程、面向对象编程、泛式编程、面向接口等。所谓的链式编程,则是类似与StringBu......
  • VM虚拟机安装和使用
    作者:菘蓝时间:2022/8/30========================================================================================================================任务一:安装VMwar......
  • leetcode278二分变形
    longlongfirstBadVersion(intn){longlongl=1;longlongr=n;longlongmid=1;//执行完之后l=r即为答案while(l<r){......