title: 网络安全科普:奇妙的 SSL/TLS 证书(进阶篇) layout: post thread: 283 date: 2022-11-16 author: Joe Jiang categories: Document tags: [TLS, HTTPS, 网络安全, 加密, SSL, CA, 证书, 证书链, 交叉证书, CSR, PKI, OCSP, X.509] excerpt: 如果某个网站受 SSL 证书保护,其相应的 URL 中会显示 HTTPS(超文本传输安全协议)。单击浏览器地址栏的小绿锁,即可查看证书中的详细信息。但你是否曾好奇过一本证书是如何诞生的,以及 HTTPS 背后的 SSL/TLS 是如何在工作过程中发挥功效以保证通信安全的,什么是 CA、PCA,什么又是证书链和 X.509…… toc: true header: image: ../assets/in-post/2022-11-16-Dig-Out-All-Secrets-Behind-TLS-Certificate-Teaser.png
如果某个网站受 SSL 证书保护,其相应的 URL 中会显示 HTTPS(超文本传输安全协议)。单击浏览器地址栏的小绿锁,即可查看证书中的详细信息。但你是否曾好奇过一本证书是如何诞生的,以及 HTTPS 背后的 SSL/TLS 是如何在工作过程中发挥功效以保证通信安全的,什么是 CA、PCA,什么又是证书链和 X.509……
在参与了一段时间的证书业务开发后,我将个人的一些理解和学习总结如下,希望这一篇文章,可以帮到正在或将要学习 SSL/TLS 证书的你。
该网络安全科普系列一共分为上下两篇文章,除去前言、参考外,第一篇章为基础篇(第一章至第五章),第二篇章为进阶篇(第六章至第八章),第三篇章即“总结”会对全文结构和书写内容进行总结与梳理。 此前未曾了解过 SSL/TLS 证书的同学可以从第一篇章开始看起,如果有一部分基础想深入的同学可以直接从第二篇章开始阅读。两篇文章均完成撰稿,地址如下:
本文为奇妙的 SSL/TLS 证书第二篇章——进阶篇,以下开始正文。
现在的网站都推荐使用 SSL 证书来确保用户数据的安全,验证网站的所有权,防止攻击者创建虚假网站版本,以及将信任传达给用户。
如果网站要求用户登录、输入个人详细信息(例如其信用卡号)或查看机密信息(例如,健康福利或财务信息),则必须对数据保密。
SSL(Secure Socket Layer)是指安全套接字层,简而言之,它是一项标准技术,可确保互联网连接安全,保护两个系统之间发送的任何敏感数据,防止网络犯罪分子读取和修改任何传输信息,包括个人资料。TLS(Transport Layer Security,传输层安全)是更为安全的升级版 SSL。
TLS 1.0 版实际上最初作为 SSL 3.1 版开发,HTTPS 是在 HTTP 协议基础上实施 TLS 加密,所有网站以及其他部分 web 服务都使用该协议。因此,任何使用 HTTPS 的网站都使用 TLS 加密。
两者创建的目的都是提高网络中数据访问的安全性,因为在 http 携带需要传送的数据,数据没有任何的保护,是容易被黑客拦截下来的;使用了 SSL/TLS 之后,因为数据被非对称加密手段加密了,即使被截获,也是获取不到信息的。
TLS 协议实现的功能有三个主要组成部分:加密、认证和完整性。
网站或应用程序要使用 TLS,必须在其源服务器上安装 TLS 证书(由于上述命名混淆,该证书也被称为 SSL 证书),而 TLS 连接是通过一个称为 TLS 握手的流程启动的,在这个过程中用户设备会和服务器交换确定信息,这些信息包括要使用的 TLS 版本、密码套件、TLS 证书、会话密钥等等。
而在浏览器端,当用户访问服务器页面的时候,浏览器会检查服务器的 SSL/TLS 许可是不是可用的,不可用的话,会提醒用户,这个网站不安全,也就是访问的数据可能被黑客截获;此时用户可以根据判断来不访问这个界面;许可都齐全的话,便可以安全的进行数据交互。
具体来说,SSL/TLS 在工作流程中通过如下三个方面保证安全性:
TLS 已经完全的代替掉 SSL 了,所以只推荐 TLS;目前的 SSL 证书许可,下发的其实都是 SSL/TLS 证书。
HTTP 是超文本传输协议,信息是明文传输;HTTPS,也称作 HTTP over TLS,则是具有安全性的 SSL 加密传输协议。
HTTPS 协议需要到证书颁发机构 (Certificate Authority,简称 CA)申请证书,通过数字证书管理服务完成证书购买、申请,并将证书部署到您的 Web 服务器后,Web 服务将会通过 HTTPS 加密协议来传输数据。
在介绍证书的加密方式前,我们来回顾下都有哪些数据的传输方式。
*注:文中虽然提到“常见的非对称加密算法包含有 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。
要完成一本证书的签发与使用,通常包含如下流程:
超文本传输协议安全 (HTTPS) 是 HTTP 的安全版本,HTTP 是用于在 Web 浏览器和网站之间发送数据的主要协议。HTTPS 并不是独立于 HTTP 的协议。它只是在 HTTP 协议的基础上使用 TLS/SSL 加密。HTTPS 经过加密,以提高数据传输的安全性。
HTTPS 使用加密协议对通信进行加密。该协议称为传输层安全性 (TLS),但以前称为安全套接字层 (SSL)。该协议通过使用所谓的非对称公钥基础架构来保护通信。这种类型的安全系统使用两个不同的密钥来加密两方之间的通信:
结合上文提到的证书签发过程中,我们继续结合 HTTPS 的工作流程来看看如何通过证书保证通信的安全性:
HTTPS安全是由一套安全机制来保证的,主要包含这4个特性:机密性、完整性、真实性和不可否认性。
全文在个人经过一段时间的实践后,并结合自身理解和学习进行总结,希望带大家了解关于 SSL/TLS 证书的方方面面。
从文章结构上看,正文主体部分一共分为八个章节。其中第一篇章为基础篇,我们首先为全文提到的术语进行了归纳总结,而后从 CA、证书及其分类开始对证书进行正式介绍,之后对证书内容、证书格式、证书链及交叉证书进行了详细的阐述,本部分最后一章提及了一些实用的证书工具并对相关概念进行释义;第二篇章为进阶篇,以“什么是 SSL/TLS 及其工作原理”开篇,然后通过证书、HTTPS 两个大方向来分别来介绍 SSL 证书是如何保证通信安全的。
本文为该网络安全科普系列的第二篇——进阶篇,地址为 https://hijiangtao.github.io/2022/11/16/Dig-Out-All-Secrets-Behind-TLS-Certificate-Two/。关于前一篇的详细内容可以移步 https://hijiangtao.github.io/2022/11/16/Dig-Out-All-Secrets-Behind-TLS-Certificate-One/ 进行查看。正文部分到此结束,文中若有描述不准确的地方,还望指出,欢迎讨论交流。
简称 | 英文全称 | 中文全称 |
---|---|---|
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 Certificate | 通配符证书 |
MDC | Multi-Domain Certificates | 多域 SSL 证书 |
UCC | Unified Communications Certificate | 统一通信证书 |
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 | 加密服务提供商 |