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. svn 脚本替换

    #!/bin/bashfor i in `find /home/20180629tmp/svnfwq/uadminv4 -name .svn` do echo $i aa=`dirname $i` b ...

  2. ansible ansible_os_family == "RedHat" and ansible_lsb.major_release|int >= 6 转为数字比大小

    字符串转换为数字型再去比较 tasks: - shell: echo "only on Red Hat 6, derivatives, and later" when: ansib ...

  3. php 的rabbitmq 扩展模块amqp安装

    php 的rabbitmq 扩展模块amqp安装 2017年10月08日 10:34:22 阅读数:240 使用PHP开发,要使用中间队列rabbitmq, 必须要安装PHP的扩展模块amqp, 服务 ...

  4. 详解 Go 语言中的 time.Duration 类型

    swardsman详解 Go 语言中的 time.Duration 类型swardsman · 2018-03-17 23:10:54 · 5448 次点击 · 预计阅读时间 5 分钟 · 31分钟之 ...

  5. 修改多渠道打包的App名

    archiveNameFormat = '${flavorName}-${projectName}-${versionName}-${versionCode}'

  6. jira集成fisheye代码深度查看工具安装绿色版

    软件介绍: Fisheye 是一个源代码库深度查看软件,它可以挖掘源代码库中的有用信息,呈现在Web浏览器界面上,Fisheye优点: 1) Fisheye是一个基于Web的代码管理系统,可以与SVN ...

  7. 我们把Mybatis的功能架构分为三层:

    我们把Mybatis的功能架构分为三层: (1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库.接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理. (2) ...

  8. 在MVC设计模式中,JavaBean的作用是。(选择1项)

    A.Controller B.Model C.业务数据的封装 D.View 解答:B

  9. 【OpenWRT】网络配置

    cd /etc/config vim network vim wireless cd /etc/init.d/network

  10. iOS开发之--为PCH文件添加绝对路径

    要想设置PCH的相对路径,首先我们需要去查看绝对路径. 相对路径 点击PCH文件,Xcode的右侧会显示PCH的属性.这里我们可以获取到PCH的绝对路径.从工程的路径开始,前面使用$(SRCROOT) ...