网络协议:透彻解析HTTPS协议
本篇内容包括:HTTPS 协议概述,SSL 与 TLS(SSL 与 TLS 概述、SSL证书 和 SSL 与 TLS 二者之间关系),以及 HTTPS 下浏览器访问一个网站的全过程的内容!
文章目录
- 一、HTTPS 协议概述
- 二、SSL 与 TLS
- 1、SSL 与 TLS 概述
- 2、SSL证书
- 3、SSL 与 TLS 二者之间关系
- 三、HTTPS 下浏览器访问一个网站的全过程
一、HTTPS 协议概述
HTTPS(Secure Hypertext Transfer Protocol)即安全超文本传输协议,是一个安全通信通道。用于计算机网络的安全通信,已经在互联网得到广泛应用。
HTTPS 是基于 HTTP 的扩展,其相当于 HTTP协议+SSL(安全套接层)/TLS(安全传输层协议)协议加密。因此 HTTPS 也常指 HTTP over SSL 或 HTTP over TLS。
HTTP 的缺点:
- HTTP 通信使用明文,内容可能会被窃听。
- HTTP 无法验证报文的完整性,所以有可能遭到篡改。
- HTTP 不验证通信方的身份,有可能遭遇伪装。
HTTPS 与 HTTP 的区别:HTTP 协议的数据传输是通过明文的形式做传输,即使约定了加密方式,但是第一次传输的时候还是明文;鉴于此,HTTPS使用的是非对称加密,为秘钥的传输外层再做一层保护,非对称加密的一组秘钥对中,包含一个公钥和一个私钥。明文既可以用公钥加密,用私钥解密;也可以用私钥加密,用公钥解密。
- HTTPS 协议需要到 CA 申请证书;
- HTTP 是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议;
- HTTP 和 HTTPS 使用的是完全不同的连接方式,端口也不一样。前者是 80,后者是 443;
- HTTP 的连接是无状态的,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 更安全。
总的来说:HTTPS 目前是最流行的 HTTP 安全形式。使用 HTTPS 时,所有的 HTTP 请求和响应数据在发送到网络之前,都要进行加密。HTTPS 在 HTTP 下面提供了一个传输级的密码安全层: SSL 和 TLS。
二、SSL 与 TLS
1、SSL 与 TLS 概述
SSL(Secure Socket Layer)即,位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL 通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。
SSL 协议可分为两层:
- SSL 记录协议(SSL Record Protocol):它建立在可靠的传输协议(如 TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
- SSL 握手协议(SSL Handshake Protocol):它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
TLS:安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。TLS 记录协议用于封装各种高层协议。作为这种封装协议之一的握手协议允许服务器与客户机在应用程序协议传输和接收其第一个数据字节前彼此之间相互认证,协商加密算法和加密密钥。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)
SSL/TLS 协议为了解决 HTTP 协议的缺点,希望达到:
- 所有信息都是加密传播,第三方无法被窃听。
- 具有校验机制,一旦被篡改,通信双方立刻会发现。
- 配备身份证书,方式身份被冒充。
SSL 是一个二进制协议,与 HTTP 完全不同,其流量是承载在另一个端口上的(通常是 443),如果 SSL 和 HTTP 的流量都从 80 端口到达,大部分 web 服务器会将二进制 SSL 流量理解为错误的 HTTP 并关闭连接。
2、SSL证书
SSL证书是一种数字证书,可以由组织或个人购买,并允许Web服务器和浏览器之间的安全连接。它通过将加密密钥绑定到组织的详细信息来做到这一点。
证书包含有关证书持有者的姓名、证书序列号和到期日期、证书持有者的公钥副本以及证书颁发机构的数字签名等信息。这会对网站进行身份验证,证明它确实是它声称的网站,而不是冒充该网站的黑客。
在服务器向客户端发送公钥这一过程中,客户端可能会收到黑客假冒服务器发送的假的公钥。为了安全考虑,就需要用到 SSL 证书了。在通信时,服务器将证书发送给客户端,客户端会对证书的真伪进行校验,保证了安全。
从本质上讲,它会验证该站点是否如其所说。
3、SSL 与 TLS 二者之间关系
TLS 是 SSL3.0 的后续版本。TLS 与 SSL3.0 之间存在着显著的差别,主要是它们所支持的加密算法不同,所以 TLS 与 SSL3.0 不能互操作。
SSL 是 Netscape 开发的专门用户保护 Web 通讯的,目前版本为 3.0。最新版本的 TLS 是 IETF(Internet Engineering Task Force,Internet 工程任务组)制定的一种新的协议。最新版本的 TLS1.0,它建立在 SSL3.0 协议规范之上,是 SSL3.0 的后续版本。两者差别极小,可以理解为 SSL3.1。
三、HTTPS 下浏览器访问一个网站的全过程
https的整个通信过程可以分为两大类:证书验证和数据传输阶段。数据传输阶段又分为非对称加密和对称加密两个阶段。
具体流程如下:
- 首先客户端请求 https 网址,然后连接到 Server 的 443 端口(https 默认端口)。
- 采用 https 协议的服务器必须要有一套数字 CA 证书。颁发证书的同时会产生一个私钥和公钥。私钥由服务端自己保存,不可泄漏。公钥则附加在证书中,可以公开。证书本身附带一个电子签名,可以用来验证证书的完整性和真实性,可以防止证书被篡改。
- 服务器响应客户端请求,将证书传递给客户端。证书包含公钥和大量其他的信息,比如证书颁发机构信息、公司信息和证书有效期等。
- 客户端解析证书并对其进行验证,如果证书不是可信的机构颁布,或者证书的域名与实际域名不一致,或证书已经过期,就会向访问者显示一个警告。如果证书没有问题,客户端就会从服务器证书中取出服务器的公钥A,并生成一个随机码KEY,并使用公钥对其进行加密。
- 客户端会把加密后的随机码KEY发送给服务器,作为后面对称加密的密钥。
- 服务器在收到随机码KEY之后会使用私钥B将其解密。经过以上这些步骤,客户端和服务器终于建立了安全的连接,接下来可以使用对称加密进行通信了。
- 服务器使用密钥(随机码KEY)对数据进行对称加密并发送给客户端,客户端使用相同的密钥解密数据。
- 双方使用对称加密传输所有的数据。
网络协议:透彻解析HTTPS协议相关推荐
- tomcat 将http协议改为https协议,Websocket请求ws协议修改为wss协议
tomcat 将http协议改为https协议,Websocket请求ws协议修改为wss协议 一. 说明 WS协议和WSS协议两个均是WebSocket协议的SCHEM,两者一个是非安全的,一个是安 ...
- 一篇文章为你深度解析HTTPS 协议
一.前言 微信小程序如期发布,开发者在接入微信小程序过程中,会遇到以下问题: 小程序要求必须通过 HTTPS 完成与服务端通信,若开发者选择自行搭建 HTTPS 服务,那需要自行 SSL 证书申请.部 ...
- 一篇文章为你深度解析HTTPS 协议 1
HTTP链接面临页面劫持.隐私泄漏等各类风险,本文为你深入浅出的解析了如何基于HTTPS实现身份验证.内容加密和一致性验证 作者:罗成 腾讯云资深研发工程师 出处:腾讯云技术社区 一.微信小程序接入的 ...
- 11.网络协议-HTTP及HTTPS协议
1.HTTP需求背景 万维网(www) • Http是一种网络协议,也是互联网上应用最为广泛的一种,http也叫超文本传输协议,所有的html文件都是遵循这个标准进行传输的. • HTTP的出现是为了 ...
- 网络(9)-HTTPS协议
一.HTTPS的概念 HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础 ...
- 免费申请下载SSL证书与证书的安装部署教程,网站服务由网站由http协议升级为https协议
文章目录 相关技术术语 SSL SSL证书 HTTPS 证书申请 证书安装 在Tomcat服务器安装SSL证书 示例使用 阿里云SSL证书服务 相关技术术语 SSL 安全套接层SSL(Secure S ...
- 云套件将http协议改为https协议
作者:yangjl 最近很多使用云套件的小伙伴们想把http协议改为https的,但是目前imanager for k8s里面目前并未提供一键转换的功能,目前研发侧的同事正在完善此功能,争取尽快更新出 ...
- 给服务器弄了一个https协议,HTTP和HTTPS协议
一.http和https的区别 1.http协议存在的问题 1)请求信息明文传输,容易被窃听截取. 2)数据的完整性未校验,容易被篡改 3)没有验证对方身份,存在冒充危险 2.https相对http协 ...
- 【基础协议】HTTP/HTTPS协议及其工作流程
目录 1 HTTP协议与HTTPS协议 1.1 HTTP协议概述 1.2 HTTPS协议概述 1.3 HTTPS与HHTP区别 2 URI和URL相关知识 2.1 URI统一资源标识符 2.2 URL ...
最新文章
- Redis-3.2.6 配置文件中文翻译
- git 撤销全部的commit_恢复git撤销commit的代码
- catia曲面扫掠命令详解_Catia曲面基础与工程实践 3.2 扫掠曲面
- 向一个无法连接的网络尝试了一个套接字操作_python3从零学习-5.8.1、socket—底层网络接口...
- 三甲医院his系统源码_三甲医院科研管理系统是什么,科研成果包括哪些
- 信息学奥赛C++语言:成绩等级
- 不小心合并了icloud通讯录_苹果手机怎么恢复通讯录联系人号码?原来方法竟如此简单!...
- 雷军:技术立业是小米血液里最重要的东西
- vb.net加密解密方法
- python爬虫进程和线程的区别_Python爬虫 | 多线程、多进程、协程
- vue省市区联动插件---distpicker
- R语言逻辑回归Logistic回归分析预测股票涨跌
- 修改windows自带录音机录音时间方法
- 9.8 按钮button
- Linux和Ubuntu的区别详解
- 2010年10月1日 工作 计划 发奋图钱 再接再厉
- Android 10 原生支持 5G!
- 微信小程序基础而重要语法整理总结(数据绑定、运算表达式、循环渲染、条件渲染、事件绑定(传参))
- mysql sql查询时区_MySQL查看和修改时区的方法
- 嵌入式方面名词术语总结