https SSL/TLS 详解_ding283595861的博客-程序员秘密_https ssl版本

技术标签: linux学习  https ssl/tls详解  

1.TLS/SSL的前世今生

SSL(Secure Sockets Layer)最初由Netscape定义, 分别有SSLv2和SSLv3两个版本(SSLv1未曾对外发布); 在SSLv3之后SSL重命名为TLS。

TLS(Transport Layer Security)版本从TLSv1.0开始, TLSv1.0是在SSLv3的基础上升级而来。
在这里插入图片描述
多年以来已弃用的SSL协议也暴露出了一些高危漏洞(例如: POODLE, DROWN); 因此建议服务器禁用SSL3.0及SSL2.0, 只启用TLS协议。

2. 浏览器与客户端如何协商对称加密密钥
在这里插入图片描述
① 证书验证阶段
1.浏览器发起 HTTPS 请求(包含的内容如上图)
2.服务端返回CA证书(包含公钥)(包含的内容如上图)
3.客户端验证证书是否合法,如果不合法则提示告警

② 数据传输阶段
1.当证书验证合法后,在本地生成随机数
2.通过公钥加密随机数,并把加密后的随机数传输到服务端
3.服务端通过私钥对随机数进行解密
4.服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输(注意:客户端和服务端根据三个随机数+协商的算法,各自算出相同的密钥,后续数据传输,都用此密钥进行对称加密/解密)

3. 数字签名意义?
只能验证数据的完整性,依次来判断数据是否被篡改。为什么能否判断数据的完整性。因为服务器会把发送的数据A,先hash,然后在通过私钥加密最终形成数字签名,然后把数据A和数字签名发送给客户端,客户端拿到数据A和数字签名后,做两件事情,1. 把数据A 通过hash 得到摘要1 , 2. 使用公钥对数字签名解密得到摘要2, 然后对比摘要1和摘要2是否相等。依次来判断数据的完整性。
这里面可能大家有疑问。为什么要用hash得到摘要。 因为传输的数据长度是不固定。有几个字节,几K,几M…
大家可以 随便对一个文件 进行MD5 or SHA256,得到的长度都是固定的,从效率上来说。加密摘要比加密数据效率要高…
最显然的是性能问题,证书信息一般较长,比较耗时。而hash后得到的是固定长度的信息(比如用md5算法hash后可以得到固定的128位的值),这样加解密就快很多。
在这里插入图片描述
在这里插入图片描述
4. 有了数字签名为什么还不够安全?
因为数字签名只能保证数据的完整性。没有被篡改,但是客户端没法保证拿到的公钥一定是服务端传给自己的。中间可能被人偷梁换柱了. 客户端和服务端都毫不知情。
如果服务端把数据A+数字签名 发给客户端, 中间被B给劫持了, 由于B没有服务器私钥,没法对数字签名解密,所以即使有公钥,也没法对原数据进行篡改。即使篡改了,转发给客户端。也很容易检测到数据被篡改了。 那B咋弄呢。他想了一个办法,把数据A+数字签名替换成自己的。转发给客户端,对客户端来说。他认为没问题,校验都能过,然后又给服务器回数据。又被b劫持了。B此时就用原服务器公钥加密一份数据。发给服务器。对服务器来说。也认为数据没问题。等于说。服务器跟客户端交互都全程被B监控了。B相当于一个中转站。能够随意篡改数据。所以。只有数字签名远远不够。所以数字证书就来了。它是所有安全的保障
在这里插入图片描述
6. 数字证书
要理解数字证书,同样只要搞懂两个问题即可。

数字证书是什么东西?其实它就是一个 .crt 文件
数字证书是谁颁发的?由权威证书认证机构颁发,一般我们简称为 CA 机构
数字证书如何申请的?或者说如何颁发的?
为了让你理解这一过程,我画了下面这张图:
在这里插入图片描述

5. 为什么数字证书是安全的?
网站在使用HTTPS前,需要向CA机构申领一份数字证书,数字证书里含有证书持有者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明“该公钥对应该网站”。而这里又有一个显而易见的问题,“证书本身的传输过程中,如何防止被篡改”?即如何证明证书本身的真实性?身份证运用了一些防伪技术,而数字证书怎么防伪呢?解决这个问题我们就接近胜利了!
在这里插入图片描述
当客户端发起请求时,服务器将该数字证书发送给客户端,客户端通过CA机构提供的公钥(一般内置在本地浏览器中)对加密密文进行解密获得散列值(数字签名),同时将证书内容使用相同的散列算法进行Hash得到另一个散列值,比对两个散列值,如果两者相等则说明证书没问题。
在这里插入图片描述

中间人有可能篡改该证书吗?
假设中间人篡改了证书的原文,由于他没有CA机构的私钥,所以无法得到此时加密后签名,无法相应地篡改签名。浏览器收到该证书后会发现原文和签名解密后的值不一致,则说明证书已被篡改,证书不可信,从而终止向服务器传输信息,防止信息泄露给中间人。

既然不可能篡改,那整个证书被掉包呢?

中间人把证书掉包怎么办?
1.假设中间人把证书掉包,但是他没有证书私钥,所以没法解密数字证书的签名。伪造内容之后,客户端收取数据后。用公钥解密数字证书得到摘要跟数据明文hash之后得到的摘要不匹配,很容易就知道内容被篡改了。
2. 因为中间人没有证书的私钥。索性一不做二不休,把整个证书替换掉,用自己的另外合法合规的证书(自己有公钥和私钥),然后打包发一份新的证书给客户端是否可行???

给大家举个例子:
假设有另一个网站B也拿到了CA机构认证的证书,它想劫持网站A的信息。于是它成为中间人拦截到了A传给浏览器的证书,然后替换成自己的证书,传给浏览器,之后浏览器就会错误地拿到B的证书里的公钥了,这确实会导致上文“中间人攻击”那里提到的漏洞?

其实这并不会发生,因为证书里包含了网站A的信息,包括域名,浏览器把证书里的域名与自己请求的域名比对一下就知道有没有被掉包了。

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ding283595861/article/details/118752745

智能推荐

特征点最小凸包 matlab,一种基于对比度与角点最小凸包的显著性检测方法_weixin_39881155的博客-程序员秘密

一种基于对比度与角点最小凸包的显著性检测方法【专利摘要】本发明公开一种基于对比度与角点最小凸包的显著性检测方法。首先根据超像素的全局对比计算全局显著图,然后使用中心—周围算子计算局部显著图,最后根据Harris角点的最小凸包估计主要目标的位置与大小过滤到背景中部分区域的干扰,使得主要目标得以突出。【专利说明】一种基于对比度与角点最小凸包的显著性检测方法【技术领域】[0001]本发明涉及一种利用对比...

32岁的程序员被裁,mysql字段类型对照表_HUAXIAL的博客-程序员秘密_软件开发,字段对照

一面介绍一下自己问项目经历, 聊"数据同步"接着聊上了 K8S 的项目有没有什么钻研得比较深得技术?(大佬:kubernetes, golang, prometheus, java)kubernetes 的架构是怎么样的?这个问题很大,拆成 apiserver、controller、kubelet、scheduler 讲了一下golang 与 java 的比较这个问题又很大,当时主要对比了 vm、协程支持、面向对象和泛型的区别、以及自己对各自使用场景的一些理解

Java&Android 基础知识梳理(6) 字节输入输出流_weixin_33877885的博客-程序员秘密

一、概述Java IO库中的流代表有能力产出数据的数据源对象或者是有能力接收数据的接收端对象,我们一般把它分成输入和输出两部分:继承自InputStream或Reader派生的类都含有名为read的方法,用于读取单个字节或字节数组。继承自OuputStream或Writer派生的类都含有名为write的方法,用于写入单个字节或字节数组。我们通常通过叠合多个对象来提供所期望的功能,这其实...

