Table of contents

https 证书理解

HTTPS 证书(也称为 SSL/TLS 证书)是实现网站安全通信的核心组成部分。为了完整介绍这个主题,我们从 背景、原理、类型、获取方式、部署与验证流程、安全机制、实际应用、漏洞与误区 几个方面进行详尽讲解。 V=4

HTTPS 是在 HTTP 基础上加入 TLS(Transport Layer Security)加密层的协议,主要目的是:

  • 加密传输:防止中间人监听和数据泄露。
  • 身份验证:确认客户端访问的网站确实是合法的拥有者。
  • 数据完整性:确保传输过程中数据未被篡改。

SSL(Secure Socket Layer)是 TLS 的前身,现在已被废弃,现代实现都是 TLS(当前主流版本为 1.2 和 1.3)。

HTTPS 证书的核心是公钥基础设施(PKI),用于:

  • 提供公钥给客户端加密数据。
  • 由可信的**CA(Certificate Authority,证书颁发机构)**签名,确认站点身份。
  • 在 TLS 握手时提供认证依据。

一个标准的 X.509 证书包含如下信息:

字段名说明Version证书版本(通常是 v3)Serial Number唯一序列号Signature Algorithm签名算法(如 SHA256 with RSA)Issuer签发者(CA)信息Validity有效期(Not Before / Not After)Subject持有者信息,如 CN=example.comSubject Public Key Info公钥信息Extensions包含 SAN(Subject Alternative Name)、用途等SignatureCA 用其私钥对以上内容签名

根据验证级别分为:

类型验证级别特点DV(Domain Validation)域名验证快速颁发,常用于个人或小型网站(如 Let’s Encrypt)OV(Organization Validation)组织验证要验证企业信息EV(Extended Validation)扩展验证绿色地址栏,高信任度,验证企业和法人信息

根据证书用途还可以分为:

  • 单域名证书:保护一个域名,如 www.example.com
  • 多域名证书(SAN):可保护多个域名。
  • 通配符证书:如 *.example.com,保护所有子域名。

方式一:使用免费证书

  • Let’s Encrypt(最流行的免费 CA) 工具:certbot, acme.sh自动申请与续期(90 天有效期)
  • 工具:certbot, acme.sh
  • 自动申请与续期(90 天有效期)

方式二:付费证书

  • 常见 CA: GlobalSign、DigiCert、Sectigo、GoDaddy、TrustAsia
  • GlobalSign、DigiCert、Sectigo、GoDaddy、TrustAsia
  • 优点:有更长有效期、商业支持、更强验证
openssl genrsa -out example.key 2048 openssl req -new -key example.key -out example.csr

通过 CA 网站或 ACME 协议自动提交。

验证成功后会返回 .crt 文件。

以 Nginx 为例:

server { listen 443 ssl; ssl_certificate /etc/ssl/example.crt; ssl_certificate_key /etc/ssl/example.key; ... }
  1. 客户端发起连接(Client Hello)
  2. 服务端返回证书 + 公钥(Server Hello)
  3. 客户端验证证书签名,生成对称密钥,并用公钥加密发送
  4. 服务端用私钥解密并建立加密通道
  5. 双方用共享密钥进行对称加密通信

TLS 1.3 较 TLS 1.2 简化了握手流程并提高了安全性。

客户端浏览器验证 HTTPS 证书的过程包括:

  1. 检查证书是否过期
  2. 校验域名是否匹配
  3. 验证证书链(是否由受信任的 CA 颁发)
  4. 检查吊销状态(CRL、OCSP)
  • HSTS(HTTP Strict Transport Security):强制使用 HTTPS
  • OCSP Stapling:优化证书吊销检查
  • 证书透明度(Certificate Transparency):避免被中间人伪造证书
  • Pinning:绑定证书指纹(现代浏览器已不推荐使用)

问题原因解决方法浏览器提示“不受信任”证书未被信任 CA 签发使用受信任的证书或将 CA 根证书加入信任列表证书已过期忘记续期设置自动续期脚本(如 Let’s Encrypt)Mixed Content 报错页面引用了 HTTP 资源替换为 HTTPS 链接通配符证书不支持二级通配*.example.com 不匹配 a.b.example.com使用 SAN 多域名证书