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 在本质上采用了模型-视图-控制器 ...
随机推荐
- windows下编译ffmpeg
windows 编译ffmpeg 搞过很多次,每次总是磕磕碰碰,从头到尾不能一直顺利,浪费一些时间.终究起原因,都是当时记得,过段时间就忘了.好记性不如烂笔头,大好周末晚上,闲暇无事,记录最近一次编译 ...
- 在MAC上安装虚拟机搭建Ubuntu开发环境
由于工作需要,需要在LINUX环境搭建服务器,但是工作中使用的是MAC系统,只好用虚拟机来搭建LINUX服务器环境.下面记录介绍一下搭建步骤以供需要的人参考使用. 下载准备 虚拟机使用VMWare ...
- Codeforces Round #238 (Div. 2) D. Toy Sum 暴搜
题目链接: 题目 D. Toy Sum time limit per test:1 second memory limit per test:256 megabytes 问题描述 Little Chr ...
- Exception in thread "http-bio-8081-exec-3" java.lang.OutOfMemoryError: PermGen space
前言: 在http://www.cnblogs.com/wql025/p/4865673.html一文中我曾描述这种异常也提供了解决方式,但效果不太理想,现在用本文的方式,效果显著. 目前此项目只能登 ...
- 【BZOJ】【1529】 【POI2005】ska Piggy banks
本来以为是tarjan缩点……但是64MB的空间根本不足以存下原图和缩点后的新图.所以呢……并查集= = orz hzwer MLE的tarjan: /************************ ...
- 集合、拆箱、装箱、自定义集合的foreach
集合部分 参考:http://msdn.microsoft.com/zh-cn/library/0ytkdh4s(v=vs.110).aspx 集合类型是诸如哈希表.队列.堆栈.包.字典和列表等数据集 ...
- **PHP随机数算法
<?php $tmp = range(1,30);print_r(array_rand($tmp,10));?> 输出: Array( [0] => 6 [1] => 8 [2 ...
- POJ1013Counterfeit Dollar
这个题主要是判断硬币真假,可能轻可能重,称三次,要输出哪枚是假币,还要输出是重的还是轻的,所以最主要的是标记变量 #include<cstdio> #include<cstring& ...
- Oracle 9 - 分析undo和snapshot too old错误
什么操作会生成undo INSERT生成的UNDO最少,只要记录新的rowid UPDATE生成的undo多一点,它要记录修改前的数据中的那部分. DELETE生成最多的undo, 因为它要记录整行被 ...
- Project Euler 96:Su Doku 数独
Su Doku Su Doku (Japanese meaning number place) is the name given to a popular puzzle concept. Its o ...