HTTPS证书
网站要升级到HTTPS,必不可少的就是HTTPS证书,其作为各种信息的承载体,是证明网站可信的重要凭证,本文的目的在于帮助理解HTTPS证书作为可信凭证的实现原理。
HTTPS概述
HTTPS即HTTP+TLS,在HTTP与TCP之间加入一个加密层,中间传输节点在不知道密钥的前提下,难以破解双方传输的内容。这个加密层协议称为SSL(Secure Sockets Layer)或TLS(Transport Layer Security),TLS是SSL标准化过程中,升级到某个版本后顺便改了个名字。
非对称加密算法
简要描述非对称算法的特点,便于理解后面涉及的知识。
- 非对称加密算法生成一对密钥A和B,密钥A加密的内容可用密钥B解密,反之亦然
- 根据用途不同,公开给他人的称为公钥,自己持有的称为私钥
- 用密钥对传输内容签名,使用公钥可以确认内容完整未被篡改
// 用privateKey对内容content签名,通过publicKey验证
sign = encrypt(MD5(content), privateKey);
success = decrypt(sign, publicKey) === MD5(content);
证书的可信度
TLS协议握手阶段,客户端依赖网站服务器的公钥发送加密消息,以确保只有拥有私钥的网站服务器才能解密。证书是公钥的载体,因此至关重要的就是确保客户端收到的证书是服务器所提供的,保证流量不被窃听的关键即解决证书可信度问题。
客户端不能预先知道所有的网站对应的证书,必须借助其它方式判断证书的确是网站提供的,TLS协议判断证书可信度主要借助信任链的传播。可用现实生活中的担保机制帮助理解