https通讯原理

HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS/SSL中使用了非对称加密,对称加密以及HASH算法。握手过程的具体描述如下:

1.浏览器(A)将自己支持的一套加密规则(JHG)发送给网站(B)。
2.网站(B)从中选出一组加密算法(J)与HASH算法(H),并将自己的身份信息以证书(CA)的形式发回给浏览器(A)。证书(CA)里面包含了网站地址,公钥(P),以及证书的颁发机构等信息。
3.浏览器(A)获得网站(B)证书(CA)之后浏览器(A)要做以下工作:
a) 验证证书(CA)的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
b) 如果证书(CA)受信任,或者是用户接受了不受信的证书(CA),浏览器(A)会生成一串随机数的密码(R),并用证书(CA)中提供的公钥(P)加密(RP)。
c) 使用约定好的HASH算法计算握手消息(WSH),并使用生成的随机数对消息进行加密(WSR),最后将之前生成的所有信息发送给网站。
4.网站(B)接收浏览器(A)发来的数据(D=RP+WSH+WSR)之后要做以下的操作:
a) 使用自己的私钥(S)将信息(RP)解密取出密码(R),使用密码(R)解密浏览器(A)发来的握手消息(WSR)(WS),并验证HASH是否与浏览器发来的(WSH)一致。
b) 使用密码(R)加密一段握手消息(WS2R),发送给浏览器(A)。
5.浏览器(A)解密(WS2R)并计算握手消息(WS2)的HASH(WS2H),如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

参考:http://www.cnblogs.com/ttltry-air/archive/2012/08/20/2647898.html

建议图片下载下来查看,放大更清晰。

符号说明:

1、A:客户端,如浏览器。
2、B:服务器端,如网站。
3、JHG:A支持的一套加密规则,包括加密算法、HASH算法。
4、J:B选出的一组加密算法。
5、H:B选出的HASH算法。
6、CA:B的证书。
7、P:证书中的公钥。
8、S:B的私钥,和证书中的公钥相对应。
9、R:A生成的随机数密码。后面对称加密中的秘钥。
10、WS:A生成的握手消息。
11、RP:用P加密后的R。
12、WSR:用R加密后的WS。
13、WSH:用H签名后的WS。
14、D:A发送给B的第一次握手相关数据。RP+WSR+WSH。
15、WS2:B生成的握手消息。
16、WS2R:用R加密后的WS2。
17、WS2H:用H签名后的WS2。
18、D2:B发送给A的第二次握手相关数据。WS2R+WS2H。

如何验证证书的合法性?

根证书即权威机构的证书,目前权威机构指的是CA。

有效的证书就是要由权威机构CA签名,CA就会用自己的私钥对相关机构进行数字签名生成有效的证书。客户端浏览器会安装CA的根证书,由CA签名的证书是被CA所信任的,即该机构是可以被信任的,不是钓鱼网站。这就是信任链。

当客户端与服务端进行连接时,服务端会将自己的证书发送给客户端,此时客户端需要校验这个证书的合法性

1.服务器将自身的证书services.cer传输给客户端​.

2.客户端从自己的信任根证书列表查找是否存在CA证书。

3.用CA证书中提供的公钥去验证services.cer,如果公钥能够解开services.cer,则可以说明该证书是被CA所信任的,随后再去验证是否过程等等

这时候只能说明这个证书是合法的,如何保证通信过程中,双方身份都是合法性的。

4.​取得services.cer中的公钥进行服务器身份的验证。

5.​客户端生成随机数,传输给服务端,服务端使用公钥对随机数进行签名,并且回传给客户端,客户端用services.cer中的公钥对随机数的签名进行验证,如果验证通过,就说明该服务器确实拥有对应服务器的私钥,此时就可以判定该服务器的身份是合法的。

​通信的双方身份合法之后,就要建立安全的会话。

6.​客户端会生成会话密钥,使用服务器公钥加密。服务器用自己的私钥解密后,用会话密钥加密数据进行传输

参考:http://blog.sina.com.cn/s/blog_c7ef5e8c0102we9g.html

符号说明:

1、A:客户端,如浏览器。

2、B:服务器端,如网站。

3、CA:CA证书签发机构。

4、P:CA机构的公钥,所有人可见,并且直接嵌入浏览器内了。

5、Sca:CA机构的私钥,仅有CA机构自己可见。用来签名自己签发的证书。

