| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 域名不是HTTPs会发生什么...... -> 正文阅读 |
|
[网络协议]域名不是HTTPs会发生什么...... |
点击上方“大话coding”,选择“星标”公众号 重磅干货,第一时间送达 小明在一家公司上班,有一天突然被人事约谈,鉴于你最近表现,管理层讨论决定给你加薪了,按20%加? 小明突然意识到自己前几天浏览了求职网站,难道被发现了?他用的域名是http。 为什么说https是安全的呢?下面先看看详细的https原理。 协议概念 1. HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。HTTP 协议是一种基于文本的传输协议,它位于 OSI 网络模型中的应用层。 2. HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。 SSL和TLS是一种加密算法,这里不详细介绍SSL和TLS。 HTTP访问过程 HTTP请求过程中,客户端与服务器之间没有任何身份确认的过程,数据全部明文(明文意思就是没有加密的信息,一眼就可以看出客户端和服务器端发送的内容)传输,“裸奔”在互联网上,所以很容易遭到黑客的攻击,如下: 黑客能看到并且修改 HTTP 通讯中所有的请求和响应内容,所以使用 HTTP 是非常的不安全的。 防止访问进行攻击 对称加密 为了防止上述问题,那我们使用对称加密的方式将报文进行加密,这样黑客就看不到明文了。 如上图所示,此种方式属于对称加密,双方拥有相同的密钥,信息得到安全传输,但此种方式的缺点是:
上面的问题是在通讯过程中还是会以明文的方式暴露加密方式和秘钥,如果第一次通信被拦截到了,那么秘钥就会泄露给中间人,黑客仍然可以解密后续的通信。 那么我们考虑能不能将密钥进行加密,不让黑客看到呢? 非对称加密 客户端用公钥对请求内容加密,服务器使用私钥对内容解密。 但也存在缺陷:公钥是公开的(也就是黑客也会有公钥),所以第 ④ 步私钥加密的信息,如果被黑客截获,其可以使用公钥进行解密,获取其中的内容。 对称加密+非对称加密 如上图所示:
也还存在缺陷:
获取公钥和确认服务器的身份 如上图所示,在第 ② 步时服务器发送了一个SSL证书给客户端。 SSL是什么呢? SSL使用数据加密、身份验证和消息完整性验证机制,基于TCP和其他的应用层协议提供可靠的连接安全保障。 真正的SSL 握手会比这个复杂的多,但是性质还是差不多,而且我们这里需要关注的重点在于 HTTPS 是如何防止中间人攻击的。 服务器是通过 SSL 证书来传递公钥,客户端会对 SSL 证书进行验证,其中证书认证体系(CA)就是确保SSL安全的关键。 上面会引入第三方,一个权威的证书颁发机构(CA)来解决。 证书包含如下信息: 为了便于说明,我们这里做了简化,只列出了一些关键信息。至于这些证书信息的用处,我们看看具体的通信流程就能够弄明白了。 流程如下: 1. 服务端首先把自己的公钥发给证书颁发机构,向证书颁发机构申请证书。 2. 证书颁发机构自己也有一对公钥私钥。机构利用自己的私钥来加密Key1,并且通过服务端网址等信息生成一个证书签名,证书签名同样经过机构的私钥加密。证书制作完成后,机构把证书发送给了服务端。 3. 当客户端向服务器端请求通信的时候,服务器端不再直接返回自己的公钥,而是把自己申请的证书返回给客户端。 4. 客户端收到证书以后,要做的第一件事情是验证证书的真伪。需要说明的是,各大浏览器和操作系统已经维护了所有权威证书机构的名称和公钥。所以客户端只需要知道是哪个机构颁布的证书,就可以从本地找到对应的机构公钥,解密出证书签名。 接下来,客户端按照同样的签名规则,自己也生成一个证书签名,如果两个签名一致,说明证书是有效的。 验证成功后,客户端就可以放心地再次利用机构公钥,解密出服务端服务器端的公钥Key1。 5. 像之前一样,客户端生成自己的对称加密密钥Key2,并且用服务端公钥Key1加密Key2,发送给服务器端。 6. 最后,服务器端用自己的私钥解开加密,得到对称加密密钥Key2。于是两人开始用Key2进行对称加密的通信。 证书的签名是由服务器端网址等信息生成的,并且经过机构私钥加密,中间人也无法篡改。 HTTPS在HTTP协议的基础上增加了SSL安全层。 综上所述,相比 HTTP 协议,HTTPS 协议增加了很多握手、加密解密等流程,虽然过程很复杂,但其可以保证数据传输的安全。所以在这个互联网膨胀的时代,其中隐藏着各种看不见的危机,为了保证数据的安全,维护网络稳定,建议大家多多推广HTTPS。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 3:48:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |