Web PKI技术基础知识

发布于:2025-03-24 ⋅ 阅读:(17) ⋅ 点赞:(0)

基础概念

1. PKI(公钥基础设施)的定义和作用
公钥基础设施(Public Key Infrastructure, PKI)是一套用于管理公钥加密和数字证书的系统,提供身份验证、数据完整性和安全通信。它的核心作用包括:

  • 身份认证:确保通信双方的身份真实可信(如 HTTPS 站点认证)。
  • 数据加密:保护数据在传输过程中的机密性。
  • 数据完整性:防止数据在传输过程中被篡改。
  • 不可否认性:使用数字签名确保发送方无法否认发送的消息。
    PKI 主要依赖公钥加密技术,包括密钥对(公钥和私钥)及其管理体系。

2. Web PKI 的特点和架构
Web PKI 主要用于保护互联网通信,特别是 HTTPS 连接。它由以下部分组成:

  • 证书颁发机构(CA,Certificate Authority):负责颁发和管理证书,最知名的 CA 有 DigiCert、GlobalSign、Let’s Encrypt 等。
  • 注册机构(RA,Registration Authority):在 CA 之前对申请证书的实体进行身份验证(部分 CA 直接承担 RA 角色)。
  • 证书数据库和目录服务:存储证书及其状态信息(如吊销列表)。
  • 证书持有者(用户或服务器):持有证书的终端,如 HTTPS 服务器、客户端、电子邮件用户等。
  • 依赖方(Relying Party):需要验证证书的实体,如浏览器、操作系统、邮件客户端等。
    Web PKI 主要服务于 HTTPS 加密通信,保障用户访问网站时的安全性。

web pki是pki的一种吗? Web PKI(Web Public Key Infrastructure)是PKI(Public Key Infrastructure,公钥基础设施)的一种应用形式,专门用于互联网环境下的安全通信。它依赖PKI的基本框架,包括证书颁发机构(CA)、数字证书、密钥管理、证书吊销等机制,但主要用于保障Web上的HTTPS安全通信。
HTTPS安全通信: HTTPS(HyperText Transfer Protocol Secure,超文本传输安全协议)是HTTP的安全版本,主要通过SSL/TLS协议提供数据加密、身份认证和数据完整性保护,防止中间人攻击、窃听和篡改。
Web PKI 与 HTTPS 的关系:Web PKI(Web Public Key Infrastructure,Web 公钥基础设施)是HTTPS 赖以建立信任的核心机制。它提供证书颁发、身份认证和信任管理,确保浏览器可以验证网站的真实性,从而保障 HTTPS 连接的安全性。

X.509 证书是什么?

1. X.509 证书简介

X.509 证书是一种国际标准的数字证书格式,用于**公钥基础设施(PKI)**中的身份认证,广泛应用于 SSL/TLS 证书(HTTPS)、电子邮件加密、代码签名、VPN 认证等场景。

Web PKI 体系中,所有的 SSL/TLS 证书 都是基于 X.509 规范


2. X.509 证书的核心作用

证明某个公钥属于某个实体(网站、个人、组织)
用于身份认证和加密通信(如 HTTPS 中的服务器证书)
支持证书链,建立信任体系(CA 签名的证书可以被浏览器信任)


3. X.509 证书的结构

X.509 证书通常使用 ASN.1(抽象语法表示) 编码,并以 PEM(Base64 编码)DER(二进制格式) 存储。

X.509 证书的主要字段

字段 作用
版本(Version) 证书的 X.509 版本(目前常见的是 v3)
序列号(Serial Number) 证书的唯一标识
签名算法(Signature Algorithm) 用于签名的算法(如 SHA256-RSA)
颁发者(Issuer) 颁发该证书的 CA(如 DigiCert)
有效期(Validity) 证书的生效时间和过期时间
主体(Subject) 证书所属实体(如网站域名)
公钥(Public Key) 该证书对应的公钥
扩展字段(Extensions) 额外的功能,如证书用途、SAN、OCSP 服务器等
CA 签名(Signature) CA 用私钥对证书内容的签名,保证证书的完整性

