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 在本质上采用了模型-视图-控制器 ...
随机推荐
- Ubuntu 常用软件安装方法
macubuntu 安裝方法: $wget https://github.com/downloads/ChinaLuo/Mac_Ubuntu/Mac_Ubuntu-12.04.tar.gz -O /t ...
- 生成最小树prim算法
最小生成树prim算法实现 ‘ ’最小生成树,就是权值(两点间直线的值)之和的最小值. 首先,要用二维数组记录点和权值.如上图所示无向图: int G[6][6]; G[1] ...
- ORA-01031:insufficient privileges
描述:oracle11g用scott用户在plsql上以sysdba身份登录显示以上错误,可是在cmd面板中却正常,网上各种找答案不没有对症,最后这位网友的回答解决了我的问题. 原帖网址:http:/ ...
- [转载]C# 多线程、控制线程数提高循环输出效率
C#多线程及控制线程数量,对for循环输出效率. 虽然输出不规律,但是效率明显提高. 思路: 如果要删除1000条数据,只使用for循环,则一个接着一个输出.所以,把1000条数据分成seed段,每段 ...
- 建立docker私有hub
docker是一个非常好用的虚拟化工具. 下面给出建立私有docker hub的方法.docker将私有hub的环境打包在registry image中 执行指令: docker run -p 500 ...
- UVA 11424 GCD - Extreme (I) (欧拉函数+筛法)
题目:给出n,求gcd(1,2)+gcd(1,3)+gcd(2,3)+gcd(1,4)+gcd(2,4)+gcd(3,4)+...+gcd(1,n)+gcd(2,n)+...+gcd(n-1,n) 此 ...
- Android开发--使用真机进行USB调试程序
在android小程序的开发过程中,使用eclipse中的虚拟机进行程序开发速度较慢,用真机开发可以显著提高调试的速度. 这里我用的操作系统是win7专业版,手机型号HM1S: 进行USB调试的主要步 ...
- SDUT1500 Message Flood
以前做过的用的字典树,可是貌似现在再用超内存....求解释... 问了LYN用的map函数做的,又去小小的学了map函数.... http://wenku.baidu.com/view/0b08cec ...
- REST_FRAMEWORK加深记忆-三种CLASS VIEW的进化史
一层一层的封装,又能到底层,就会有全局感啦... from rest_framework import status from rest_framework.response import Respo ...
- hdu 4599 Dice 概率DP
思路: 1.求f[n];dp[i]表示i个连续相同时的期望 则 dp[0]=1+dp[1] dp[1]=1+(5dp[1]+dp[2])/6 …… dp[i]=1+(5dp[1 ...