《Java程序员面试秘笈》—— 面试题7 理解成员_weixin_34255793的博客-程序员秘密

本节书摘来异步社区《Java程序员面试秘笈》一书中的第1章,第1.7节,作者:常建功,更多章节内容可以访问云栖社区“异步社区”公众号查看。面试题7 理解成员下面关于实例成员的哪一种说法是正确的?(a)实例成员也被称为静态成员。(b)实例成员总是变量。(c)实例成员从不是方法。(d)实例成员隶属于实例,但不隶属于整个类。(e)实例成员总是代表...

php simplexmlelement,PHP SimpleXMLElement 对象_Ada-苏婉妤的博客-程序员秘密

今天在用RedbeanPHP 写数据库接口的时候,发现从SimpleXMLElement对象里面出来的值,按理说都是string, 怎么也不能赋值给RedbeanPHP, 用var_dump看了一下,发现SimpleXMLElement对象比较有意思,里面嵌套的对象以及property 的type 都是object,而且都是SimpleXMLElement 对象,在google上搜了一下发现问这个...

【问题笔记】Mac无法使用wireshark进行抓包,报错_Steve_Stone的博客-程序员秘密_wireshark开启混杂模式报错

#打开wireshark开启抓包时报错#Mac使用wireshark进行抓包时报错Mac wireshark报错The capture session could not be initiated on interface今天打开wireshark想抓个包,发现打开混杂模式失败,抓不了,报错如下:“The capture session could not be initiated on ...

随便推点

vba用sql读取html字段,用VBA代码取得access表或查询的记录值,赋值给变量或控件..._太閤秀吉的博客-程序员秘密

时 间:2008-02-01 14:48:04作 者:摘 要:有时我们想将表或查询的记录值赋予变量或控件,但在Access中不能直接通过SELECT语句来完成...正 文:有时我们想将表或查询的记录值赋予变量或控件,但在Access中不能直接通过Select语句来完成,比如有一个销售表结构和数据如下:商品 单价 销售量库存量-------------------...

ERROR: Unable to launch the RTL Schematic process. The input NGR file, Can not fnd the module的解决方法_code_robot的博客-程序员秘密

我今天的verilog程序语法检测已通过,在综合时先后如下错误提示:错误1: “ERROR: Unable to launch the RTL Schematic process. The input NGR file”错误2: “can not fnd the module/primitive".......".” (提示不能打开某一个你已经在工程中定义了的module)解决办法

进制A~Z,全字母26进制转化_weixin_34321977的博客-程序员秘密

为什么80%的码农都做不了架构师?>>> ...

java将Excel文件(xlsx,xls)转换为csv文件_weixin_34247032的博客-程序员秘密

http://blog.csdn.net/bryan__/article/details/40715309转载于:https://www.cnblogs.com/qyhol/p/6208532.html

android ipad 免费思维导图软件,推荐一款 iPad 能用的思维导图软件_最上川灵感大王的博客-程序员秘密

推荐一款 iPad 能用的思维导图软件2019-08-16 17:41:292点赞8收藏0评论思维导图是一种非常实用的思维发散工具,市面上也有不少相关的软件可以帮助我们绘制导图,但主流的软件也仅能支持在电脑或手机上操作。但是现在,MindMaster支持在ipad上操作啦!!一、精美的模板MindMaster iPad版思维导图软件内置导图社区功能,里边汇聚了成百上千幅原创思维导图作品。它们可以作...

Mac上wireshark无法抓包报错_Chary Liu的博客-程序员秘密

以免自己忘记问题mac打开wireshark抓包报错,显示权限不允许“The capture session could not be initiated on interface ‘en0’ (You don’t have permission to capture on that device).Please check to make sure you have sufficient permissions.If you installed Wireshark using the packa

推荐文章

热门文章

相关标签