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
- 优点:有更长有效期、商业支持、更强验证
通过 CA 网站或 ACME 协议自动提交。
验证成功后会返回 .crt 文件。
以 Nginx 为例:
- 客户端发起连接(Client Hello)
- 服务端返回证书 + 公钥(Server Hello)
- 客户端验证证书签名,生成对称密钥,并用公钥加密发送
- 服务端用私钥解密并建立加密通道
- 双方用共享密钥进行对称加密通信
TLS 1.3 较 TLS 1.2 简化了握手流程并提高了安全性。
客户端浏览器验证 HTTPS 证书的过程包括:
- 检查证书是否过期
- 校验域名是否匹配
- 验证证书链(是否由受信任的 CA 颁发)
- 检查吊销状态(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 多域名证书