【知识详解】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年 ...
随机推荐
- SpringBoot数据访问(一) SpringBoot整合Mybatis
前言 SpringData是Spring提供的一个用于简化数据库访问.支持云服务的开源框架.它是一个伞形项目,包含了大量关系型数据库及非关系型数据库的数据访问解决方案,其设计目的是为了使我们可以快速且 ...
- 【NX二次开发】获取尺寸信息UF_DRF_ask_draft_aid_text_info
获取尺寸信息UF_DRF_ask_draft_aid_text_info 例如获取下面这三个的尺寸信息. 图1 输出结果: 10 <T+0.1!-0.1> 图2 输出结果: 10 < ...
- 手把手使用Python语音识别,进行语音转文字
0. 太长不看系列,直接使用 在1.2官网注册后拿到APISecret和APIKey,直接复制文章2.4demo代码,确定音频为wav格式,采样率为16K,在命令行执行 python single_s ...
- VBS脚本编程(6)——对象的创建与调用
对象:严格的说,对象是复杂数据和程序结构在内存中的表现,只有在程序运行时才存在.包含有方法和属性. 对象的创建及用法 1. Set 语句 将对象引用赋给一个变量或属性,或者将对象引用与事件关联. Se ...
- 【Azure API 管理】APIM集成内网虚拟网络后,启用自定义路由管理外出流量经过防火墙(Firewall),遇见APIs加载不出来问题
问题描述 使用 Azure 虚拟网络,Azure APIM 可以管理无法通过 Internet 访问的 API,达到以保护企业内部的后端API的目的.在虚拟网络中,启用网络安全组(NSG:Networ ...
- Kubernetes的亲和性和反亲和性
节点亲缘性规则可以影响pod被调度到哪个节点.但是,这些规则只影响了pod和节点之间的亲缘性.然而,有些时候也希望能有能力指定pod自身之间的亲缘性. 举例来说,想象一下有一个前端pod和一个后端po ...
- 关于Word转Markdown的工具Writage安装及使用
简介 Writage是为希望开始编写结构良好的文档,没有时间或不想深入了解 Markdown 语法的详细信息,或者更愿意使用 Word 作为文本编辑器的每个人设计的 下载并安装 安装包地址:https ...
- 5.1 万 Star!不用 root 就能连接控制安卓的开源工具
[导语]:一款在 PC 端控制安卓设备的小工具.可在 PC 和安卓设备间互通剪贴板.用电脑键盘打字.传输文件.安装程序.截图.录屏等等功能. 简介 scrcpy 可以显示并控制通过 USB (或 TC ...
- jenkins 修改端口后无法启动的解决思路
一.问题 jenkins网站绑定域名后直接通过域名访问使用的是8080端口,为方便用户访问因此须监听80端口,而为了安全起见linux一般不用root身份运行,综上,需要以普通用户来运行监听80端口时 ...
- 第11章:Pod数据持久化
参考文档:https://kubernetes.io/docs/concepts/storage/volumes/ Kubernetes中的Volume提供了在容器中挂载外部存储的能力 Pod需要设置 ...