
一、HTTPS不是"加了S的HTTP"
很多人知道HTTPS比HTTP安全,但说不清区别在哪。简单说,HTTPS = HTTP + TLS/SSL。它在HTTP应用层和TCP传输层之间插入了一个安全层(TLS协议),负责对传输数据进行加密、完整性校验和身份认证。
这个安全层依赖的核心组件就是SSL证书(现代更多称TLS证书)。一张证书的生命周期包含:密钥生成 → CSR签发 → CA验证 → 证书部署 → 握手协商 → 过期更新。下面逐一拆解。
二、第一步:密钥对的诞生(非对称加密的基础)
当你申请一张赛符安全SSL证书,首先是本地生成一对非对称密钥:
-
私钥:留在服务器上,严格保密,用于解密和签名。
-
公钥:嵌入到证书中,公开出去,用于加密和验签。
生成命令(OpenSSL示例):
bash
openssl genrsa -out private.key 2048
openssl rsa -in private.key -pubout -out public.key
RSA 2048位是目前主流,安全性足够;ECC(如secp256r1)性能更好,但兼容性略差。
三、第二步:CSR------证书的"出生申请"
有了密钥对,你需要向CA(证书颁发机构)提交一份CSR(Certificate Signing Request)。CSR包含了:
-
域名(Common Name,如
example.com) -
组织信息(国家、省份、城市、公司名称------OV/EV证书需要)
-
公钥
生成CSR:
bash
openssl req -new -key private.key -out example.csr
CA拿到CSR后,会验证你对域名的控制权(DV验证),以及企业身份的真实性(OV/EV验证)。
四、第三步:CA签发证书与信任链
CA验证通过后,用它的私钥对CSR中的信息进行数字签名,生成最终的数字证书。这个证书包含了:公钥、域名、有效期、CA签名。
浏览器为什么会信任这张证书?因为CA的根证书预先内置在操作系统/浏览器中。信任链如下:
根证书(Root CA) → 签发 中间证书(Intermediate CA) → 签发 你的服务器证书(Leaf Certificate)
当浏览器访问HTTPS网站时,服务器会返回完整证书链(叶子证书+中间证书)。浏览器从根证书开始逐级验证签名,如果全部通过,就信任该网站。
五、第四步:TLS握手------加密通道的建立过程
部署证书后,客户端和服务器通过TLS握手协商出一个会话密钥(对称加密),后续数据传输全部使用该密钥加密,效率远高于非对称加密。
完整的TLS 1.3握手(简化版):
-
Client Hello:客户端发送支持的加密套件、随机数。
-
Server Hello:服务器选择加密套件,发送自己的随机数,并附上证书链。
-
验证证书:客户端验证证书的有效性(是否过期、域名是否匹配、是否被吊销、是否由可信CA签发)。
-
密钥交换:双方使用ECDHE等算法计算出相同的会话密钥(无需传输密钥本身)。
-
加密通信开始:后续所有HTTP数据都经该会话密钥加密。
证书验证失败(如过期、自签名、域名不匹配)时,浏览器会拦截并显示"不安全"。
六、第五步:证书到期与续期
每张证书都有有效期。按照2026年CA/B论坛新规,有效期上限已从398天缩短到200天。设计短有效期的原因是:
-
减少证书泄露后的长期风险
-
推动自动化续期(ACME协议),避免人工遗忘
ACME协议(如Let's Encrypt使用)可以自动完成域名验证、证书申请、部署。但对于企业OV/EV证书,仍需人工验证身份。
七、常见技术陷阱与解决思路
1. 证书链不完整
只部署了叶子证书,没带中间证书。某些浏览器(如旧版Android)无法验证,报错。解决方案:合并证书链(leaf + intermediate + root)后配置。
2. 混合内容(Mixed Content)
HTTPS页面中引用了HTTP资源(图片、脚本)。浏览器会阻止或降级。使用<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">可自动升级。
3. 吊销检查
证书私钥泄露后需要吊销。传统方法CRL(证书吊销列表)和OCSP(在线证书状态协议)存在性能问题。现代方案是OCSP Stapling:服务器主动缓存OCSP响应并随证书发送,减少客户端延迟。
八、一张证书的完整生命周期总结
text
生成密钥对 → 构建CSR → CA验证 → 签发证书 → 部署到服务器 →
TLS握手验证 → 加密通信 → 到期前续期(或吊销) → 新证书替换
理解这个生命周期,有助于排查HTTPS故障、优化握手性能、避免证书过期事故。
参考工具:
-
openssl s_client -connect example.com:443 -showcerts查看证书链 -
curl -vI https://example.com查看握手细节 -
SSL Labs在线测试(无品牌推广,纯测评)
#HTTPS原理 #TLS握手 #证书链 #赛符SSL证书#CSDN技术干货