HTTPS通信机制
概述
使用HTTP协议进行通信时,由于传输的是明文所以很容易遭到窃听,就算是加密过的信息也容易在传输中遭受到篡改,因此需要在HTTP协议基础上添加加密处理,认证处理等,有了这些处理机制的HTTP成为HTTPS。
HTTPS是在应用层和传输层之间加入了SSL(Secure Socket Layer)安全套接层和TLS(Transport Layer Security)安全传输层协议。
正常情况下HTTP直接与TCP通信,而HTTPS是先与SSL通信后再与TCP进行通讯。
HTTPS加密机制
要了解HTTPS的加密方式首先需要只要什么是共享密钥加密(对称密钥加密)和公开密钥加密(非对称密钥加密)。
共享密钥加密:发送方传输给接收方一段加密的信息,那么接收方就要用密钥来解密这段信息,加密与解密的密钥是一样的,这样的加密方法为共享密钥加密,对于共享密钥加密,如果获取密钥的话那么任何人都可以解密这段信息。
公开密钥加密:公开密钥解决了共享密钥的问题,传输的信息用同一个公开的密钥进行加密,但是接收方解密的时候用私有的密钥进行解密,公开密钥加密又称作非对称密钥加密,当截取者获取公开密钥时也无法对信息进行解密,必须用私有密钥才可以解密。
HTTPS采用混合加密机制
HTTPS使用公开密钥加密的方式来传输用于共享密钥加密的密钥,然后双方都存在这个密钥后用共享密钥加密的方式进行信息传输。
然而这样做也会出现一些问题,当服务端与客户端在公开密钥加密的方式下进行通信时,怎样确保这个公开的密钥就是服务器传过来的,也有可能是在传输的过程中被替换掉了,由于存在这样的原因,所以需要使用由权威的数字证书认定机构颁发的公开密钥证书。
这样HTTPS传输的过程大概是这个样子:
HTTPS安全通信流程
客户端发送请求报文开始SSL通信,报文中包含客户端支持的SSL版本,加密组件列表。
服务器可进行SSL通信时会发送响应报文。
之后服务器发送Certificate报文,报文中包含公开密钥证书。
最后服务器发送报文通知客户端最初的SSL握手结束
SSL第一次握手结束后,客户端会用服务器的公开密钥加密一段随机密码串传输给服务器。
接着客户端会继承发送报文提示服务器,在此报文以后的通信将使用之前发送过去的随机密码串进行加密处理。
最后客户端发送结束报文。
服务器同样发送报文提示客户端,在此报文以后的通信将使用客户端之前发送过来的随机密码串进行加密处理。
服务器发送结束报文。
服务器和客户端的结束报文交换完后,SSL连接建立完成,开始HTTP请求。
HTTPS通信机制的更多相关文章
- 关于HTTPS通信机制的笔记
一次安全可靠的通信--HTTPS原理 转自:腾讯开放社区raphealguo文章
- RChain节点通信机制(上)
在介绍RChain的通信机制之前,先简单介绍一些以太坊的通信机制,它包括以下几个方面,如下详细了解以太坊的通信机制,可以查看https://github.com/ethereum/devp2p/blo ...
- 我所理解的Android组件化之通信机制
之前写过一篇关于Android组件化的文章,<Android组件化框架设计与实践>,之前没看过的小伙伴可以先点击阅读.那篇文章是从实战中进行总结得来,是公司的一个真实项目进行组件化架构改造 ...
- Android App 安全的HTTPS 通信
漏洞描述 对于数字证书相关概念.Android 里 https 通信代码就不再复述了,直接讲问题.缺少相应的安全校验很容易导致中间人攻击,而漏洞的形式主要有以下3种: 自定义X509TrustMana ...
- SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程(缺heartbeat)
SSL.TLS协议格式.HTTPS通信过程.RDP SSL通信过程 相关学习资料 http://www.360doc.com/content/10/0602/08/1466362_30787868 ...
- [转]Shared——探究react-native通信机制
原文:https://www.cnblogs.com/android-blogs/p/5623481.html 探究react-native通信机制 通信方式 我们所说的[通信],指的是RN中Java ...
- Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制
Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制 JAVA 中原生的 socket 通信机制 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.co ...
- Https通信原理及Android中实用总结
一.背景 Http俨然已经成为互联网上最广泛使用的应用层协议,随着应用形态的不断演进,传统的Http在安全性上开始面临挑战,Http主要安全问题体现在: 1,信息内容透明传输. 2,通信对方的身份不可 ...
- flux沉思录:面向store和通信机制的前端框架
一.综述 Flux 被用来描述“单向”的数据流,且包含某些特殊的事件和监听器. 响应式编程是一种面向数据流和变化传播的编程范式 flux是响应式编程的一种? Flux 在本质上采用了模型-视图-控制器 ...
随机推荐
- Android keyevent 中的各个值
Android keyevent 中的各个值,在使用adb shell input 的时候用得到. 是从http://blog.csdn.net/huiguixian/article/details/ ...
- 高质量的javascript代码 -- 深入理解Javascript
一. 编写高质量的javascript代码基本要点a) 可维护的代码(Writing Maintainable Code)i. 可读(注释)ii. 一致(看上去是同一个人写的)iii. 已记录b) 最 ...
- MapInfo格式转arggis格式
1. 下载MapInfo 11.0 2. 打开工具里的转换工具 3. 选择数据源和结果文件夹(目录中不能包含中文) 4. 转换成功.
- Codeforces Round #363 (Div. 2)->B. One Bomb
B. One Bomb time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...
- [设计模式] 11 享元模式 Flyweight
转 http://blog.csdn.net/wuzhekai1985/article/details/6670298 问题 在面向对象系统的设计何实现中,创建对象是最为常见的操作.这里面就有一个问题 ...
- PE文件结构详解(三)PE导出表
上篇文章 PE文件结构详解(二)可执行文件头 的结尾出现了一个大数组,这个数组中的每一项都是一个特定的结构,通过函数获取数组中的项可以用RtlImageDirectoryEntryToData函数,D ...
- 关于struts2如何去掉默认的后缀(.action)
struts2是可以配置默认的后缀名的,如http://localhost:8080/test.action,这个是默认的,但是也可以通过配置去修改这个.action为别的. 这里是通过一个常量配置改 ...
- POJ2104 K-th Number Range Tree
又是区间第k大,这次选择这道题是为以后写线段树套平衡树铺路的.Range Tree可以理解成线段树套vector吧,相当于每个结点多存了对应区间的一个排好序的序列.画一下就会知道空间的消耗是nlogn ...
- POJ 1459 Power Network(网络最大流,dinic算法模板题)
题意:给出n,np,nc,m,n为节点数,np为发电站数,nc为用电厂数,m为边的个数. 接下来给出m个数据(u,v)z,表示w(u,v)允许传输的最大电力为z:np个数据(u)z,表示发电 ...
- POJ 3318 Matrix Multiplication(矩阵乘法)
题目链接 题意 : 给你三个n维矩阵,让你判断A*B是否等于C. 思路 :优化将二维转化成一维的.随机生成一个一维向量d,使得A*(B*d)=C*d,多次生成多次测试即可使错误概率大大减小. #inc ...