示例:一个 HTTPS 服务器的 X.509 证书

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1234567890
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=DigiCert Global Root CA, O=DigiCert Inc, C=US
        Validity:
            Not Before: Mar 20 12:00:00 2024 GMT
            Not After : Mar 20 12:00:00 2025 GMT
        Subject: CN=example.com, O=Example Corp, C=US
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public-Key: (2048 bit)
        X509v3 extensions:
            X509v3 Subject Alternative Name:
                DNS: example.com, DNS: www.example.com
        Signature:
            Algorithm: sha256WithRSAEncryption
            Signature Value: ABCD1234...

4. X.509 证书的使用场景

  • HTTPS 证书(SSL/TLS 证书):网站服务器的身份认证与数据加密。
  • 客户端证书:用于身份验证,如 VPN 访问、企业内部系统。
  • 代码签名:开发者使用证书对软件进行签名,确保代码未被篡改。
  • 电子邮件加密(S/MIME):用 X.509 证书加密和签名邮件,防止邮件被篡改或伪造。

5. 证书链与信任

X.509 证书使用 证书链(Certificate Chain) 来建立信任:

  1. 根 CA 证书(Root CA):由浏览器/操作系统内置的可信 CA。
  2. 中间 CA 证书(Intermediate CA):由根 CA 签发,具体管理证书颁发。
  3. 服务器证书(SSL/TLS 证书):由中间 CA 签发,最终用于 HTTPS 服务器。

浏览器验证 X.509 证书时,会检查证书链是否能追溯到受信的根 CA,否则会提示“不受信任的证书”。


6. 结论

X.509 证书是 Web PKI 的核心标准,用于 SSL/TLS 认证、加密通信和身份验证
所有 HTTPS 证书都是 X.509 证书,由 CA 颁发并签名,保证网站的可信性。
证书链确保可信性,根 CA、子 CA 和服务器证书共同构成信任体系。


你可以使用 OpenSSLPython 来解析 X.509 证书,例如:

openssl x509 -in certificate.pem -text -noout

或者使用 Python:

from cryptography import x509
from cryptography.hazmat.backends import default_backend

with open("certificate.pem", "rb") as cert_file:
    cert = x509.load_pem_x509_certificate(cert_file.read(), default_backend())
    print(cert.subject)
    print(cert.issuer)
    print(cert.not_valid_before, cert.not_valid_after)

证书颁发机构(CA)及信任链详解

Web PKI(Web 公钥基础设施) 体系中,证书颁发机构(CA,Certificate Authority) 负责签发数字证书,确保证书持有者的身份真实性,并建立信任链,使浏览器、操作系统等客户端能够验证网站的合法性。


1. CA 体系的层级结构

Web PKI 采用层级信任模型,主要包括 根 CA、中间 CA 和终端实体证书,形成证书链(Certificate Chain)

(1)根 CA(Root CA)

  • 地位:整个信任体系的最高级别,处于信任链的顶端。
  • 存储:根 CA 证书通常内置于操作系统和浏览器的信任库中(如 Windows、macOS、Firefox、Chrome、Edge)。
  • 作用:负责签发 中间 CA 证书,但一般不会直接签发服务器证书,以降低私钥泄露的风险
  • 示例
    • DigiCert Global Root CA
    • GlobalSign Root CA
    • Sectigo (Comodo) Root CA
    • CFCA(中国金融认证中心)根证书

(2)中间 CA(Intermediate CA)

  • 地位:由根 CA 签发,在 CA 体系中起到桥梁作用。
  • 作用
    • 负责签发终端实体证书(网站的 SSL/TLS 证书)。
    • 降低根 CA 私钥泄露的风险,提高安全性。
  • 示例
    • DigiCert TLS RSA SHA256 2020 CA1(由 DigiCert Global Root CA 签发)
    • GlobalSign Extended Validation CA(由 GlobalSign Root CA 签发)

(3)终端实体证书(Leaf Certificate)

  • 地位:证书链的最底层,是服务器、客户端或个人使用的证书。
  • 作用
    • 服务器端:SSL/TLS 证书用于 HTTPS 网站,如 example.com 的证书。
    • 客户端端:用户认证证书,用于身份验证(如 VPN 登录)。
    • 代码签名:开发者用来签名软件,防止篡改。
  • 示例
    • www.google.com 的 TLS 证书
    • GitHub 的 HTTPS 证书

2. 证书链的工作原理

