【知识详解】Https详解
Https详解
1.什么是Https
Http + SSL = Https
一句话说:Https是身披SSL的Http,当使用了SSL后,Http先和SSL通信,再由SSL和TCP通信,
2.为什么需要Https
在用Http协议时,主要可能存在以下三个问题。
- 1.通信使用明文,内容可能会被窃听。
- 2.不验证通信方的身份,可能遭遇伪装。
- 3.无法证明报文是否完整,可能遭到篡改
相应的,Https就是解决上述三个问题
- 1.数据隐私:内容经过对称加密。
- 2.身份认证:第三方无法伪造身份。
- 3.数据完整性:内容传输经过完整性校验。
所以也可以这样说:
Http+加密+认证+完整性保护=Https
3.加密
3.1 对称加密
加密和解密使用同一个密钥,想要加密信息,那就需要把密钥传给客户端,只能通过光盘拷给对方,不能在网络上传输,因为很容易就被其他人获得密钥,这样谁都可以解密信息了,失去了加密的意义。优点是效率高
3.2 非对称加密
是一个密钥对,一把公钥,一把私钥,公钥任何人都能获得,但是私钥只有自己知道,发送方使用公钥加密,接收方收到后使用私钥解密,只有公钥信息也不能做到解密。缺点是加密解密需要一定时间。
3.3 对称加密+非对称加密
为了结合效率高且安全加密,使用两者混合:在交换密钥环节使用非对称加密,数据传输时用对称加密。具体是:发送密文的一方使用对方的公钥加密对称密钥,然后用对称密钥加密文件,接收方用私钥解密对称密钥,用对称密钥解密文件。
4.数字签名
数字签名是用来解决数据可能遭到篡改的情况,即校验数据完整性。
实现:A在发送文件前,先用单向散列函数(Hash)生成消息摘要,然后再用A私钥进行加密生成数字签名,然后将其与文件和A公钥一起发给B,B收到后先对文件使用相同的散列函数得到摘要,然后用A的公钥解密数字签名得到原来的摘要,两个摘要进行对比,若不相同,则证明文件被篡改。
数字签名的特点就是发送文件不加密,但不能更改,比如发送红头文件到各个地方或者官方群发特定通知,文件本身不是机密,但不能更改;
问题:A的公钥怎么传给B,或者说如何证明这个公钥就是A的。比如C可以用自己的私钥生成数字签名,然后把自己的公钥给A,然后冒充B
5.CA证书
CA证书是为了解决通信方身份被伪装的问题。
CA机构使用散列函数将证书上的明文信息(申请者公钥,申请者信息等)计算得到信息摘要,然后用CA私钥加密得到数字签名,然后将证书和数字签名一起发给客户端,客户端得到后,使用CA公钥对数字签名解密得到摘要,然后对证书计算得到摘要,将两者对比如果一样表示证书没有被中间人篡改过,确认证书的合法性,也就是服务器的公钥是值得信赖的。
注:即使中间人有CA公钥,能够解析数字签名并篡改,但是篡改完成后中间人仍然需要将证书重新加密,但是中间人没有CA私钥,无法加密,强行加密会导致客户端无法解密(客户端只认那几个权威机构的公钥)。
6.公钥和私钥
要明白两种用法:
- 1.公钥加密,私钥解密 -- 用于传输密文
- 2.私钥签名,公钥验证 -- 用于签名
第一种情景:既然是加密,那肯定不想让别人知道我的信息,只有我才能解密,所以公钥加密,私钥解密。这过程中信息不可见,但是可能被篡改。
第二种情景:既然是签名,我就不希望别人冒充我发信息,只有我才能发,所以是私钥签名,公钥验证。这过程中信息不可篡改,但是他人可以获得。
7.Https工作流程
1、客户端发起一个https请求,根据规定,知道需要连接服务器的443端口。
2、服务器把配置好的公钥证书返回给客户端。
3、客户端验证公钥证书,比如是否在有效期内等信息。如果验证通过则继续,不通过则显示警告信息。
客户端拿CA机构的公钥解密数字签名,得到摘要,然后用散列函数计算证书得到摘要,对两个摘要进行对比,验证证书是否被篡改,服务器公钥是否可靠。
4、客户端使用伪随机数生成加密要用的对称密钥,然后用证书的公钥加密这个对称密钥,发给服务端。
5、服务端使用自己的私钥解密这个消息,得到对称密钥,现在,服务器和客户端都拥有了相同的对称密钥。(所以使用https开始的时候会有点慢)
6、服务器用对称密钥加密明文内容A,发给客户端。
7、客户端使用对称密钥解密密文,得到明文内容A。
8.https和http区别
- http是明文传输,而https是使用SSL+http构成的加密传输,更安全。
- http使用80端口,https使用443端口
- http基于应用层,而https基于传输层
参考链接
【知识详解】Https详解的更多相关文章
- Java web 入门知识 及HTTP协议详解
Java web 入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...
- HTTPS 详解一:附带最精美详尽的 HTTPS 原理图
HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 前言 作为一个有追求的程序员,了解行业发展趋势和扩充自己的计算机知识储备都是很有 ...
- 公钥与私钥,HTTPS详解
1.公钥与私钥原理1)鲍勃有两把钥匙,一把是公钥,另一把是私钥2)鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊----每人一把.3)苏珊要给鲍勃写一封保密的信.她写完后用鲍勃的公钥加密,就可以达到 ...
- 公钥与私钥,HTTPS详解 转载
1.公钥与私钥原理1)鲍勃有两把钥匙,一把是公钥,另一把是私钥2)鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊----每人一把.3)苏珊要给鲍勃写一封保密的信.她写完后用鲍勃的公钥加密,就可以达到 ...
- 公钥,密钥,HTTPS详解
公钥与私钥,HTTPS详解 1.公钥与私钥原理1)鲍勃有两把钥匙,一把是公钥,另一把是私钥2)鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊----每人一把.3)苏珊要给鲍勃写一封保密的信.她写完后 ...
- java的动态代理机制详解-----https://www.cnblogs.com/xiaoluo501395377/p/3383130.html
java的动态代理机制详解-----https://www.cnblogs.com/xiaoluo501395377/p/3383130.html
- HTTPS详解二:SSL / TLS 工作原理和详细握手过程
HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流 ...
- linux tar命令 压缩、打包、解压 详解
linux tar命令 压缩.打包.解压 详解 1.常用压缩命令 tar –czvf 压缩后的文件.tar.gz 要压缩的文件 2.常用解压命令 tar –xzvf 解压后的文件.tar.gz [要解 ...
- Android 6.0 RK3288 ROM编译详解+命令详解【转】
本文转载自:http://blog.csdn.net/MLQ8087/article/details/58607692 Android 6.0 RK3288 ROM编译详解+命令详解 原创 2017年 ...
随机推荐
- 从Vehicle-ReId到AI换脸,应有尽有,解你所惑
最近在做视频搜索的技术调研,已经初步有了一些成果输出,算法准确性还可以接受,基本达到了调研的预期.现将该技术调研过程中涉及到的内容总结一篇文章分享出来,内容比较多,初看起来可能关系不大,但是如果接触面 ...
- SpringCloud Alibaba实战(6:nacos-server服务搭建)
源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 大家好,我是三分恶. 这一节我们来学习SpringCloud Alibaba体系中一 ...
- 5.23考试总结(NOIP模拟2)
5.23考试总结(NOIP模拟2) 洛谷题单 看第一题第一眼,不好打呀;看第一题样例又一眼,诶,我直接一手小阶乘走人 然后就急忙去干T2T3了 后来考完一看,只有\(T1\)骗到了\(15pts\)[ ...
- [INS-32033] Central Inventory location is not writable
这个是因为之前安装过一次图形界面,已经创建过Inventory,所以会报错. 解决:删除oraInventory这个目录.
- 通过ffmpeg转换为mp4格式
FFMPEG -i example.wmv -c:v libx264 -strict -2 output.mp4FFMPEG -i example.wmv -c:v libx264 -stri ...
- 循序渐进BootstrapVue,开发公司门户网站(5)--- 使用实际数据接口代替本地Mock数据
在我们开发一些门户网站功能的时候,有时候我们需要快速的创建数据模型来进行数据展示,因为数据结构可能处于不断的修正变化之中,因此服务端的接口我们可以暂时不开发,当我们基本完成数据结构和界面展示的时候,就 ...
- 一次性讲清楚spring中bean的生命周期之二:FactoryBean的前世今生
前言 在<spring中FactoryBean是什么bean>一文中,带着小伙伴学习了spring中的FactoryBean,了解了到了FactoryBean其实是一种生产Bean的bea ...
- [HTML]常用的文本标签(标题、段落、加粗、下划线等标签)
标签类型 写法 说明 标题 <h1></h1>......<h6></h6> 加粗.独占一行(块级元素) 段落 <p></p> ...
- 仅使用JsonUtility和File类实现Json数据读写
using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using S ...
- Unity触发碰撞
原文链接:Unity触发碰撞介绍 3D触发器与碰撞器 触发信息检测: 1.MonoBehaviour.OnTriggerEnter(Collider collider)当进入触发器 2.MonoBeh ...