Https协议

Https协议原理

简单地来说,是基于ssl的http协议,依托ssl协议,https协议能够确保整个通信是加密的,密钥随机产生,并且能够通过数字证书验证通信双方的身份,以此来保障信息安全。其中证书包含了证书所代表一端的公钥,以及一些其所具有的基本信息,如机构名称,证书所作用域名、证书的数字签名等,通过数字签名能够验证证书的真实性。通信的内容使用对称加密方式进行加密,通信两端约定好通信密码后,通过公钥对密码进行加密传输,只有该公钥对应的私钥,也就是通信的另一端才能够解密获得通信密码,这样既保证了通信的安全,也使加密性能和时间成本可控。

Https协议栈

https协议在http协议和tcp协议增加一层安全层,所有请求和响应的数据在结果网络传输之前都会先进行加密,然后在进行传输。

image.png

Https协议既支持单向认证,也支持双向认证。 单向认证:只校验服务端证书的有效性。 双向认证:既校验服务端也校验客户端。

SSL/TLS协议

SSL的全称是Secure Socket Layer,既安全套接层。SSL协议独立于应用层,高层应用http,ftp,ssh都可以简历在ssl之上。 TLS全程是Transport Layer Security,传输层安全协议,是基于SSL的通用化协议,同样位于应用层和传输层之间,正逐步接替SSL成为下一代网络安全协议。 SSL/TLS分为两层: 1.Record Protocol,记录协议; 记录协议建立在可靠的传输协议(TCP)之上,提供数据封装,加密解密,数据压缩,数据校验等基本功能。 2,Handshake Protocol,握手协议。 建立在握手协议之上,在实际的数据传输开始前,进行加密算法的协商,通信密钥的交换,通信双方身份的认证。

SSL握手协议

握手协议过程

(1)客户端发送一个client hello消息,消息包含协议的版本信息、sessionid、客户端支持的加密算法、压缩算法等信息,并且还包含客户端产生的随机数。 (2)服务端响应一个server hello消息,消息包含服务端产生的随机数、协议版本信息、sessionid、压缩算法信息,还有服务端数字证书,如果服务端配置是双向验证,则服务端将请求客户端证书。 (3)客户端通过证书来验证服务端证书的有效性。 (4)如果证书验证通过,客户端将向服务端发送经过服务端公钥加密的预主密钥,即PreMaster Secret。假如服务端在上一个步骤请求了客户端证书,客户端会将客户端证书发送给服务端进行校验。 (5)服务端验证客户端证书的有效性,并用自己的私钥对PMS进行解密,使用client hello和server hello两个步骤所生成的随机数,加上解密的PMS来生成主密钥,即Master Secret,然后通过MS生成加密密钥。 (6)客户端也将使用client hello和server hello两个步骤所生成的随机数,加上解密的PMS来生成MS,,然后通过MS生成加密密钥。 (7)通知服务端未来信息将使用加密密钥来加密。 (8)给服务端发送加密密钥来加密信息,终止握手。 (9)通知客户端未来信息将使用加密密钥来加密。 (10)给客户端发送加密密钥来加密信息,终止握手。 完成握手后,客户端与服务端便可以开始加密数据通信:

加密通信过程

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信公众号:Java团长

JavaWeb学习总结(三)——Tomcat服务器学习和使用(二)

  在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:

11910
来自专栏面朝大海春暖花开

https请求过程

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。

1.3K30
来自专栏FreeBuf

一款使用PowerShell和证书来加密文件的工具

在之前的两篇文章中,我已经教大家如何使用证书加解密文件,但总的来说操作过程还是有些繁杂。今天我将为你们提供一个文件加密工具,来自动化的帮我们完成这些过程。关于证...

16600

获得具有商业签名的TLS证书

如果您打算托管一个可公开访问的使用HTTPS的网站,那么您将需要安装一个具有商业签名的TLS证书,这样访问您网站的人就不会在浏览器中收到有关不安全连接的警告。

12430
来自专栏腾讯Bugly的专栏

iOS 中 HTTPS 证书验证浅析

导语 在 WWDC 16 中,Apple 表示, 从 2017年1月1日起(最新消息, 实施时间已延期),所有新提交的 App 使用系统组件进行的 HTTP 网...

70580
来自专栏IT笔记

SpringBoot开发案例之集成SSL证书

SSL简介 SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为...

50970
来自专栏Java架构沉思录

深入浅出HTTPS

在之前的文章《深入浅出密码学(上)》、《深入浅出密码学(中)》与《深入浅出密码学(下)》中,沉思君为大家介绍了密码学中一些重要的概念,例如:加密、单向散列函数、...

22070
来自专栏Java技术栈

干货 | 图解 https 单向认证和双向认证!

HyperText Transfer Protocol,超文本传输协议,是互联网上使用最广泛的一种协议,所有WWW文件必须遵循的标准。HTTP协议传输的数据都是...

73520
来自专栏IT笔记

SpringBoot开发案例之集成SSL证书

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供...

51280
来自专栏Huramkin的归档库

GPG基本使用方法

GnuPG是用于加密、数字签名及产生非对称匙对的软件。下载与安装方式:gpgtools

31600

扫码关注云+社区

领取腾讯云代金券