当用户访问 HTTPS 网站时,浏览器会验证网站的 SSL/TLS 证书,流程如下:

🔹 步骤 1:服务器提供证书链
服务器返回自己的终端实体证书,以及可能的中间 CA 证书

🔹 步骤 2:浏览器检查证书链
浏览器依次验证:

  • 终端证书是否由中间 CA 签发?
  • 中间 CA 是否由根 CA 签发?
  • 根 CA 是否在系统/浏览器的信任库中?

🔹 步骤 3:建立信任

  • 如果整个证书链可追溯到可信的根 CA,则浏览器认为该网站是可信的,建立 HTTPS 连接。
  • 如果证书链不完整或使用未受信任的 CA,浏览器会提示 “证书不受信任”

3. 证书链示例

Google 网站为例:

证书链:
1. 根 CA: "GlobalSign Root CA"
    └── 签发给 "GTS CA 1C3"(中间 CA)
        └── 签发给 "www.google.com"(终端证书)

如果用户访问 https://www.google.com,浏览器会执行以下验证:
✅ 1. www.google.com 证书是否由 GTS CA 1C3 颁发?
✅ 2. GTS CA 1C3 是否由 GlobalSign Root CA 颁发?
✅ 3. GlobalSign Root CA 是否在操作系统/浏览器的信任库中?
验证通过,HTTPS 连接成功 🔒

如果某个环节的证书不受信任,浏览器会警告用户 “此网站的安全证书无效”


4. 为什么需要中间 CA?

根 CA 私钥一旦泄露,整个 PKI 体系都会失效。因此,根 CA 通常不会直接签发网站证书,而是通过中间 CA 进行管理,降低风险。

  • 如果某个中间 CA 的私钥泄露,可以吊销该 CA 证书,而不影响整个信任体系。
  • 根 CA 只用于少量的关键签名操作,例如签发新的中间 CA。

5. 如何查看网站的证书链?

可以通过浏览器查看网站的 HTTPS 证书链

  1. Chrome 浏览器

    • 访问 HTTPS 网站,如 https://www.google.com
    • 点击 锁🔒图标 → 证书 (Certificate) → 证书路径(Certificate Path)
  2. 命令行(OpenSSL)

    openssl s_client -connect www.google.com:443 -showcerts
    

    这将显示 www.google.com 的证书链。


6. 总结

根 CA 是 PKI 体系的信任基础,内置于操作系统/浏览器
中间 CA 负责实际的证书签发,降低根 CA 直接暴露的风险
终端证书用于 HTTPS 服务器、客户端认证、代码签名等
浏览器验证证书链,确保证书可以追溯到可信的根 CA

如果证书链有问题,浏览器可能会显示**“证书不受信任”“证书链不完整”**的错误。

你想进一步了解如何申请证书,还是如何处理证书错误

证书吊销机制

在 Web PKI 体系中,如果证书的私钥泄露、证书被错误颁发、主体信息发生变更,或者证书持有者不再需要该证书,证书必须被吊销,以防止其被滥用。

证书吊销的核心问题是:客户端如何知道某个证书已经被吊销?
目前,Web PKI 主要有 CRL(证书吊销列表)OCSP(在线证书状态协议) 两种方式来检查证书的吊销状态。


1. CRL(Certificate Revocation List,证书吊销列表)

1.1 CRL 的基本原理

CRL 是 CA 定期发布的证书吊销列表,包含所有已被吊销但尚未过期的证书。客户端(如浏览器)在验证证书时,会下载 CRL 并检查证书是否在列表内。

1.2 CRL 工作流程

  1. CA 维护一份已吊销证书的列表,并定期更新。
  2. 客户端(浏览器、服务器等)在验证证书时,下载 CRL 并检查目标证书是否在列表中。
  3. 如果证书在 CRL 中,则认为该证书无效,客户端拒绝继续通信。

1.3 CRL 的缺点

  • 体积大:随着被吊销证书的增加,CRL 会变得越来越大,影响下载速度。
  • 更新不及时:CRL 可能是每隔几个小时甚至几天才更新一次,不能实时反映最新的吊销信息。
  • 客户端负担大:所有客户端都要下载并存储 CRL,这会消耗带宽和计算资源。

💡 典型应用:传统的企业 CA 认证系统、非 Web 场景下的 PKI 体系(如 VPN 认证)。


2. OCSP(Online Certificate Status Protocol,在线证书状态协议)

2.1 OCSP 的基本原理

OCSP 允许客户端向 CA 发送请求,查询某个证书是否被吊销,而不需要下载整个 CRL

2.2 OCSP 工作流程

  1. 客户端(如浏览器)向 CA 的 OCSP 服务器 发送请求,查询特定证书的状态。
  2. CA 服务器返回该证书的状态:
    • good(有效)
    • revoked(已吊销)
    • unknown(未知证书,可能不是 CA 颁发的)
  3. 客户端根据 OCSP 响应决定是否信任该证书。

2.3 OCSP 的优点

  • 实时查询:比 CRL 更快地发现吊销证书,提高安全性。
  • 减少带宽占用:客户端不需要下载整个 CRL 列表,只查询特定证书。

2.4 OCSP 的缺点

  • 查询延迟:每次 HTTPS 连接都需要向 CA 服务器发起 OCSP 查询,可能会增加页面加载时间。
  • 隐私风险:OCSP 服务器可以追踪客户端访问的目标网站,因为每次查询都会暴露客户端正在访问的证书。
  • OCSP 服务器可用性问题:如果 CA 的 OCSP 服务器宕机,所有依赖 OCSP 的证书验证都会失败,影响网络访问。

💡 典型应用:现代浏览器、HTTPS 服务器,适用于需要高实时性的 Web 认证场景。


3. OCSP Stapling(OCSP 装订)

由于 CRL 和 OCSP 都存在一定的缺陷,部分浏览器和服务器采用 OCSP Stapling(OCSP 装订) 技术,以优化证书吊销检查。

3.1 OCSP Stapling 的基本原理

OCSP Stapling 允许服务器主动向 CA 请求 OCSP 证书状态,并缓存该响应,随后在 TLS 握手时提供给客户端,避免客户端自己查询 OCSP 服务器。

3.2 OCSP Stapling 工作流程

  1. 服务器 定期向 CA 的 OCSP 服务器请求当前证书的吊销状态,并缓存该信息。
  2. 客户端(浏览器)访问服务器时,服务器在 TLS 握手时直接提供 OCSP 响应,而不是让客户端自己去查询 CA。
  3. 浏览器验证 OCSP 响应的签名和有效期,确认证书状态。
  4. 如果 OCSP 响应是“revoked”(已吊销),浏览器会拒绝连接

3.3 OCSP Stapling 的优点

减少客户端查询负担,避免每个客户端都向 CA 服务器查询,提高性能。
提高隐私保护,因为客户端不再直接向 CA 服务器暴露访问目标网站的信息。
降低 CA OCSP 服务器的负载,使得 Web PKI 体系更具可扩展性。

3.4 OCSP Stapling 的局限

  • 服务器必须主动配置 OCSP Stapling,并正确缓存 OCSP 响应。
  • 某些老旧系统和浏览器可能不支持 OCSP Stapling,需要回退到普通 OCSP 查询。

💡 典型应用:大多数现代 Web 服务器(如 Nginx、Apache)和浏览器(Chrome、Firefox)均支持 OCSP Stapling,广泛用于 HTTPS 认证。


4. 证书吊销机制的比较

机制 方式 查询方式 优势 缺点
CRL 定期下载 客户端下载整个吊销列表 适用于离线验证 体积大、更新不及时
OCSP 在线查询 客户端向 CA 查询证书状态 实时性好 影响网页加载速度、隐私风险
OCSP Stapling 服务器缓存 OCSP 响应 服务器查询后缓存并提供给客户端 提高性能,保护隐私 依赖服务器正确配置

5. 结论

  • CRL(证书吊销列表):下载整个列表,适用于传统 PKI,但在 Web PKI 体系中效率较低。
  • OCSP(在线证书状态协议):客户端实时查询证书状态,提高安全性,但影响性能和隐私。
  • OCSP Stapling(OCSP 装订):服务器缓存 OCSP 响应,减少客户端查询,提高性能和隐私保护,是现代 Web PKI 中的主流方案。

在现代 Web PKI 体系中,OCSP Stapling 是最优选择,结合 OCSP 作为备用方案,保证吊销检查的实时性和效率。


PKI(HTTPS)体系详解