一篇文章带你了解https是如何做到客户端与服务端之间安全通信
https是什么。
超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。
历史上,HTTPS连接经常用于万维网上的交易支付和企业信息系统中敏感信息的传输。在2000年代晚期和2010年代早期,HTTPS开始广泛使用于保护所有类型网站上的网页真实性,保护账户和保持用户通信,身份和网络浏览的私密性。
维基百科上可以看出,https是用于互联网客服端与服务器交互的一个加密协议。
当然,这篇文章不是来讲述https协议的过程,浏览器与服务端几次握手,如何传输数据,与http之间的区别;也不是讲述如何实现一个https协议。这篇文章只是用来通俗的说法,来讲述https是如何做到加密的。
以前看过一个小品,夫妻俩吵架,双方都不想跟对方说话,正好来了个中间人,夫妻俩就让这个中间人来传话,但这个中间人不安好心,老公说一句"不吵了行不行",他传到老婆那就变成“你真丑”。这个现象就是典型的中间人攻击,劫持数据,篡改后再传递,http之间是明文通信,会轻而易举的被中间人攻击,所以是不安全的。
那么如何做到安全传输信息呢。两个字:加密。
大家都知道加密分为两种,
- 对称加密
- 非对称加密
一句话说明两者的区别:对称加密,加密解密使用相同密钥。非对称加密,加密解密使用不同密钥。
所以我们想要做到http信息安全,一定要选择非对称加密。
ok,当客户端想要获取数据时,服务端获将数据传输给客户端的同时,将非对称加密的私钥传递给客户端。当客户端准备传递给服务端数据的时候,使用这个私钥,加密数据之后,再次传递给服务端。这时候,如果有第三人在中间拦截信息,只能拦截到服务端传递给客户端的数据,客户端传递给服务端的数据,因为使用了密钥加密(非对称性加密,使用公钥加密的数据,只能用私钥解密),中间人无法破解,也就保证了一端数据安全。
那么如何保证服务器给传输到客户端的数据也安全呢,这就涉及到了一个名词数字证书,很多人都听说过数字证书,但是这个数字生证书从本质上是什么?下文我就介绍一下。
数字证书
公开密钥认证(英语:Public key certificate),又称公开密钥证书、公钥证书、数字证书(digital certificate)、数字认证、身份证书(identity certificate)、电子证书或安全证书,是用于公开密钥基础建设的电子文件,用来证明公开密钥拥有者的身份。此文件包含了公钥信息、拥有者身份信息(主体)、以及数字证书认证机构(发行者)对这份文件的数字签名,以保证这个文件的整体内容正确无误。拥有者凭着此文件,可向电脑系统或其他用户表明身份,从而对方获得信任并授权访问或使用某些敏感的电脑服务。电脑系统或其他用户可以通过一定的程序核实证书上的内容,包括证书有否过期、数字签名是否有效,如果你信任签发的机构,就可以信任证书上的密钥,凭公钥加密与拥有者进行可靠的通信。
关注数字证书理论可以直接移步wiki,下面讲一些通俗的说法。数字证书
数字证书是什么,其实可以理解为现实世界的身份证。身份证从哪里来的,国家;那么数字证书从哪里来的,从根证书颁发而来的,两者都是用来验证一个物质存在的身份的真实性。
那么身份证可以被伪造吗,可以;那么数字证书当然也可以被伪造。但是,伪造的身份证可以通过检查吗,从理论上显然不可以,那么伪造的数字证书可以通过检查吗,当查找链路发现不是根证书颁发的证书,就是一个不受保护的证书。
两者都一个相对安全稳定的端,国家身份证的数据库以及根证书存储位置。
现在我想知道根证书是如何给下游颁发子证书的呢。
非对称行加密有个特性,公钥加密的数据只能用私钥解密,而私钥加密的数据只能用公钥解密。所以说,根证书根据申请者的信息生成对应的公钥,发布给服务器,简单的说,这个公钥就可以叫做证书。
所以,当服务器传递给客户端信息的时候,我们使用这个公钥加密一段字符串(token),传递给客户端,这时候客户端进行解密这个字符串(token)并比较这个token是否生效,从而客户端(浏览器)就可以得知,当前的数据是否被劫持,就可以保证数据传递的安全性。
客户端的根证书从哪里来的?有一部分存储在操作系统的证书列表,也有存储在浏览器中。所以说,在操作系统中尽量少的去信任未知证书,如果错误添加,有可能就会造成伪造证书,以及中间人攻击的可能性。
最后用一张最简单的图片总结,https 是如何保证客户端与服务端通信的安全的。
后记
当然https比这复杂的要多,例如随机字符串,多次握手,以及对称加密密钥的传递。数字证书也更复杂,这里为了更浅显的总结并没有一一赘述。
创作于我的网站
一篇文章带你了解https是如何做到客户端与服务端之间安全通信相关推荐
- 浅谈客户端与服务端的加密通讯(HTTPS/AES/RSA/RequestBodyAdviceAdapter/ResponseBodyAdvice)
目录 前言 HTTPS与SSL证书 AES对称加密 RSA非对称加密 AES + RSA 组合加密 服务端请求参数解密拦截器RequestBodyAdviceAdapter 服务端返回参数加密拦截器R ...
- 一篇文章带你了解Flannel
from: http://dockone.io/article/618 DockOne技术分享(十八):一篇文章带你了解Flannel [编者的话]Flannel是 CoreOS 团队针对 Kuber ...
- 一篇文章带你详解 TCP/IP 协议(下)
前面的第一二三章已在上篇讲解,还没看过的可以先看看:一篇文章带你详解 TCP/IP 协议(上) 本文继续讲解第四章. 四.网络层中的 IP 协议 IP(IPv4.IPv6)相当于 OSI 参考模型中的 ...
- 一篇文章带你领悟 Frida 的精髓(基于安卓8.1)
转载(一篇文章带你领悟Frida的精髓(基于安卓8.1)):https://www.freebuf.com/articles/system/190565.html <Frida操作手册>: ...
- 一篇文章带你熟悉 TCP/IP 协议-(三)
一篇文章带你熟悉 TCP/IP协议-(一)-https://segmentfault.com/a/11... 一篇文章带你熟悉 TCP/IP协议-(二)-https://segmentfault.co ...
- 乐鑫esp8266学习rtos3.0笔记第3篇: 一篇文章带你搞掂存储技术 NVS 的认识和使用,如何利用NVS保存整型、字符串、数组以及结构体。(附带demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个" ...
- 如何使用RSA 对数据加解密和签名验签?一篇文章带你搞定
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 三分割据纡筹策,万古云霄一羽毛. ...
- 一篇文章带你详解 HTTP 协议
一篇文章带你详解 HTTP 协议 本篇文章篇幅比较长,先来个思维导图预览一下. 一张图带你看完本篇文章 一.概述 1.计算机网络体系结构分层 计算机网络体系结构分层 2.TCP/IP 通信传输流 利用 ...
- 一篇文章带你了解webscraper爬虫插件
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夜阑卧听风吹雨,铁马冰河入梦来. ...
最新文章
- 【组队学习】【31期】青少年编程(Scratch 四级)
- 上拉加载下拉刷新了解下
- HDU Problem 2062 Bone Collector【01背包】
- c语言while退出无限循环,请教:为什么我用while(!feof(fp))时会出现无限循环????...
- java项目怎样提高性能_Java程序员成长之路(如何提高Java程序性能?)
- 设备驱动,字符设备驱动、(总线)设备驱动模型、sysfs文件系统、平台设备驱动
- mysql 数据库属性_mysql 查看数据库属性
- 【linux】WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
- mysql引擎机制_MySQL引擎特性:InnoDB同步机制
- 精选| 2019年3月R新包推荐
- hadoop 新API与旧API对比
- PostgreSQL参数学习:random_page_cost
- 【运动学】基于matlab GUI模拟鱼类目标追击问题【含Matlab源码 166期】
- SHA256算法原理详解
- 如何将Excel表格进行美化?学会这几招你的表格将不会那么难看
- Win7下IIS安装PHP环境
- 【挨踢人物传】英雄不问出路,从化工员到微软企业护航专家(第16期)
- 首旅如家蝉联世界酒店集团10强,中高端酒店开业超1000家
- NB模组RSRP按比例转换为CSQ范围信号
- 以太坊白皮书(中英对照版)