Https安全协议
Posted JackRenEngineer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Https安全协议相关的知识,希望对你有一定的参考价值。
前提
由于 HTTP 协议通信的不安全性,所以人们为了防止信息在传输过程中遭到泄漏或者篡改,就想出来对传输通道进行加密的方式 https。
介绍
https 是一种加密的超文本传输协议,它与 HTTP 在协议差异在于对数据传输的过程中,https对数据做了完全加密。由于 http 协议或者 https 协议都是处于 TCP 传输层之上,同时网络协议又是一个分层的结构,所以在 tcp 协议层之上增加了一层 SSL(Secure Socket Layer,安全层)或者 TLS(Transport Layer Security) 安全层传输协议组合使用用于构造加密通道;
申请过程
我这边是在阿里云上申请的免费证书,直接下载下来部署到web服务器即可!
客户端请求交互过程
1、客户端发起请求
1、建立TCP连接
2、支持的协议版本(TLS/SSl)
3、客户端申城随机数client.random
4、客户端支持的加密算法
5、SESSIONID,用于保持同一个会话
2、服务器收到请求响应
1、确认加密通道协议版本
2、服务器生成随机数server.random
3、确认使用的加密算法
4、服务器证书(部署到web服务器证书)
3、客户端收到证书进行验证
1、验证证书是否是上级 CA 签发的, 在验证证书的时候,浏览器会调用系统的证书管理器
接口对证书路径中的所有证书一级一级的进行验证,只有路径中所有的证书都是受信的,
整个验证的结果才是受信
2、服务端返回的证书中会包含证书的有效期,可以通过失效日期来验证 证书是否过期
3、验证证书是否被吊销了
4、验证通过后,客户端会征程一个随机数client.random2,客户端根据之前的:client.random+server.random+client.random2生成堆成密钥然后使用证书中的
公钥进行加密,同时根据协商好的HASH算法,取出握手消息中的HASH值,然后用随机数加密:握手消息+握手消息Hash值(签名)一起发送给服务端
4、服务端接收随机数
1、服务端收到客户端的加密数据后,用自己的私钥对密文进行解密,然后得到
client.random+server.random+client.random2、HASH值,并与传过来的HASH值做对比确认是否一致
2、随机密码加密一段握手信息(握手消息+握手消息Hash值)给客户端
5、客户端接收消息
1、解密握手信息的HASH值,如果与服务端一致,握手过程结束
2、之后所有的通信数据将由之前交互过程中生成的client.random、server.random、client.random2
通过算法得出session key,作为后续交互过程的密钥。
以上是关于Https安全协议的主要内容,如果未能解决你的问题,请参考以下文章
安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段