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 在本质上采用了模型-视图-控制器 ...
随机推荐
- Could not locate device support files.《This iPhone 5 (Model A1429) is running iOS 7.0.4 (11B554a), which may not be supported by this version of Xcode.》-b
原因:Xcode8 不支持 iOS7 解决方法: 在“/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/De ...
- c++ 函数返回指针 及用法
#include<string> #include<iostream> using namespace std; string fun1(int a) { string str ...
- Linux GPT分区
parted /dev/sdb //parted sdb磁盘 mklabel gpt //设置该磁盘分区为gpt mkpart primary 0% 100% //划分分区大 ...
- make -f dc_debug.mak 提示错误"/usr/bin/ld:can not find -l***"解决办法
在公司不同服务器上"make -f ***"程序的时候,有的服务器可以编译通过,有的却提示"/usr/bin/ld:can not find -l***"的错误 ...
- zabbix3.0 安装方法,一键实现短信、电话、微信、APP 告警
引言 免费开源监控工具 Zabbix 因其强大的监控功能得到各大互联网公司的广泛认可,具体功能不再详细介绍,在之前发布的 Zabbix 2.4.1 安装及微信短信提醒已经做了详细介绍,本篇主要对 Za ...
- POJ1144 Network 无向图的割顶
现在打算重新学习图论的一些基础算法,包括像桥,割顶,双连通分量,强连通分量这些基础算法我都打算重敲一次,因为这些量都是可以用tarjan的算法求得的,这次的割顶算是对tarjan的那一类算法的理解的再 ...
- POJ 1745
#include <iostream> #define MAXN 10005 using namespace std; int _m[MAXN]; ]; int main() { //fr ...
- JsRender系列demo(9)自定义函数
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 0环境设置 - SQLPLUS设置
define _editor=vi - SQL*PLUS默认编辑器set serveroutput on size 1000000 - 默认打开DBMS_OUTPUT, 不用每次使用都执行这个命令来启 ...
- 关于dynamic_cast
http://www.groad.net/bbs/read.php?tid-5476.html dynamic_cast 进行运行时强制转换.如果在执行时转换非法,则会转换失败.dynamic_cas ...