| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 对HTTPS和SSL的理解 -> 正文阅读 |
|
[网络协议]对HTTPS和SSL的理解 |
谈下对HTTP和HTTPS协议的理解:browser和server想要加密聊天(使用http),不想聊天内容被其他人知道,使用了非对称加密: 如果没有意外,browser和server直接就完成了加密信息传输。但是在这个过程中会出现一个问题:browser怎么确认对方是server呢?因为server发给browser的公钥有可能会被黑客X拦截(比如本地host文件被修改后,dns拦截),黑客X把自己的公钥发给了browser,browser拿到的公钥就是黑客X的公钥,那么browser加密发过去密文,黑客X就能用自己的私钥去解密看到传输的消息了。 所以HTTP协议的不安全原因就是:请求发起方无法确认响应方的真实身份。 当使用HTTPS协议时: 有一个声誉度很高的贤者CA(browser和server都信任他)来做公证员,避免消息被黑客X窃取。 当browser找server聊天的时候,怎么证明server是本人呢? 这时候CA要做的事情有两件,首先给server颁发一个证书【站证书】,证书是用自己的私钥把server的公钥和server的私密信息加密后做成的;然后再告诉browser自己的公钥【根证书】。 browser收到server的消息的时,先看下证书【站证书】,使用CA的公钥【根证书】解密,然后获取到server的公钥和server的身份信息,browser就能相信对方是server,若无法解密或者身份信息不对,那就会断开联系。 确保对方是server后,browser和就可以直接用对称性的加密来传递消息聊天了(加密解密速度快)。 SSL的请求完整过程示例:第一步: browser向server发送一个通信请求 browser ---> server:你好! 第二步: server向browser发送自己的数字证书。证书中有一个公钥用来加密信息,私钥由server持有。 server?--->?browser :你好!我是server?,这里是我的数字证书 。 第三步: browser收到server的证书后,它会去验证这个数字证书到底是不是server的,数字证书是否存在问题,如果检查没有问题,就说明数字证书里面的公钥确实是server的。检查数字证书后,browser会发送一个随机的字符串给server。server用自己的私钥去加密,然后把加密结果返回给browser,browser用数字证书里面的公钥解密这个返回结果,如果解密结果与之前生成的随机字符串一致,那说明对方确实是私钥的持有者-server。 browser ---> server:向我证明你就是server,这是一个随机字符串。 server--->?browser :这是将随机字符串加密后的结果。 第四步: 验证server的身份后,browser生成一个对称加密算法和密钥,用于后面的通信的加密和解密。这个对称加密算法和密钥,browser会用公钥加密后发送给server,别人截获了也没用,因为只有server自己的私钥才可以解密。这样,后面browser和server就都可以用对称加密算法来加密和解密通信内容了。 server--->?browser :已经收到你发来的对称加密算法和密钥,我们可以联系了。 browser ---> server:【巴拉巴拉巴拉巴拉】 server--->?browser :【拉巴拉巴拉巴拉巴】 还有一些需要了解的知识:
关于SSL证书链的知识可以看看下面这篇文章:百度安全验证https://baijiahao.baidu.com/s?id=1675963146214744309&wfr=spider&for=pc |
|
网络协议 最新文章 |
使用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 7:37:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |