[ 网络协议篇 ] 一篇文章让你掌握什么是 数字证书 ?什么是SSL ?什么是 TLS ?(下)

简介: [ 网络协议篇 ] 一篇文章让你掌握什么是 数字证书 ?什么是SSL ?什么是 TLS ?(下)

🍬 博主介绍


👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~

✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】

🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋

🎉欢迎关注💗一起学习👍一起讨论⭐一起进步📝文末有彩蛋

🙏作者水平有限,欢迎各位大佬指点,相互学习进步!


二、什么是SSL ?(数字证书的一种)



从前面我们可以了解到HTTPS 核心的一个部分是数据传输之前的握手,握手过程中确定了数据加密的密码。


在握手过程中,网站会向浏览器发送 SSL 证书,SSL 证书和我们日常用的身份证类似,是一个支持 HTTPS 网站的身份证明,SSL 证书里面包含了网站的域名,证书有效期,证书的颁发机构以及用于加密传输密码的公钥等信息。


由于公钥加密的密码只能被在申请证书时生成的私钥解密,因此浏览器在生成密码之前需要先核对当前访问的域名与证书上绑定的域名是否一致,同时还要对证书的颁发机构进行验证,如果验证失败浏览器会给出证书错误的提示。


1. 基本概念

1. SSL

SSL全称 Secure Socket Layer,及安全套接字层。

位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。

SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。


该协议由两层组成:SSL记录协议和SSL握手协议:

SSL 记录协议(SSL Record Protocol)它建立在可靠的传输协议(TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

SSL 握手协议(SSL Handshake Protocol)它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。


2. TLS

TLS:全称 Transport Layer Security ,即传输层安全协议。

用于两个应用程序之间提供保密性和数据完整性。

该协议由两层组成:TLS记录协议和TLS握手协议:


TLS是在SSL的基础上标准化的产物,目前 SSL3.0 TLS1.0 保持一致的,二者是并列关系,只是大家习惯称呼 SSL

web 服务 nginx 默认支持的就是 TLS1.0TLS1.1TLS1.2协议。调用的 openssl 库中,对应的就是 ssl3_acceptt 函数。


2. 所在网络模型层次分析:

1. 所在网络层次位置:

SSL/TLS位于传输层和应用层之间(会话层),应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。

image.png


2. SSL/TLStcp/ip协议栈中的位置

SSL/TLS协议在传输层上封装了应用层的数据,因此可以在不需要修改应用层协议的前提下给不安全的应用层协议提供一定的安全保障。

image.png


3. SSL/TLS协议栈

image.png


3. 简单的SSL握手连接过程分析(仅服务端交换证书给客户端)


1. SSL建立握手连接目的:

1.身份的验证,clientserver确认对方是它相连接的,而不是第三方冒充的,通过证书实现

2.clientserver交换session key,用于连接后数据的传输加密和hash校验


2. 从数据包的角度来看:

1. client发送ClientHello,指定版本,随机数(RN),所有支持的密码套件(CipherSuites)

2. server回应ServerHello,指定版本,RN,选择CipherSuites,会话ID(Session ID)

3. server发送Certificate:服务器将数字证书和到根CA整个链发给客户端,使客户端能用服务器证书中的服务器公钥认证服务器

4. Server发送ServerKeyExchange

5. Server发送ServerHelloDone

6. Client发送ClientKeyExchange,用于与server交换session key

7. Client发送ChangeCipherSpec,指示Server从现在开始发送的消息都是加密过的

8. Client发送Finishd,包含了前面所有握手消息的hash,可以让server验证握手过程是否被第三方篡改

9. Server发送ChangeCipherSpec,指示Client从现在开始发送的消息都是加密过的

10. Server发送Finishd,包含了前面所有握手消息的hash,可以让client验证握手过程是否被第三方篡改,并且证明自己是Certificate密钥的拥有者,即证明自己的身份

image.png


3. HTTPS 为例:(五个步骤)

第一步:浏览器给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。

image.png


第二步:服务器确认双方使用的加密方法,使用的tls版本号和一个随机数。

image.png


第三步:并给出数字证书、以及一个服务器运行Diffie-Hellman算法生成的参数,比如pubkey

image.png


第四步:浏览器获取服务器发来的pubkey,计算出另一个pubkey,发给服务器。

image.png


第五步:服务器发给浏览器一个session ticket (以 HTTPS 为例)。

image.png


4. SSL证书的类型

实际上,我们使用的证书分很多种类型,SSL证书只是其中的一种。证书的格式是由X.509标准定义。SSL证书负责传输公钥,是一种PKIPublic Key Infrastructure,公钥基础结构)证书。


根据用途不同大致有四类:


1. SSL证书,用于加密HTTP协议,也就是HTTPS

2. 代码签名证书,用于签名二进制文件,比如Windows内核驱动,Firefox插件,Java代码签名等等。

3. 客户端证书,用于加密邮件。

4. 双因素证书,网银专业版使用的USB Key里面用的就是这种类型的证书。


这些证书都是由受认证的证书颁发机构——我们称之为CACertificate Authority)机构来颁发,针对企业与个人的不同,可申请的证书的类型也不同,价格也不同。CA机构颁发的证书都是受信任的证书,对于SSL证书来说,如果访问的网站与证书绑定的网站一致就可以通过浏览器的验证而不会提示错误。


5. SSL拓展

1. SSL的申请与规则

SSL证书可以向CA机构通过付费的方式申请,也可以自己制作。
CA机构颁发的证书价格非常昂贵,而且有效期一般只有一年到三年不等(年数不同,价格也不同),过期之后还要再次交钱申请,因此一般只有企业才会申请证书。


随着个人网站的增多,目前也有针对个人的SSL证书服务,价格相对便宜一些,国内的话400多块钱就能申请到一个,国外更是有免费的SSL证书可以申请。
在申请SSL证书时需要向CA机构提供网站域名,营业执照,以及申请人的身份信息等。网站的域名非常重要,申请人必须证明自己对域名有所有权,如果支持Hotmail.comGmail.comSSL证书都可以随便申请,黑客们就不用做假证书欺骗了。


一个证书一般只绑定一个域名,如果CA机构心情好的话,会免费再绑一个,比如你要申请域名时绑定的域名是www.runoob.com,那么只有在浏览器地址是https://www.runoob.com的时候,这个证书才是受信任的。

如果地址是https://tt.runoob.com或者https://login.runoob.com,那么这个证书由于访问的域名与证书绑定的域名不同,仍然会被浏览器显示为不受信任的。


CA机构也提供申请通配符域名(例如,*.runoob.com),通配符域名相当于绑定了主域名下的所有域名,因此使用起来非常方便,但是价格也超级昂贵,一个通配符域名一年大概得5000块钱,只有企业才可以申请。



2. 查看证书的信息:以谷歌为例:

在访问 HTTPS协议的 网站的时候,这时谷歌浏览器上会有一个小锁头,点一下那个小锁头再点击里面的"链接是安全的",再点击"证书有效",就会出现上图的证书窗口,这里面我们可以看到这个证书只有一个用途——向远程计算机证明身份信息,证书的用途会有很多,SSL只是其中之一。

image.png


3. SSL证书的验证过程

证书以证书链的形式组织,在颁发证书的时候首先要有根CA机构颁发的根证书,再由根CA机构颁发一个中级CA机构的证书,最后由中级CA机构颁发具体的SSL证书。


我们可以这样理解,根CA机构就是一个公司,根证书就是他的身份凭证,每个公司由不同的部门来颁发不同用途的证书,这些不同的部门就是中级CA机构,这些中级CA机构使用中级证书作为自己的身份凭证,其中有一个部门是专门颁发SSL证书,当把根证书,中级证书,以及最后申请的SSL证书连在一起就形成了证书链,也称为证书路径。


在验证证书的时候,浏览器会调用系统的证书管理器接口对证书路径中的所有证书一级一级的进行验证,只有路径中所有的证书都是受信的,整个验证的结果才是受信。


根证书是最关键的一个证书,如果根证书不受信任,它下面颁发的所有证书都不受信任。操作系统在安装过程中会默认安装一些受信任的 CA 机构的根证书。


根证书的有效期长,支持的用途多以方便颁发不同用途类型的中级证书;中级证书用途单一,有效期相对短一些,但是比具体的 SSL 证书要长很多。


如果 SSL 证书验证失败根据浏览器的不同会有不同的错误提示,验证失败原因也会给出提示。


4. SSL证书验证失败有以下三点原因:

1. SSL证书不是由受信任的CA机构颁发的

2. 证书过期

3. 访问的网站域名与证书绑定的域名不一致


5. SSL证书的安全问题

HTTPS 最常见的攻击手段就是 SSL 证书欺骗或者叫 SSL 劫持,是一种典型的中间人攻击。不过 SSL 劫持并非只是用于攻击目的,在一些特殊情况下利用 SSL 劫持我们可以更顺畅的访问网络,我会在后文提到。


以攻击为目的的 SSL 劫持如果不注意浏览器安全提示的话,很容易就中招。当网络中有中间人发起 SSL 劫持攻击时,攻击者需要伪造一个 SSL 证书发给浏览器,这个时候由于伪造的SSL 证书不受信任,浏览器会给出提示。