6、B':冒充B网站的网站,如C网站。试图申请CA证书来冒充B网站。可是CA机构要验证申请人的真实身份,并且证书要指定C网站的域名。

7、C'A':冒充CA机构的一方,有CA的公钥P,可是没有CA的私钥Sca,无法签名。

https通讯原理的更多相关文章

  1. 深入理解HTTPS通讯原理

    一.HTTPS简介 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),简单来讲就是加了安全的HTTP,即HTTP+SSL:我们知 ...

  2. 开源纯C#工控网关+组态软件(四)上下位机通讯原理

    一.   网关的功能:承上启下 最近有点忙,更新慢了.感谢园友们给予的支持,现在github上已经有.目标是最好的开源组态,看来又近一步^^ 之前有提到网关是物联网的关键环节,它的作用就是承上启下. ...

  3. HTTPS加密原理(转)

    Header HTTP.HTTPS在我们日常开发中是经常会接触到的. 我们也都知道,一般 Android 应用开发,在请求 API 网络接口的时候,很多使用的都是 HTTP 协议:使用浏览器打开网页, ...

  4. http 基础与通讯原理

    目录 http 基础与通讯原理 Internet 与中国 1990年10月 注册CN顶级域名 1993年3月2日 接入第一根专线 1994年4月20日 实现与互联网的全功能连接 1994年5月21日 ...

  5. HTTPS那些事 用java实现HTTPS工作原理

    HTTPS那些事 用java实现HTTPS工作原理 博客分类: java历险   今天被问到关于https原理的问题,结果由于知识掌握不牢靠,停留于表面,很多细节都无法回答清楚,于是决定把https的 ...

  6. HTTPS加密原理与过程

    HTTPS加密原理与过程 HTTP 超文本传输协议一种属于应用层的协议 缺点: 通信使用明文(不加密),内容可能会被窃听 不验证通信方的身份,因此有可能遭遇伪装 无法证明报文的完整性,所以有可能已遭篡 ...

  7. https 加密原理

    转载于 https://www.cnblogs.com/imteck4713/p/12016313.html 补充: <图解HTTP> 1.引言 随着互联网安全意识的普遍提高,对安全要求稍 ...

  8. HTTPS工作原理

    HTTPS是什么 HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,及以安全为目标的HTTP通道,简单说就是HTTP的安全版本. ...

  9. HTTPS实现原理

    HTTPS实现原理 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版 ...

随机推荐

  1. Ajax的两个用法

    1.实现的效果是:通过一个函数,里面调用Ajax,函数的返回值是Ajax成功调用之后得到的返回值. 用jQuery进行简单的演示: function getRobotInfo(id) { var ip ...

  2. resize2fs命令出现这个错误“resize2fs: Operation not permitted While trying to add group #6656” 有数据的会丢数据

    1. resize2fs命令出现这个错误“resize2fs: Operation not permitted While trying to add group #6656”,并且在/var/log ...

  3. JSONObject与JSONArray

    最近在学习过程中用到了稍微复杂点的json数据需要将json数据解析出来,这里就截取一部分作为例子 1.JSONObject介绍 JSONObject-lib包是一个beans,collections ...

  4. python的zipfile实现文件目录解压缩

    主要是 解决了压缩目录下 空文件夹 的压缩 和 解压缩问题 压缩文件夹的函数: # coding:utf- import os import zipfile def zipdir(dirToZip,s ...

  5. MyBatis是支持普通 SQL查询

    MyBatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML或注解用于配置 ...

  6. amqp server closed the connection. check login credentials socket closed

    rabbit, [ {default_user, <<"guest">>}, {default_pass, <<"guest" ...

  7. mysql更改utf8编码方式

    方法1: 一.查看数据库编码格式 1 mysql> show variables like 'character_set_database'; 二.查看数据表的编码格式 1 mysql> ...

  8. AuthorizeAttribute示例

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  9. elasticsearch性能因素总结

    一:硬件方面   在预算充足的情况下.特别是一些高并发业务的搜索.硬件层面占用整个elasticsearch性能空间很大比例. 1)内存: 单实例的情况下,尽量分配32G,排序和统计都是以及内存计算的 ...

  10. ETL概念,ETL流程

    ETL是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决策提供分析依据. ETL是BI项目重要的一个环节. 通常情况下,在 ...