HTTPS 通讯流程

原文地址 https://blog.csdn.net/wangweilica6/article/details/50171457

一、简介 前一篇文章,我总结了下,如何部署https服务,开通ssl通道。但是对于https整个通信流程还有许多疑惑的地方,所以花了好几天看了各种资料,其中有的资料也误导了我,导致我走了些弯路。接下来我就来总结一下,帮助初学者理清https通信流程。 二、名词解释 1、签名 签名就是在信息的后面再加上一段内容,可以证明信息没有被修改过,怎么样可以达到这个效果呢?一般是对信息做一个hash计算得到一个hash值,注意,这个过程是不可逆的,也就是说无法通过hash值得出原来的信息内容。在把信息发送出去时,把这个hash值加密后做为一个签名和信息一起发出去。接收方在收到信息后,会重新计算信息的hash值,并和信息所附带的hash值(解密后)进行对比,如果一致,就说明信息的内容没有被修改过,因为这里hash计算可以保证不同的内容一定会得到不同的hash值,所以只要内容一被修改,根据信息内容计算的hash值就会变化。当然,不怀好意的人也可以修改信息内容的同时也修改hash值,从而让它们可以相匹配,为了防止这种情况,hash值一般都会加密后(也就是签名)再和信息一起发送,以保证这个hash值不被修改。但是客户端如何解密呢?这就涉及到数字证书了。 2、数字证书 主要包含这几大块: ·        证书的发布机构 ·        证书的有效期 ·        公钥 ·        证书所有者(Subject) ·        签名所使用的算法 ·        指纹以及指纹算法 数字证书可以保证数字证书里的公钥确实是这个证书的所有者(Subject)的,或者证书可以用来确认对方的身份。 3、   公钥私钥 刚开始的时候以为https只能用公钥进行加密,私钥解密,后来看来“公钥密码体制”,才知道,其实两者都可以加密、解密。 4、RSA(非对称加密) RSA是一种公钥密码体制,现在使用得很广泛。公钥公开,私钥保密,它的加密解密算法是公开的。由公钥加密的内容可以并且只能由私钥进行解密,并且由私钥加密的内容可以并且只能由公钥进行解密。也就是说,RSA的这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容可以由并且只能由对方进行解密。可用于验证hTTPS中各种密钥的加密。 5、对称加密 加密使用的密钥和解密使用的密钥是相同的。因此对称加密算法要保证安全性的话,密钥要做好保密,只能让使用的人知道,不能对外公开。   三、通信流程 为了搞清楚,https是怎样运转的,接下来是借鉴一篇博文,并稍加改动,形象易懂的解释了整个流程。 step1: “客户”向服务端发送一个通信请求 “客户”->“服务器”:你好    step2: “服务器”向客户发送自己的数字证书。证书中有一个公钥用来加密信息,私钥由“服务器”持有 “服务器”->“客户”:你好,我是服务器,这里是我的数字证书    step3: “客户”收到“服务器”的证书后,它会去验证这个数字证书到底是不是“服务器”的,数字证书有没有什么问题,数字证书如果检查没有问题,就说明数字证书中的公钥确实是“服务器”的。检查数字证书后,“客户”会发送一个随机的字符串给“服务器”用私钥去加密。 “客户”->“服务器”:向我证明你就是服务器,这是一个随机字符串   step4:服务器把加密的结果返回给“客户”。 “服务器”->“客户”:{一个随机字符串}(用私钥进行RSA加密)   step5:“客户”用公钥解密这个返回结果,如果解密结果与之前生成的随机字符串一致,那说明对方确实是私钥的持有者,或者说对方确实是“服务器”。 验证“服务器”的身份后,“客户”生成一个对称加密算法和密钥,用于后面的通信的加密和解密。这个对称加密算法和密钥,“客户”会用公钥加密后发送给“服务器”,别人截获了也没用,因为只有“服务器”手中有可以解密的私钥。这样,后面“服务器”和“客户”就都可以用对称加密算法来加密和解密通信内容了。 “服务器”->“客户”:{OK,已经收到你发来的对称加密算法和密钥!有什么可以帮到你的?}(用密钥进行对称加密) “客户”->“服务器”:{我的帐号是aaa,密码是123,把我的余额的信息发给我看看}(用密钥进行对称加密) “服务器”->“客户”:{你好,你的余额是100元}(用密钥进行对称加密) --------------------- 本文来自 wangweilica6 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/wangweilica6/article/details/50171457?utm_source=copy

原文地址:https://www.cnblogs.com/LJWJL/p/9687522.html

时间: 2024-08-30 06:22:38

HTTPS 通讯流程的相关文章

http认证原理和https工作流程

一.http认证原理 http定义了两个官方认证:基本认证和摘要认证,两者遵循相同的流程: 1 客户端发起GET请求 2 服务器响应401 Unauthorized,WWW-Authenticate指定认证算法,realm指定安全域 3 客户端重新发起请求,Authorization指定用户名和密码信息 4 服务器认证成功,响应200,可选Authentication-Info [基本认证] 将"用户名:密码"打包并采用Base-64编码 缺点:密码很容易被窥探,可以挟持编码后的用户名

使用 jdk自带ssl包 进行 https通讯双向认证

package com.iraid.test; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.security.Key

apache httpclient-4.5 https通讯 双向认证

maven dependence <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> 2. 测试类 package com.iraid.test; import java.io.BufferedRea

深入理解HTTPS通讯原理

一.HTTPS简介 HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),简单来讲就是加了安全的HTTP,即HTTP+SSL:我们知道HTTP通讯时,如果客户端C请求服务器S,那么可以通过网络抓包的形式来获取信息,甚至可以模拟服务器S端,来骗取与C端的通讯信息:这对互联网应用在安全领域的推广非常不利:HTTPS解决了这个问题. 二.HTTPS与HTTP的区别 1)HTTPS的服务器需要到CA申请证书,以证明自己服务器的用途: 2

libiop通讯流程和api讲解

上一篇讲到了libiop基本结构,这次根据libiop提供的test跟踪下消息和运行流程 void echo_server_test() { int keepalive_timeout = 60; iop_base_t *base = iop_base_new(10240); printf("create a new iop_base_t object.\n"); iop_add_tcp_server(base,"0.0.0.0",7777, my_echo_par

https加密流程和原理

其实,我对https以前只有一个大概的了解,最近工作中遇到一个问题从而将https协议做了一个彻底的学习和认知,下边介绍一下我的个人认识,我不一定按照很官方的语句去表达,本人喜欢用通俗易懂的语言描述问题,目的是让人理解 那么,首先,https协议是什么,一句话,https=http+ssl安全传输协议+ca身份认证:https是http的安全版,它不仅涵盖http协议,而且加入了ssl安全加密传输协议保证数据传输的安全性,ca身份认证则验证服务器域名是否是真实可靠的 1,下面,用一幅图展示一下h

https基础流程

背景: https基于SSL,目的是保护http通信的过程,防止中间人篡改信息,或假冒服务端的问题. 要解决的问题: 1. 客户端如何证明是与正确的服务端进行通信 2. 客户端如何确认收到服务端的信息没有经中途某人篡改 3. 如何保证即使消息被中间人截获,也不能知道消息的内容 通信流程: 0. 在目前主流浏览器.Android.IOS手机中,会内置一些常用机构颁发的根证书(证书颁发机构的公钥): 0.1 某服务器要申请证书,必须先自行生成一对公私钥: 0.2 服务器将公钥交给第三方证书机构买证书

Https通讯原理

https是基于安全目的的Http通道,其安全基础由SSL层来保证.最初由netscape公司研发,主要提供了通讯双方的身份认证和加密通信方法.现在广泛应用于互联网上安全敏感通讯. Https是什么? Https与Http主要区别 协议基础不同:Https在Http下加入了SSL层, 通讯方式不同:Https在数据通信之前需要客户端.服务器进行握手(身份认证),建立连接后,传输数据经过加密,通信端口443. Http传输数据不加密,明文,通信端口80. SSL协议基础 SSL协议位于TCP/IP

DIOCP网络通讯流程

DIOCP 运作核心探密 原文连接: http://blog.qdac.cc/?p=2362 原作者: BB 天地弦的DIOCP早已经广为人知了,有很多的同学都用上了它,甚至各种变异.修改版本也出了不少.我最近也在学习DIOCP,打算将它用于自己的服务端,今天让我们来一起探密它(DIOCP)的运作核心吧. DIOCP作为对Windows的IOCP完成端口封装,拥有了很高的性能,经过对ECHO示例的测试,它能轻松应对几万连接和并发.网络通讯一般分为6大阶段:请求连接.接受连接.接收数据.处理数据.