一文搞懂HTTPS的工作原理:从证书到加密

David Ng | 2026-08-20T12:45:00 | Security

深入理解HTTPS的工作原理,TLS握手过程、证书链验证和常见配置问题的完整解析

# 一文搞懂HTTPS的工作原理:从证书到加密 ## 前言 面试被问到“HTTPS是怎么保证安全的?”,很多人只能答出“加密传输”,但具体怎么加密的就说不清了。今天把HTTPS的工作原理彻底讲明白。 ## HTTP为什么不安全? HTTP是明文传输,存在三大风险: 1. **窃听** - 中间人能看到所有数据 2. **篡改** - 数据可以被修改 3. **冒充** - 无法验证服务器身份 ## TLS握手过程 ``` 客户端 服务器 |---- ClientHello ------------>| (支持的加密套件、随机数A) || (用证书公钥加密的预主密钥) |---- ChangeCipherSpec ------->| |---- Finished --------------->| || ``` ## 证书链验证 ``` 根CA证书(Root CA) |-- 中间CA证书(Intermediate CA) |-- 服务器证书(Server Certificate) ``` ```bash # 查看证书链 openssl s_client -connect example.com:443 -showcerts # 查看证书详细信息 openssl x509 -in cert.pem -text -noout ``` ## 对称加密 + 非对称加密 > HTTPS巧妙地结合了两种加密方式:用非对称加密交换密钥,然后用对称加密传输数据。 ``` 为什么不全用非对称加密? - RSA加密速度比AES慢约1000倍 - 所以只在握手阶段用RSA交换密钥 - 实际数据传输用AES(对称加密) ``` ## 踩坑:常见HTTPS配置问题 ### 坑1:混合内容 ```html ``` ### 坑2:证书过期 ```bash # 检查证书过期时间 echo | openssl s_client -connect example.com:443 2>/dev/null | \ openssl x509 -noout -dates # 设置自动续期(Let's Encrypt) certbot renew --dry-run ``` ### 坑3:HSTS配置 ```nginx add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; ``` ## 总结 - HTTPS = HTTP + TLS - 握手用非对称加密,传输用对称加密 - 证书验证靠证书链(信任根CA) - 记得配HSTS、检查混合内容、自动续期证书

← Back to Blog