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注入漏洞修复 漏洞存在场景分析和修复示例(代码片段

网络安全为何需要HTTPS加密

Https协议:SSL建立过程分析(也比较清楚,而且有OpenSSL的代码)

为啥基于锁的程序不能组成正确的线程安全片段?

SSL 链接安全协议的enum

http与https的区别,为啥https比http安全