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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: [ 网络协议篇 ] 一篇文章让你掌握什么是 数字证书 ?什么是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证书只是其中一种。

目录
打赏
0
0
0
0
17
分享
相关文章
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
SSL/TLS证书**是一种用于加密网络通信的数字证书
SSL/TLS证书**是一种用于加密网络通信的数字证书
196 6
SSL/TLS:构建数字世界的加密长城
**协议演进:从网景实验室到全球标准** 1994年,网景公司推出SSL协议,首次实现40位密钥加密传输,开启网络安全新纪元。此后,SSL 3.0、TLS 1.0相继问世,至2018年TLS 1.3将握手速度提升60%,强制前向加密确保历史会话安全。TLS协议通过非对称加密、对称加密和证书信任链等多层架构保障通信安全。2014年POODLE漏洞促使全行业禁用SSL 3.0,催生防降级机制。
SSL/TLS:互联网通信的加密基石与安全实践
**简介:** 在数字化时代,互联网每天传输海量敏感数据,网络攻击频发。SSL/TLS协议作为网络安全的基石,通过加密技术确保数据安全传输。本文解析SSL/TLS的技术架构、密码学原理、应用场景及常见误区,探讨其在未来的发展趋势,强调持续演进以应对新型威胁的重要性。 SSL/TLS不仅保障Web安全,还广泛应用于API、邮件、物联网等领域,并遵循合规标准如PCI DSS和GDPR。
SSL/TLS协议是什么?
SSL/TLS协议是什么?
324 57
【Azure 环境】从网络包中分析出TLS加密套件信息
An TLS 1.2 connection request was received from a remote client application, but non of the cipher suites supported by the client application are supported by the server. The connection request has failed. 从远程客户端应用程序收到 TLS 1.2 连接请求,但服务器不支持客户端应用程序支持的任何密码套件。连接请求失败。
132 2
SSL和TLS部署实践
在TLS中,所有安全性都以服务器的加密身份开始,这就需要一个强大的私钥来防止攻击者进行模拟攻击。同样重要的是拥有一个有效和强大的证书,它会授予私钥来代表一个特定的主机名。
118 2
SSL和TLS部署实践
【10月更文挑战第28天】在TLS中,服务器的加密身份和强大私钥是安全基础,2048位RSA密钥足以满足大多数需求。保护私钥需在可信环境生成、加密存储、使用HSM、及时撤销旧证书、每年更新证书。确保证书覆盖所有域名,选择可靠CA,使用SHA256签名算法,配置完整证书链,禁用不安全加密套件,启用前向保密,使用会话重用机制,启用OCSP Stapling,加密整个网站,删除混合内容,安全设置Cookie,配置HSTS和CSP。
422 1
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
103 17

热门文章

最新文章