SSL/TLS证书解决加密与身份可信两大问题:非对称加密用于安全交换对称密钥,后续通信采用高效对称加密;信任链依赖浏览器内置根证书,通过逐级验证签名确保证书合法有效。
从通信机制和密码学基础入手,比直接啃协议文档更有效。重点不是记住每一步,而是理解“为什么这样设计”。
SSL/TLS证书解决的是两个根本问题:一是让数据传过去别人看不懂(加密),二是确认对面真的是它声称的那个 (身份可信)。所有技术细节都围绕这两点展开。
不用写代码,用工具抓一次HTTPS连接就能看到全过程。比如用Wireshark过滤tls.handshake,或用openssl s_client -connect example.com:443 -servername example.com连一个 ,观察输出里的Server certificate、Verify return code等字段。
拿一个.pem或.crt文件,用命令openssl x509 -in cert.pem -text -noout打开,重点看这几项:
CN=example.com或SANs: DNS:api.example.com, DNS:www.example.com;O=Let's Encrypt, CN=R3;CA:FALSE(说明不是根/中间证书)、Key Usage是否包含keyEncipherment等。自己用OpenSSL生成的证书和Let’s Encrypt发的证书,技术格式几乎一样,差别只在“谁盖的章”。
Issuer和Subject相同,没有上级背书,浏览器不认;Issuer是受信机构,它的公钥早已预装在操作系统或浏览器里;