学习 SSL/TLS ,这一篇就够了
写在前面
如果某个网站受 SSL 证书保护,其相应的 URL 中会显示 HTTPS(超文本传输安全协议)。单击浏览器地址栏的小绿锁,即可查看证书中的详细信息。那么一本证书是如何诞生的?HTTPS 背后的 SSL/TLS 是如何在工作过程中发挥功效以保证通信安全的?本文将系统性介绍SSL/TSL证书相关知识,希望这篇文章,可以帮到正在或将要学习 SSL/TLS 证书的你。
01
基础概念
证书中心
全文是关于证书在技术层面的介绍和一些案例枚举,如果你觉得枯燥或者想结合实际案例进行操作,那么可以试试火山引擎的证书中心产品,在这里先做个简要介绍,或许结合它一起阅读本文,会有更佳体验。
火山引擎证书中心是数字证书的全生命周期管理平台,为网站、App 和小程序提供 HTTPS 安全解决方案,此外还有多个证书工具供免费使用。如果拥有已实名认证的火山引擎账号,可立刻前往产品介绍页去申请免费的SSL证书进行体验。
详情可以点击链接了解更多
https://www.volcengine.com/product/certificate-center
以下表格梳理了全文涉及到的一些网络安全与数字证书领域的专业术语,供大家查阅。
简称 |
英文全称 |
中文全称 |
CA |
Certificate Authority / Certification Authority |
证书颁发机构 |
SSL |
Secure Sockets Layer |
安全套接字层协议 |
TLS |
Transport Layer Security |
传输层安全性协议 |
EV SSL |
Extended Validation SSL Certificates |
EV 证书,又名扩展验证证书 |
OV SSL |
Organization Validated SSL Certificates |
OV 证书,又名组织验证证书 |
DV SSL |
Domain Validated SSL Certificates |
DV 证书,又名域验证证书 |
Wildcard SSL |
Wildcard SSL Certificates |
通配符证书 |
MDC |
Multi-Domain Certificates |
多域 SSL 证书 |
UCC |
Unified Communications Certificates |
统一通信证书 |
TLD |
Top-level domain |
顶级域 |
PKI |
Public key infrastructure |
公钥基础设施 |
PCA |
Private Certificate Authority |
私有证书颁发机构,又名私有 CA |
HTTP |
Hypertext Transfer Protocol |
超文本传输协议 |
HTTPS |
Hypertext Transfer Protocol Secure |
超文本传输安全协议 |
- |
Public key |
公钥 |
- |
Private key |
私钥 |
X.509 |
- |
密码学里的公钥证书格式标准 |
CSR |
Certificate signing request |
证书签名请求 |
OCSP |
Online Certificate Status Protocol |
在线证书状态协议 |
CSP |
Cryptographic Service Provider |
加密服务提供商 |
证书及其分类
- CA 证书、SSL 证书及其区别
CA 证书是用来给客户证书签名的授信证书,它由 CA 颁发,是整个 TLS 握手信任的锚点。CA 证书又被称为数字证书,证书主要包含证书拥有者的身份信息,CA 机构的签名,公钥和私钥。CA 证书预埋在操作系统信任的库中,是一串能够表明网络用户身份信息的数字,用 CA 证书的私钥为 CSR 签名,可以签发 SSL 证书。
SSL 证书是一个数字证书,用于认证网站的身份并启用加密连接。SSL 代表安全套接字层,这是一个安全协议,可在 Web 服务器和 Web 浏览器之间创建加密连接。
关于 CA 证书和 SSL 证书之间的关系,其实某种意义上,大家会将其认为等价,不过稍有不同:CA 是证书颁发机构,由 CA 机构颁发的证书都可以成为 CA 证书,SSL 证书只是 CA 机构颁发证书的其中一种。
- SSL 证书分类
SSL 证书根据验证级别主要分为三种类型:
- 扩展验证证书 (EV SSL):这是等级最高、最昂贵的 SSL 证书类型。它主要适用于收集数据并涉及在线支付的高知名度网站。安装后,此 SSL 证书在浏览器地址栏上显示挂锁、HTTPS、企业名称和国家/地区。在地址栏中显示网站所有者的信息有助于将网站与恶意网站区分开。要获得 EV SSL 证书,网站所有者必须经历标准化的身份验证过程(通常这包含组织身份认证、三方认证等环节),以确认他们已获得该域的专有权利的合法授权。EV SSL证书遵循全球统一的严格身份验证标准,是目前业界安全级别最高的顶级(Class 4级)SSL证书。常见客户为金融、银行等。
- 组织验证证书 (OV SSL):此 SSL 证书版本具有与 EV SSL 证书类似的信任级别(Trust Level),这是因为,要获得此证书,网站所有者需要完成实质性的验证过程。OV SSL 证书往往是价格第二高的证书(仅次于 EV SSL),其主要目的是在交易期间对用户的敏感信息进行加密。商业或面向公众的网站必须安装 OV SSL 证书,以确保共享的任何客户信息都得到保密。对于政府、学术机构、无盈利组织或涉及信息交互的企业类网站来说,则可以使用DV证书。
- 域验证证书 (DV SSL):获得此 SSL 证书类型的验证过程是最简单的,因此,域验证 SSL 证书提供了较低程度的保证和最低程度的加密。它们通常用于博客或信息类网站,即,不涉及数据收集或在线支付的网站。此 SSL 证书类型是成本最低、获取速度最快的证书之一。验证过程仅要求网站所有者通过答复电子邮件或电话来证明域所有权。浏览器地址栏仅显示 HTTPS 和一个挂锁,没有显示公司名称。
另外,除了常见的单域名证书外,按照不同域名类型证书还可以包含有如下几种类型:
- 通配符 SSL 证书:通配符 SSL 证书使您可以在单个证书上保护基本域和无限的子域。如果您有多个要保护的子域,那么,购买通配符 SSL 证书要比为每个子域购买单独的 SSL 证书便宜得多。通配符 SSL 证书的公用名中带有星号 *,其中,星号表示具有相同基本域的任何有效子域。常见客户为个人博客等。
- 多域 SSL 证书 (MDC):多域证书可用于保护许多域和/或子域名。这包括完全唯一的域和具有不同 TLD(顶级域)的子域(本地/内部域除外)的组合。例如:example.com、a.org、this-domain.net;默认情况下,多域证书不支持同一域名下的子域。如果您需要使用一个多域证书来保护 www.example.com 和 example.com,那么,在获取证书时,应同时指定两个主机名。
- 统一通信证书 (UCC):统一通信证书 (UCC) 也被视为多域 SSL 证书。UCC 最初的设计意图是保护 Microsoft Exchange 和 Live Communications 服务器。如今,任何网站所有者都可以使用这些证书,以允许在一个证书上保护多个域名。UCC 证书经过组织验证,并在浏览器上显示挂锁。UCC 可以用作 EV SSL 证书,它会显示为绿色的地址栏,为网站访问者提供最高等级的保证。
注:EV/OV/DV 为根据不同验证强度而指定的不同证书类型;此外,DV/OV SSL 证书均有支持通配符(泛域名)的 SSL 证书,但是 EV 不支持,如果需要达到相似的目的,那么需要使用 MDC,即多域 SSL 证书,MDC 为 EV 类型;DV/OV/EV 三种等级的 SSL 证书均可支持签发 UCC SSL证书。
- 如何在日常浏览中区分 SSL 证书类别
根据证书类别的不同定义,我们可以通过证书字段比如组织(Organization)、公用名/域名(Common Name)等信息来对证书类别进行区分,但若我们只是普通用户,日常访问网站时能有什么办法对证书类别进行区分吗?这里,以 DV、OV、EV 的区分举例。
首先,区分 DV 和 非 DV 证书比较简单,由于 OV 和 EV 证书均需要更高级别的验证,即验证组织信息,所以我们可以通过点击浏览器地址栏旁的小锁,并打开其中的证书信息来判断,若是颁发对象中“组织(O)”字段为空,则为 DV 证书,否则则不是。
其次,对于 EV 和 OV 证书,我们在详细信息的主题背景一栏中,可以发现 EV 证书比 OV 证书多了很多其他信息,最明显的区别是显示了序列号等信息,这是EV证书特有的字段。这是区分 EV 和 OV 证书的第一个方法。
此外,不同浏览器针对 EV 都有不同程度的提醒,以 chrome 为例,当点击地址栏旁的小绿锁时,若数字证书为 EV 类型,证书状态下方会有一行小字显示其“颁发对象”具体信息。
- CA 分类与 PCA
按照颁发机构及授信状态不同,CA 可以分为两类:一类是受信任的 CA,称为私有CA(简称PCA),是可以颁发可信数字证书的权威机构;另一类为非授信 CA,我们也时称之为PCA,可以按需签发私有证书,通常使用在需要控制授信范围的场景下。
以火山引擎证书中心近期推出的私有CA产品为例,私有证书管理(Private Certificate Authority,PCA)是一个可以提供可定制私有 PKI 体系的平台。它允许用户建立自己完整的CA层次体系并使用它签发证书,实现了在组织内部签发和管理自签名私有证书。主要用于对组织内部的应用身份认证和数据加解密。
PCA 服务适用于企业对内应用数据安全管控、车联网应用、物联网应用、企业合规等多种场景:
- 企业对内使用:一般用于不涉及监管、行业规范等要求,仅涉及企业内部应用数据需要密码技术提供加密的场景。企业内部应用(例如,内部的OA、HR等系统)可以使用PCA服务的密码技术进行应用间数据安全传输、数据加解密和身份认证。
- 企业合规使用:一般应用于密评或者要求满足电子认证服务相关要求的场景,例如,银企直连、电子签名等。
证书内容、格式与证书链
1.证书内容
证书信息主要分为三类,主要包含:
- 证书使用者信息:域名、关联子域以及所颁发的个人、企业、组织信息等等
- 证书颁发者信息:证书颁发机构名称、数字签名等等
- 证书信息:证书的版本号、序列号、签名算法、签发日期、到期日期、公钥等等
2.证书格式标准 X.509
X.509 是密码学里公钥证书的格式标准。X.509 证书已应用在包括 TLS/SSL 在内的众多网络协议里,同时它也用在很多非在线应用场景里,比如电子签名服务。X.509 证书里含有公钥、身份信息(比如网络主机名,组织的名称或个体名称等)和签名信息(可以是证书签发机构 CA 的签名,也可以是自签名)。我们所说的 CA 颁发的证书或者 SSL/TLS 证书指的都是符合 X.509 格式的证书。
假设你的服务器是 TomCat,那么你需要安装PFX格式或者JKS格式的证书,以保证证书可以在服务器上正常运行,不同Web服务器支持的证书格式不同。我们提供有证书格式转换工具,如有需要可以在线使用
https://www.volcengine.com/product/certificate-service/toolkit/cert-convert。
此外,X.509 格式支持多种扩展名,比如 .pem、.cer、.crt、.der 等等。不同证书格式一般会使用一些约定的扩展名。
3.SSL 证书链
证书包含的内容可以概述为三部分,用户的信息、用户的公钥、还有 CA 中心对该证书里面的信息的签名。我们在验证证书的有效性的时候,会逐级去寻找签发者的证书,直到找到根证书,然后通过公钥一级一级验证数字签名的正确性。这里一系列的证书,便是证书链。
从组织结构来看,证书链是从终端用户证书到其后跟着的一系列 CA 证书,而通常最后一个(即根证书)是自签名证书。假设我们当前的证书链包含叶子证书、中间证书和根证书三级,那么他们之间将包含如下关系:
- 在证书链上除根证书外,证书颁发者都等于其后一证书的主题(即叶子证书颁发者等于中间证书主题,中间证书颁发者等于根证书主题);
- 除了根证书,每个证书都是由其后一个证书签名的,叶子证书由中间证书签名,中间证书由根证书签名;
- 根证书由操作系统直接内置,可以直接信任。
证书链可以用于检查目标证书(证书链里的第一个证书)里的公钥及其它数据是否属于其主题。检查是这么做的:用证书链中的后一个证书的公钥来验证它的签名,一直检查到证书链的尾端,如果所有验证都成功通过,那个这个证书就是可信的。
在此过程中,涉及到的证书包含如下几类:
- 叶子证书,即最终的实体证书。
- 中间证书,全称为中间证书颁发机构证书:是证书颁发机构(CA)为了自我隔离而颁发的证书。其作用是通过中间证书的私钥来签署最终用户SSL证书,通过中间根对另一个中间根进行签名,然后CA使用它来对证书进行签名。
- 根证书,证书颁发机构的自签名根证书。它的颁发者和主题是相同的,可以用自身的公钥进行合法认证。证书认证过程也将在此终止。
4.交叉证书
交叉证书的应用场景是这样的:假如现在小白成为一个新的根CA机构,那小白签发的证书想要浏览器信任的话,小白的根证书就需要内置在各大操作系统和浏览器中,这需要较长时间的部署,那在没有完全部署完成之前,小白签发的证书怎么才能让浏览器信任呢,这就需要用到交叉证书了。
简单来说,交叉证书会利用已有根 CA 的来为新 CA 签发一个交叉证书,在这个交叉证书里主题是新 CA 根证书信息,但是签发者是已有的根 CA。由于篇幅所限,本文不再针对交叉证书的具体工作原理进一步探究。
关于这部分的描述可以参照 Let’s Encrypt 的证书链示意图
证书工具与其他概念
- CSR 生成与解析
公钥基础设施(PKI)系统中,证书签名请求CSR(全称 Certificate Signing Request)是从申请人发送到证书颁发机构以申请数字身份证书的消息。它通常包含应为其颁发证书的公钥、识别信息(例如域名)和完整性保护相关信息(如数字签名)。
通常情况下,证书申请者在申请数字证书时由 CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把 CSR 文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。
通过火山引擎证书中心的证书工具,你可以填入必要的信息以生成一个符合规格的 CSR 信息及对应私钥;当然,当你拿到一串 CSR 明文后,你也可以逆向将其解析,以得到其中的域名、企业、部门等信息。
- PKI
公钥基础设施(PKI)是创建、管理、分发、使用、存储和撤销数字证书以及管理公钥加密所需的一组角色、策略、硬件、软件和程序。在密码学中,PKI 是一种将公钥与实体(如人和组织)的相应身份绑定的安排。
- OCSP、OCSP Stapling 与证书吊销
在线证书状态协议(英语:Online Certificate Status Protocol,缩写:OCSP)是一个用于获取 X.509 数字证书撤销状态的网际协议。
由数字证书认证机构运行的 OCSP 服务器会对请求返回经过其签名的证书状态信息,分别为:正常(Good)、已废除(Revoked)、未知(Unknown)。如果有无法处理的请求,则会返回一个错误码。OCSP 在极端情况下可能遭受来自中间人的重放攻击。
从HTTP切换到HTTPS可以提高网站安全性,但是切换之后连接变慢也是真实存在的一个问题,影响其中速度之一的因素便是 OCSP 状态查询。由于 OCSP 要求浏览器直接请求第三方 CA 以确认证书的有效性,当客户端访问 OCSP 服务器延时较高时,打开链接的速度就会相对变慢,从而影响访问体验。而对于 CA 来说,它也因为客户端的查询而知道哪些用户访问了哪些网站,这在隐私性上也存在问题。
解决访问速度变慢的问题以及保护隐私,OCSP Stapling 应运而生。OCSP Stapling,又名 TLS 证书状态查询扩展,其原理是:网站服务器将自行查询 OCSP 服务器并缓存响应结果,然后在与浏览器进行 TLS 连接时返回给浏览器,这样浏览器就不需要再去查询了。
证书吊销指在证书到期前,将已经签发的证书从签发机构处注销。通过我们的证书工具,你可以将想查询的域名输入,点击查询,便可得到该域名下的证书序列号、吊销信息以及吊销时间等信息。
在火山引擎证书中心,我们一共提供有 CSR 在线生成、CSR 内容查看、SSL 证书查看、公私钥匹配、证书吊销状态查询、证书链下载、证书格式转换七类证书工具,囿于文章篇幅所限,就不在此列举所有工具的使用方法了,感兴趣的话可以点击具体工具进行使用体验。
证书工具地址
https://www.volcengine.com/product/certificate-service/toolkit
02
SSL/TLS 原理及通信安全
SSL/TLS 的概念及原理
现在的网站都推荐使用 SSL 证书来确保用户数据的安全,验证网站的所有权,防止攻击者创建虚假网站版本,以及将信任传达给用户。如果网站要求用户登录、输入个人详细信息(例如其信用卡号)或查看机密信息(例如,健康福利或财务信息),则必须对数据保密。
- SSL/TLS 是什么
SSL(Secure Socket Layer)是指安全套接字层,简而言之,它是一项标准技术,可确保互联网连接安全,保护两个系统之间发送的任何敏感数据,防止网络犯罪分子读取和修改任何传输信息,包括个人资料。TLS(Transport Layer Security,传输层安全)是更为安全的升级版 SSL。
TLS 1.0 版实际上最初作为 SSL 3.1 版开发,HTTPS 是在 HTTP 协议基础上实施 TLS 加密,所有网站以及其他部分 web 服务都使用该协议。因此,任何使用 HTTPS 的网站都使用 TLS 加密。不同版本的 TLS 协议内容约定不一样,这也会给 HTTPS 建立连接时需要握手协商的信息造成差异。
- 为什么需要 SSL/TLS
两者创建的目的都是提高网络中数据访问的安全性,因为在 http 携带需要传送的数据,数据没有任何的保护,是容易被黑客拦截下来的;使用了 SSL/TLS 之后,因为数据包经过加密,即使被黑客截获,由于黑客不知道密钥,也无法获取数据包中的信息。
TLS 协议实现的功能有三个主要组成部分:加密、认证和完整性校验。
- 加密:隐藏从第三方传输的数据。
- 身份验证:确保交换信息的各方是他们所声称的身份。
- 完整性校验:验证数据未被伪造或篡改。
- SSL/TLS 是如何工作的
网站或应用程序要使用 TLS,必须在其源服务器上安装 TLS 证书(由于上述命名混淆,该证书也被称为 SSL 证书),而 TLS 连接是通过一个称为 TLS 握手的流程启动的,在这个过程中用户设备会和服务器交换确定信息,这些信息包括要使用的 TLS 版本、密码套件、TLS 证书、会话密钥等等。
而在浏览器端,当用户访问服务器页面的时候,浏览器会检查服务器的 SSL/TLS 许可是不是可用的,不可用的话,会提醒用户,这个网站不安全,也就是访问的数据可能被黑客截获;此时用户可以根据判断来不访问这个界面;许可都齐全的话,便可以安全地进行数据交互。
具体来说,SSL/TLS 在工作流程中通过如下三个方面保证安全性:
- 通过 CA 体系交换 public key
- 通过非对称加密算法,交换用于对称加密的密钥
- 通过对称加密算法,加密正常的网络通信
- SSL 证书、SSL/TLS、HTTP 和 HTTPS 的关系
TLS 已经完全的代替掉 SSL 了,所以只推荐 TLS;目前的 SSL 证书许可,下发的其实都是 SSL/TLS 证书。
HTTP 是超文本传输协议,信息是明文传输;HTTPS,也称作 HTTP over TLS,则是具有安全性的 SSL 加密传输协议。
HTTPS 协议需要到证书颁发机构 (Certificate Authority,简称 CA)申请证书,通过数字证书管理服务完成证书购买、申请,并将证书部署到您的 Web 服务器后,Web 服务将会通过 HTTPS 加密协议来传输数据。
证书与安全
- 信息加密与算法标准
在介绍证书的加密方式前,我们来回顾下都有哪些数据的传输方式。
- 明文传输:HTTP协议是明文传输的,明文就是未被加密过的原始数据,解析传输数据包中截获到的内容便可直接获知传输的内容是什么。
- 对称加密:加密和解密的密钥使用的是同一个,通常用来加密消息体。常见的对称加密算法包含有 AES、DES、3DES、TDEA、Blowfish、RC4、RC5、IDEA 等等。由于加密算法是公开的,若要保证安全性,密钥不能对外公开。
- 非对称加密:与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(public key)和私有密钥(private key)。非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。常见的非对称加密算法包含有 RSA、DSA/DSS、ElGamal、Rabin、D-H、ECC 等等。
- 单向加密摘要:哈希(Hash)算法,即散列函数。它是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。
*注:文中虽然提到“常见的非对称加密算法包含有 RSA、DSA/DSS、ElGamal、Rabin、D-H、ECC 等等”,但在实际实践中由于安全性及用途等区别,仍会有一些出入,在此作简单解释:其中 RSA、ECC 是生成 SSL/TLS 证书所使用的主要算法;DSA 即数字签名算法,被美国国家标准局用来做DSS数据签名标准,在安全性上存在隐患;D-H 算法作为密钥一致协议,作为确保共享 KEY 安全穿越不安全网络的方法理论;ElGamal 加密算法是一个基于迪菲-赫尔曼密钥交换的非对称加密算法;Rabin 算法是一种基于模平方和模平方根的非对称加密算法。
TLS/SSL 的功能实现主要依赖于三类基本算法:散列(哈希)函数 Hash、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列(哈希)函数验证信息的完整性。
具体来说,hash 主要用来生成签名,签名是加在信息后面的,可以证明信息没有被修改过。一般对信息先做 hash 计算得到一个 hash 值,然后用私钥加密(这个加密一般是非对称加密)作为一个签名和信息一起发送。接收方收到信息后重新计算信息的 hash 值,且和信息所附带的 hash 值解密后进行对比。如果一样则认为没有被修改,反之则认为修改过,不做处理。
除了上面提到的算法外,常见的公有云厂商售卖中还会提供一种叫 SM 的加密方式,即国密算法,全称是国家商用密码算法。这是由国家密码管理局认定和公布的密码算法标准及其应用规范,其中部分密码算法已经成为国际标准。国密算法主要有 SM1,SM2,SM3,SM4。
- 从签发过程来看如何确保证书的安全性
要完成一本证书的签发与使用,通常包含如下流程:
- 首先,需求方向第三方机构 CA (中间 CA,或者是供应商代理)提交公钥、组织信息、个人信息(域名)等信息并申请认证,私钥自己保存不做提交;
- CA 通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;
- 如信息审核通过,CA 会向申请者签发认证文件,即 TLS/SSL 证书。颁发的证书中会包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;
- 签名的产生算法在上文也提到过,这里再简要介绍一下:首先,使用散列函数计算公开的明文信息的信息摘要;然后,采用 CA 的私钥对信息摘要进行加密,密文即签名;
- 此后,需求方便可将证书存放在服务器上,当用户从客户端向服务器发出请求时,服务器可以返回证书文件;
HTTPS 与安全
- 什么是 HTTPS
超文本传输协议安全 (HTTPS) 是 HTTP 的安全版本,HTTP 是用于在 Web 浏览器和网站之间发送数据的主要协议。HTTPS 并不是独立于 HTTP 的协议。它只是在 HTTP 协议的基础上使用 TLS/SSL 加密。HTTPS 经过加密,以提高数据传输的安全性。
HTTPS 使用加密协议对通信进行加密。该协议称为传输层安全性 (TLS),但以前称为安全套接字层 (SSL)。该协议通过使用所谓的非对称公钥基础架构来保护通信。这种类型的安全系统使用两个不同的密钥来加密两方之间的通信:
- 私钥 - 此密钥由网站所有者控制,并且如读者所推测的那样,它是私有的。此密钥位于 Web 服务器上,用于解密通过公钥加密的信息。
- 公钥 - 所有想要以安全方式与服务器交互的人都可以使用此密钥。用公钥加密的信息只能用私钥解密。
- 从 HTTPS 工作流程再谈安全性
结合上文提到的证书签发过程中,我们继续结合 HTTPS 的工作流程来看看如何通过证书保证通信的安全性:
- 当客户端向服务端发送请求,请求中会向服务器提供以下信息:客户端支持的协议版本,比如TLS 1.0 版;
- 服务器返回经过 CA 认证的数字证书,证书里面包含了服务器的 public key;
- 客户端读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的完整性,即信息完整未被篡改;
- 客户端然后验证证书相关的域名信息、有效时间等信息;
- 客户端会内置信任 CA 的证书信息(此处一般指顶级 CA 的自签根证书,包含公钥),如果 CA 不被信任,则找不到对应 CA 的证书,证书也会被判定非法;
- 客户端在完成对数字证书的验证后,用自己浏览器内置的 CA 证书解密得到服务器的 public key;
- 客户端用服务器的 public key 加密一个预主密钥(这个密钥将在之后结合随机数等信息被用于客户端和服务端各自生成用于网络通信的对称密钥),传给服务器。因为只有服务器有 private key 可以解密,所以不用担心中间人拦截这个加密数据而获取其中的密钥信息;
- 服务器拿到这个加密的密钥,解密获取信息,再依据双方约定好的参数生成对称加密密钥,并以此和客户端完成接下来的网络通信;
- 为什么 HTTPS 是安全的
HTTPS安全是由一套安全机制来保证的,主要包含这4个特性:机密性、完整性、真实性和不可否认性。
- 机密性是指传输的数据是采用 Session Key(会话密钥)加密的,在网络上是看不到明文的。
- 完整性是指为了避免网络中传输的数据被非法篡改,使用 MAC 算法来保证消息的完整性。
- 真实性是指通信的对方是可信的,利用了 PKI(Public Key Infrastructure 即「公钥基础设施」)来保证公钥的真实性。
- 不可否认性是这个消息就是你给我发的,无法伪装和否认,是因为使用了签名的技术来保证的。
写在最后
全文在经过一段时间的实践后,并结合自身理解和学习进行总结,本文共两大篇章,第一篇章主要介绍了证书中心的概念与分类,并对证书内容、证书格式、证书链及交叉证书进行了详细的阐述;第二个篇章主要分析了SSL/TLS 及其工作原理,并通过证书、HTTPS 两个大方向分别介绍 SSL 证书是如何保证通信安全的,希望能帮助大家了解关于 SSL/TLS 证书的方方面面。
文章参考
1.https://en.wikipedia.org/wiki/Public_key_infrastructure
2.https://en.wikipedia.org/wiki/X.509
3.https://www.cloudflare.com/zh-cn/learning/ssl/what-is-https/
4.https://zhuanlan.zhihu.com/p/36981565
5.https://zhuanlan.zhihu.com/p/60033345
6.https://www.cnblogs.com/xdyixia/p/11610102.html
7.https://www.websecurity.digicert.com/zh/cn/security-topics/what-is-ssl-tls-https
8.https://volcengine-boe.bytedance.net/product/certificate-center
9.https://badssl.com/
10.https://www.ssl2buy.com/wiki/how-to-view-ev-ssl-certificate-details-in-chrome-77
来源:微信公众号:火山引擎边缘云
出处
:https://mp.weixin.qq.com/s/lv7Lbe5gkBEPrib3C6OCSQ