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工作原理

数字签名

非对称加密

【知识详解】Https详解的更多相关文章

  1. Java web 入门知识 及HTTP协议详解

     Java  web  入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...

  2. HTTPS 详解一:附带最精美详尽的 HTTPS 原理图

    HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 前言 作为一个有追求的程序员,了解行业发展趋势和扩充自己的计算机知识储备都是很有 ...

  3. 公钥与私钥,HTTPS详解

    1.公钥与私钥原理1)鲍勃有两把钥匙,一把是公钥,另一把是私钥2)鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊----每人一把.3)苏珊要给鲍勃写一封保密的信.她写完后用鲍勃的公钥加密,就可以达到 ...

  4. 公钥与私钥,HTTPS详解 转载

    1.公钥与私钥原理1)鲍勃有两把钥匙,一把是公钥,另一把是私钥2)鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊----每人一把.3)苏珊要给鲍勃写一封保密的信.她写完后用鲍勃的公钥加密,就可以达到 ...

  5. 公钥,密钥,HTTPS详解

    公钥与私钥,HTTPS详解 1.公钥与私钥原理1)鲍勃有两把钥匙,一把是公钥,另一把是私钥2)鲍勃把公钥送给他的朋友们----帕蒂.道格.苏珊----每人一把.3)苏珊要给鲍勃写一封保密的信.她写完后 ...

  6. java的动态代理机制详解-----https://www.cnblogs.com/xiaoluo501395377/p/3383130.html

    java的动态代理机制详解-----https://www.cnblogs.com/xiaoluo501395377/p/3383130.html

  7. HTTPS详解二:SSL / TLS 工作原理和详细握手过程

    HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流 ...

  8. linux tar命令 压缩、打包、解压 详解

    linux tar命令 压缩.打包.解压 详解 1.常用压缩命令 tar –czvf 压缩后的文件.tar.gz 要压缩的文件 2.常用解压命令 tar –xzvf 解压后的文件.tar.gz [要解 ...

  9. Android 6.0 RK3288 ROM编译详解+命令详解【转】

    本文转载自:http://blog.csdn.net/MLQ8087/article/details/58607692 Android 6.0 RK3288 ROM编译详解+命令详解 原创 2017年 ...

随机推荐

  1. 谈谈stream的运行原理

    害,别误会,我这里说的stream不是流式编程,不是大数据处理框架.我这里说的是stream指的是jdk中的一个开发工具包stream. 该工具包在jdk8中出现,可以说已经是冷饭了,为何还要你说?只 ...

  2. 【NX二次开发】获取指定矩阵标识的矩阵值

    函数:UF_CSYS_ask_matrix_values () 函数说明:获取指定矩阵标识的矩阵值. 用法: #include <uf.h> #include <uf_csys.h& ...

  3. 【NX二次开发】拉伸面、拉伸封闭曲线成片体UF_MODL_create_extrusion

    用那几个拉伸,不能将封闭的曲线拉伸成片体,用UF_MODL_create_extrusion函数是可以的,下面是例子. 帮助上说拉伸片体不能有拔模角度,应该是错误的,下面是一个封闭曲线带拔模角度拉伸片 ...

  4. 【NX二次开发】拉伸的偏置方向猜想与验证

    结论:偏置的方向为曲线方向与拉伸方向的向量叉乘. 在UF_MODL_create_extrusion帮助中有这么一句话:Note that the offset direction is determ ...

  5. 【模拟7.14】建造游乐园(play)

    这题是玄学的数论 首先考虑如何枚举偶数点度的图 可以考虑取出i-1个点 那么成图的数量为2^C(i-1,2) (原因单独取出的i点能平衡已建图中的奇数点,原因是某种性质....) 然后求带联通标号的欧 ...

  6. csp-s模拟测试「9.14」A·B·C(三分,贪心)

    博客大概咕了很久了......... T1 A 大概推下式子就好了,考试时数据点分治DFS前30点T了,然后后70分因为两数相乘爆long long然后本来可以A掉,就WA零了....... 式子推出 ...

  7. Perm 排列计数

    题目描述 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Magic的,答案可能很 ...

  8. 关于win10 samba访问提示用户名和密码错误的原因

    排除掉linux上的配置错误,只需要做到以下两步就可以了: 1.win10系统运行secpol.msc 打开本地安全策略 2.安全策略->本地策略->安全选项 3.右侧找到 网络安全:LA ...

  9. 4.6 Python3 进阶 - 递归函数

    >>返回主目录 源码 # 定义及特性 # 简单递归思维练习,求和:1+2+3+-+100 # 思路:sum(100) = sum(99) + 100 # sum(99) = sum(98) ...

  10. Golang控制子gorutine退出,并阻塞等待所有子gorutine全部退出

    Golang控制子gorutine退出,并阻塞等待所有子gorutine全部退出 需求 程序有时需要自动重启或者重新初始化一些功能,就需要退出之前的所有子gorutine,并且要等待所有子goruti ...