这里有一个误区,当 SSL 证书不受信任的时候,并不一定就是有 SSL 劫持发生,有种例外情况是:一些个人网站买不起合法的SSL证书,因此会自己制作一个 SSL 证书来加密传输的数据。如果你经常访问某个个人网站,而且你知道这个网站是干什么的,那么这种情况可以不用担心。但是如果你访问的是网银,在线支付,或者是hotmail.comgmail.com等,这类公司性质的网站一定会申请合法的 SSL 证书(12306.cn除外),一旦 SSL 证书不受信任,应该果断的终止访问,这个时候网络中一定会存在异常行为,对于一些小区宽带的用户一定要注意这点。


所以作为个人用户,你一定要知道你访问的是什么网站,如果你只是一个没有多少计算机只是的普通网民,我相信你不会经常上那些自己制作 SSL 证书的个人网站(12306.cn除外),因此如果你没有办法判断网络是不是有异常,只要是证书有问题的,干脆就别再访问了。


6. 总结使用 SSL 证书一下要注意的问题

1. 除非必要,不要随意安装根证书。安装根证书的时候一定要明确证书的来源。

2. 对于网银,在线支付,重要邮箱等网站,一定要确保SSL证书是没有问题的,如果浏览器给出SSL证书错误的警告,一定要拒绝访问。一些小区宽带用户一定要注意这点。

3. 由于现在个人申请 SSL 证书比较便宜,一定要注意挂着合法 SSL 证书的钓鱼网站(国外比较常见)。对于钓鱼网站,一定要看清域名,另外别相信什么中奖的消息,同时要安装带有钓鱼防护功能的安全软件。


三、SSL证书和数字证书的关系



SSL证书和CA证书是从属关系,因为SSL是众多CA证书中的一种。

CA是数字证书管理机构,SSL证书一种数字证书,SSL证书由CA机构签发的。

不过CA机构签发的证书有很多种,都叫CA证书,所以SSL证书只是其中一种。

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
3月前
|
安全 网络协议 Linux
家庭实验室系列文章 - 电脑如何配置网络唤醒 (WOL)?
家庭实验室系列文章 - 电脑如何配置网络唤醒 (WOL)?
|
23天前
|
安全 数据建模 网络安全
深入理解SSL数字证书:定义、工作原理与网络安全的重要性
本文阐述了SSL数字证书在网络安全中的关键作用,定义了其作为验证服务器身份的数字凭证,基于PKI体系保障数据传输安全。文章介绍了三种类型的证书,包括DV、OV和EV,适用于不同安全需求的网站。获取和安装证书涉及向证书颁发机构申请并部署到服务器。在网络安全挑战下,正确使用和管理SSL证书对于保护用户数据和提升信任度至关重要。
|
2月前
|
安全 Linux 网络安全
Qt SSL/TLS 安全通信类:构建安全网络应用的关键组件
Qt SSL/TLS 安全通信类:构建安全网络应用的关键组件
80 0
|
2月前
|
开发框架 安全 网络安全
Qt5.14.2揭秘Qt与SSL/TLS的完美邂逅:打造坚不可摧的网络安全防线
Qt5.14.2揭秘Qt与SSL/TLS的完美邂逅:打造坚不可摧的网络安全防线
|
2月前
|
算法 安全 网络协议
一文搞懂SSL/TLS
一文搞懂SSL/TLS
一文搞懂SSL/TLS
|
2月前
|
运维 安全 网络安全
带你读《网络安全等级保护2.0定级测评实施与运维》精品文章合集
带你读《网络安全等级保护2.0定级测评实施与运维》精品文章合集
|
2月前
|
SDN 网络虚拟化 Windows
带你读《智慧光网络:关键技术、应用实践和未来演进》精品文章合集
带你读《智慧光网络:关键技术、应用实践和未来演进》精品文章合集
|
2月前
|
机器学习/深度学习 编解码 人工智能
一篇文章搞懂CNN(卷积神经网络)及其所含概念
一篇文章搞懂CNN(卷积神经网络)及其所含概念
77 0
一篇文章搞懂CNN(卷积神经网络)及其所含概念
|
3月前
|
网络协议 物联网 Linux
WireGuard 系列文章(七):使用 WireGuard 和 Netmaker 创建 Full Mesh 网络
WireGuard 系列文章(七):使用 WireGuard 和 Netmaker 创建 Full Mesh 网络
|
3月前
|
网络协议 物联网 Linux
WireGuard 系列文章(五):Netmaker 简介 - 创建和管理 WireGuard 网络的平台
WireGuard 系列文章(五):Netmaker 简介 - 创建和管理 WireGuard 网络的平台