理解 HTTPS 的工作原理
副标题[/!--empirenews.page--]
HTTPS,也称作HTTP over TLS。TLS的前身是SSL,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。本文着重描述TLS协议的1.2版本。 下图描述了在TCP/IP协议栈中TLS(各子协议)和HTTP的关系 ![]() Credit: Kaushal Kumar Panday From: SSL Handshake and HTTPS Bindings on IIS 其中Handshake protocol,Change Ciper Spec protocol和Alert protocol组成了SSL Handshaking Protocols。 HTTPS和HTTP协议相比提供了:
其中,数据完整性和隐私性由TLS Record Protocol保证,身份认证由TLS Handshaking Protocols实现。 总览 使用RSA算法的SSL握手过程是这样的: ![]() Source: Keyless SSL: The Nitty Gritty Technical Details
证书(Digital certificate) 那么什么是证书呢? ![]() 证书中包含什么信息:
为什么服务端要发送证书给客户端? 互联网有太多的服务需要使用证书来验证身份,以至于客户端(操作系统或浏览器等)无法内置所有证书,需要通过服务端将证书发送给客户端。 客户端为什么要验证接收到的证书?
客户端如何验证接收到的证书? 为了回答这个问题,需要引入数字签名(Digital Signature)。
将一段文本通过哈希(hash)和私钥加密处理后生成数字签名。 假设消息传递在Bob,Susan和Pat三人之间发生。Susan将消息连同数字签名一起发送给Bob,Bob接收到消息后,可以这样验证接收到的消息就是Susan发送的
当然,这个前提是Bob知道Susan的公钥。更重要的是,和消息本身一样,公钥不能在不安全的网络中直接发送给Bob。 此时就引入了证书颁发机构(Certificate Authority,CA),CA数量并不多,Bob客户端内置了所有受信任CA的证书。CA对Susan的公钥(和其他信息)数字签名后生成证书。 Susan将证书发送给Bob后,Bob通过CA证书的公钥验证证书签名。 Bob信任CA,CA信任Susan 使得 Bob信任Susan,信任链(Chain Of Trust)就是这样形成的。 事实上,Bob客户端内置的是CA的根证书(Root Certificate),HTTPS协议中服务器会发送证书链(Certificate Chain)给客户端。 TLS协议 TLS协议包括TLS Record Protocol和TLS Handshake Protocol。总览中的流程图仅涉及到TLS Handshake Protocol。 TLS Record Protocol (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |