https交互过程

作者&投稿:英委 (若有异议请与网页底部的电邮联系)
~

https的交互过程如下:
1、客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器。
2、服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数。
3、客户端对服务器的证书进行验证,并抽取服务器的公用密钥;然后,再产生一个称作pre_master_secret的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加/解密),并将加密后的信息发送给服务器;
4、客户端与服务器端根据pre_master_secret以及客户端与服务器的随机数值独立计算出加密和MAC密钥;
5、客户端将所有握手消息的MAC值发送给服务器;
6、服务器将所有握手消息的MAC值发送给客户端。



在这里整理一下最近这两天整理的https的相关知识。

大家都知道要使用https,需要在网站的服务器上配置https证书(一般是nginx,或者tomcat),证书可以使用自己生成,也可以向专门的https证书提供商进行购买。这两种的区别是自己生成的证书是不被浏览器信任的,所以当访问的时候回提示不安全的网站,需要点击信任之后才能继续访问

自己生成的

而购买的https证书会提示安全

DV,OV

EV

这是因为浏览器中预置了一些https证书提供商的证书,在浏览器获取到服务器的https证书进行验证的时候就知道这个https证书是可信的;而自己生成的证书,浏览器获取到之后无法进行验证是否可信,所以就给出不安全的提示。

下面对具体的一些知识点进行介绍

1. 什么是https

https简单的说就是安全版的http,因为http协议的数据都是明文进行传输的,所以对于一些敏感信息的传输就很不安全,为了安全传输敏感数据,网景公司设计了SSL(Secure Socket Layer),在http的基础上添加了一个安全传输层,对所有的数据都加密后再进行传输,客户端和服务器端收到加密数据后按照之前约定好的秘钥解密。

2. 加密和解密

Https的发展和密码学的发展是分不开的。大家应该知道加密方式可以大体分为对称加密和非对称加密(反正我就知道这两种)

对称加密,就是加密和解密都是用同一个秘钥,这种方式优点就是速度快,缺点就是在管理和分配秘钥的时候不安全。

非对称加密算法,非对称加密有一个秘钥对,叫做公钥和私钥,私钥自己持有,公钥可以公开的发送给使用的人。使用公钥进行加密的信息,只有和其配对的私钥可以解开。目前常见的非对称加密算法是RSA,非对称的加密算法的优点是安全,因为他不需要把私钥暴露出去。

在正式的使用场景中一般都是对称加密和非对称加密结合使用,使用非对称加密完成秘钥的传递,然后使用对称秘钥进行数据加密和解密

3. https证书的申请流程

1 在服务器上生成CSR文件(证书申请文件,内容包括证书公钥、使用的Hash算法、申请的域名、公司名称、职位等信息)

可以使用命令在服务器上生成;也可以使用线上的工具进行生成,线上的工具会把公钥加入到CSR文件中,并同时生成私钥。

CSR文件内容

2 把CSR文件和其他可能的证件上传到CA认证机构,CA机构收到证书申请之后,使用申请中的Hash算法,对部分内容进行摘要,然后使用CA机构自己的私钥对这段摘要信息进行签名,

CA机构进行签名

3 然后CA机构把签名过的证书通过邮件形式发送到申请者手中。

4 申请者收到证书之后部署到自己的web服务器中。下面会在写一篇关于部署的文章

当然这是不通过CA代理机构进行申请的流程,现在网上有好多CA的代理机构,像腾讯云,阿里云都可以申请https证书,流程都差不多。

阿里云申请证书流程

4. 客户端(浏览器)和服务器端交互流程

客户端服务端交互

client Hello,客户端(通常是浏览器)先向服务器发出加密通信的请求

(1) 支持的协议版本,比如TLS 1.0版。

(2) 一个客户端生成的随机数 random1,稍后用于生成"对话密钥"。

(3) 支持的加密方法,比如RSA公钥加密。

(4) 支持的压缩方法。

服务器收到请求,然后响应 (server Hello)

(1) 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。

(2) 一个服务器生成的随机数random2,稍后用于生成"对话密钥"。

(3) 确认使用的加密方法,比如RSA公钥加密。

(4) 服务器证书。

证书内容

证书内容

客户端收到证书之后会首先会进行验证

验证流程

我们知道CA机构在签发证书的时候,都会使用自己的私钥对证书进行签名

证书里的签名算法字段 sha256RSA 表示,CA机构使用sha256对证书进行摘要,然后使用RSA算法对摘要进行私钥签名,而我们也知道RSA算法中,使用私钥签名之后,只有公钥才能进行验签。

如果我们使用的是购买的证书,那么很有可能,颁发这个证书的CA机构的公钥已经预置在操作系统中。这样浏览器就可以使用CA机构的公钥对服务器的证书进行验签。确定这个证书是不是由正规的CA机构颁发的。验签之后得到CA机构使用sha256得到的证书摘要,然后客户端再使用sha256对证书内容进行一次摘要,如果得到的值和验签之后得到的摘要值相同,则表示证书没有被修改过。

如果验证通过,就会显示上面的安全字样,如果服务器购买的证书是更高级的EV类型,就会显示出购买证书的时候提供的企业名称。如果没有验证通过,就会显示不安全的提示。

生成随机数

验证通过之后,客户端会生成一个随机数pre-master secret,然后使用证书中的公钥进行加密,然后传递给服务器端

PreMaster secret

PreMaster Secret是在客户端使用RSA或者Diffie-Hellman等加密算法生成的。它将用来跟服务端和客户端在Hello阶段产生的随机数结合在一起生成 Master Secret。在客户端使用服务端的公钥对PreMaster Secret进行加密之后传送给服务端,服务端将使用私钥进行解密得到PreMaster secret。也就是说服务端和客户端都有一份相同的PreMaster secret和随机数。

PreMaster secret前两个字节是TLS的版本号,这是一个比较重要的用来核对握手数据的版本号,因为在Client Hello阶段,客户端会发送一份加密套件列表和当前支持的SSL/TLS的版本号给服务端,而且是使用明文传送的,如果握手的数据包被破解之后,攻击者很有可能串改数据包,选择一个安全性较低的加密套件和版本给服务端,从而对数据进行破解。所以,服务端需要对密文中解密出来对的PreMaster版本号跟之前Client Hello阶段的版本号进行对比,如果版本号变低,则说明被串改,则立即停止发送任何消息。

pre-master secret

服务器收到使用公钥加密的内容,在服务器端使用私钥解密之后获得随机数pre-master secret,然后根据radom1、radom2、pre-master secret通过一定的算法得出session Key和MAC算法秘钥,作为后面交互过程中使用对称秘钥。同时客户端也会使用radom1、radom2、pre-master secret,和同样的算法生成session Key和MAC算法的秘钥。

生成session Key的过程中会用到PRF(Pseudorandom Function伪随机方法)来生成一个key_block,然后再使用key_block,生成后面使用的秘钥。

key_block = PRF(SecurityParameters.master_secret,"key expansion",SecurityParameters.server_random +SecurityParameters.client_random);

PRF是在规范中约定的伪随机函数

在信息交互过程中用到的秘钥有6个分别是。客户端和服务器端分别使用相同的算法生成。

秘钥名称秘钥作用

client_write_MAC_key[SecurityParameters.mac_key_length]客户端发送数据使用的摘要MAC算法

server_write_MAC_key[SecurityParameters.mac_key_length]服务端发送数据使用摘要MAC算法

client_write_key[SecurityParameters.enc_key_length]客户端数据加密,服务端解密

server_write_key[SecurityParameters.enc_key_length]服务端加密,客户端解密

client_write_IV[SecurityParameters.fixed_iv_length]初始化向量,运用于分组对称加密

server_write_IV[SecurityParameters.fixed_iv_length]初始化向量,运用于分组对称加密

然后再后续的交互中就使用session Key和MAC算法的秘钥对传输的内容进行加密和解密。

具体的步骤是先使用MAC秘钥对内容进行摘要,然后把摘要放在内容的后面使用sessionKey再进行加密。对于客户端发送的数据,服务器端收到之后,需要先使用client_write_key进行解密,然后使用client_write_MAC_key对数据完整性进行验证。服务器端发送的数据,客户端会使用server_write_key和server_write_MAC_key进行相同的操作。

链接:https://www.jianshu.com/p/b0b6b88fe9fe


什么是PS呀,教教我
1 "补充说明一下." 一般用于回贴或邮件的末尾,用于对自己的发言做补充 例如: 今天我看到他和一个女的出去了.(PS:我可不是嫉妒哦~)2 "play station"的缩写,是索尼司出的游戏机.也用来指在PS上玩的游戏.现在已经出到三代.例如:嗨,下午去打PS吧.我请客.去XXX路口的那家.3 "photoshop"的缩写...

PHOTOSHOP cs2 安装时带的IMAGEREADY是什么
ImageReady与Photoshop间可以进行图片的同步操作(即同时对一个图片进行处理)。只要在Photoshop中的工具箱下方按下图标就可以跳转到ImageReady界面,同样在ImageReady中也可以点击这个图标进入到Photoshop中去。虽然Photoshop的后续版本逐渐加强了网页图像的制作功能,但ImageReady在图像优化、动画制作、Web图片处理方面...

什么是K8S?
curl -ks -H "Authorization: Bearer \\ ttps:\/\/master:6443\/api\/v1\/namespaces\/{namespace}\/secrets " 攻击kubelet总体步骤如下: 访问pods获取信息 获取namespace、podsname、containername 执行exec获取token \/var\/run\/secrets\/kubernetes.io\/serviceaccount 利用Token访问API Server进行对pods操作。 攻击dashboard d...

说说常用的UNIX命令?
.交互式进程:可以前台或后台执行,前后台可切换 .批处理进程:不通过终端提交,一般将它们放在任务队列中顺序执行. 如通过 at 和 crontab提交的任务. .deamon:永不终止的进程,等待响应来自其他进程的服务请求.如sendmail, named(DNS), POP3及apache等. 进程的相关属性: PID Real UID Effective UID (SUID) Real GID...

40万级双门跑车 奥迪TT成交价低至39.03万元
MMI导航系统和12.3英寸液晶仪表盘等。动力方面 奥迪TT搭载一台1.8T涡轮增压发动机,最大功率132kW(180PS),峰值扭矩280N·m,传动系统匹配6速S tronic双离合变速箱。据数据显示,奥迪TT0-100km\/h的加速时间为7s,而极速为228km\/h。本文来源于汽车之家车家号作者,不代表汽车之家的观点立场。

职校有什么专业?
电工模块:电工基础、电气安全基本知识、安全操作规程、防触电技术、TT系统防护、高压电器线路、变配电所的运行管理、二次线路控制。笔记本电脑维修模块:由湖南阳光电子技术学校老师全面系统讲解:笔记本保护隔离单元电路、系统供电单元电路、CPU供电单元电路、充电单元电路、局部供电单元电路等工作原理及故障维修。

奥迪TT和A6的价格?
TT 3.2 价格:64.5万 - 69万 (原装进口) 全新奥迪TT 3.2 quattro目前进入中国市场的只有一款车,该车搭载了一台3.2L自然吸气 V6发动机,该发动机性能基本和老款TT 3.2性能一样,输出的最大功率为184Kw(250PS)\/6300rpm,最大扭矩为320Nm\/2800rpm,如此的动力推动这台1.4吨的小车绰绰有...

什么是文件后缀
txt为扩展名(文本、外语全称:Text),表示这个文件是一个纯文本文件。一个文件可以有或没有扩展名。对于打开文件操作,没有扩展名的文件需要选择程序去打开它,有扩展名的文件会自动用设置好的程序去尝试打开,文件扩展名是一个常规文件的构成部分,但一个文件并不一定需要一个扩展名。

什么是photo shop
Photoshop Extended 支持常见的 3D 交换格式, 包括 3DS、OBJ、U3D、KMZ 和 COLLADA, 因此您可以导入、查看大多数 3D 模型并与其交互。精确的选择工具可用于进行详细的编辑:体验各种工具以进行详细的编辑, 包括用于进行快速选择的新工具。松散地在您要选择的图像区域上绘图, 而“快速选择”工具会自动为您完成选择。

工布江达县13680619441: http和https区别 具体是什么意思
广晨同贝: HTTP全称是超文本传输协议(Hypertext transfer protocol)是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议. HTTPS全称是超文本传输安全协议(Hyper Text Transfer Protocol over ...

工布江达县13680619441: 访问https url,从请求发送到结果返回,具体经理了哪些过程 -
广晨同贝: 1、输入地址2、浏览器查找域名的 IP 地址 这一步包括 DNS 具体的查找过程,包括:浏览器缓存->系统缓存->路由器缓存...3、浏览器向 web 服务器发送一个 HTTP 请求4、服务器的永久重定向响应(从 http://example.com 到 http://www.example.com)5、浏览器跟踪重定向地址6、服务器处理请求7、服务器返回一个 HTTP 响应8、浏览器显示 HTML9、浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS等等)10、浏览器发送异步请求

工布江达县13680619441: https建立通讯 还需要三次握手吗 -
广晨同贝: HTTP协议是在TCP协议之上的,所以建立一个HTTP连接就需要一次三次握手的过程.但是HTTP有持续连接和非持久连接的区分,就是HTTP请求首部里面的Connection字段,如果是Connection:Keep-Alive就表示持续连接,除非一方主动断开,客户端和服务器的网络连接是持续的,也就是多个HTTP请求都是这一个网络连接;如果是Connection:close,一个HTTP请求在获得HTTP响应后连接就会断开,在下一次HTTP请求时就会有另外一次HTTP连接,也就会再有一个三次握手的过程.

工布江达县13680619441: https如何进行加密传输 -
广晨同贝: HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息.TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非...

工布江达县13680619441: https加密过程是怎样的,是在七层协议的哪层工作的 -
广晨同贝: 网络七层协议(OSI)是一个开放性的通信系统互连参考模型,从上到下分别是 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层.每层的作用分别如下: 7应用层 与其它计算机进行通讯的一个应用,它是对应应用程序的通信...

工布江达县13680619441: www服务器和浏览器利用http协议交互过程 -
广晨同贝: http工作流程1、客户机与服务器建立连接2、客户机发送请求3、服务器收到请求后相应4、客户端接收到服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接

工布江达县13680619441: 关于https以及CA机构和颁发证书的问题? -
广晨同贝: 图上的意思是,有三个步骤: 第一步:Trusted CA向vendor提供CA根证书. 第二步:Trusted CA给site提供站证书. 第三步:vendor的浏览器在用https访问的时候会检查站证书的合法性. 例如chrome里面,https访问google的时候,地址栏的前面的小锁会是绿色的.因为GeoTrust是google site的根证书拥有者,而这个是被99%以上的浏览器信任的.

工布江达县13680619441: https和http有什么不一样吗 -
广晨同贝: 简单点说,https是加密传输协议,http是明文传输协议;https=http+ssl证书 https://表明是用SSL加密的,电脑与服务器之间收发的信息传输将更加安全.Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定. http和https使用的是完全不同的连接方式,用的端口也不一样,http是80,https是443.http的连接很简单,是无状态的;https链接在浏览器地址栏有绿色安全锁标识,部署了沃通EV SSL证书的还会显示绿色地址栏. HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比http协议安全

工布江达县13680619441: http文件上传的原理 -
广晨同贝: HTTP 协议定义服务器端和客户端之间文件传输的沟通方式.目前HTTP协议的版本是Http1.1.RFC 2616描述了HTTP协议的具体信息.这个协议已经成为浏览器和Web站点之间的标准.当我上网的时候底层是如何进行交互的?当访问者点击...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网