TLS是网络面试的基础必问,前端后端安全岗都会考。面试官要确认你理解为什么密钥交换用非对称、数据传输用对称;证书链怎么建立信任;TLS 1.3相比1.2改了什么。
高层:HTTP明文;HTTPS是HTTP over TLS,提供机密性(加密)、完整性(MAC)、身份认证(证书)。
TLS 1.2握手四步:ClientHello(客户端支持的cipher suites、client random);ServerHello(服务端选定cipher、发证书、server random);客户端校验证书、生成premaster secret用服务端公钥加密发回;双方基于三个随机数生成对称会话密钥。
讲非对称+对称的组合逻辑:RSA/ECDHE慢,只用来交换会话密钥。真正的数据传输用对称加密(AES-GCM、ChaCha20),快几个数量级。
证书链信任:服务端证书被中间CA签,中间CA被根CA签,根CA是浏览器预置信任的。校验时从叶子一路走到根。
TLS 1.3改进:握手缩到1-RTT(会话复用0-RTT);删掉所有弱算法(RC4、CBC、SHA-1);ECDHE强制启用保证前向安全;所有模式都是AEAD。
HTTP是明文,网络上任何人都能看和改。HTTPS把HTTP包在TLS里,提供三个保证:加密(机密性)、MAC(完整性)、证书(服务端身份)。TLS 1.2握手逻辑上四步。客户端发ClientHello:携带支持的cipher suites列表和client random。服务端发ServerHello:选一个cipher、发server random、发证书。客户端校验证书链——服务端证书被中间CA签,中间CA证书被根CA签,根CA是操作系统或浏览器预置信任的。校验从叶子一路向上走到受信根。校验通过后,客户端生成premaster secret,用证书里的公钥加密发给服务端。双方现在都有client random、server random、premaster secret三个值,通过KDF派生出对称会话密钥。之后的应用数据都用AES-GCM或ChaCha20对称加密。为什么非对称后转对称?非对称加密比对称慢百倍以上,只用来交换一个key;实际数据量大,必须用对称加密。TLS 1.3显著改善了握手。把握手压到1-RTT——客户端在ClientHello里就推测性地发密钥材料;支持0-RTT会话恢复(但有重放风险的取舍)。删掉了所有弱密码套件——RC4、MD5、CBC padding oracle这些全没了。ECDHE强制,所以每个会话都有前向安全(PFS)——就算服务端私钥未来被泄露,之前抓到的流量也无法解密。所有模式都是AEAD,认证和加密绑定在一起。
一定要讲"非对称交换key+对称传数据"的组合逻辑。
讲到ECDHE和前向安全(PFS),是中高级岗期望的答案。
TLS 1.3的改进是高价值追问:1-RTT、0-RTT、强制AEAD。
忘了ECDHE、AEAD这种术语,即答侠可以实时提示。
浏览器显示红色警告页拒绝访问(除非用户手动信任)。证书过期是生产事故的常见原因。
RSA密钥交换能。所以现在强制用ECDHE做前向安全——每个会话用临时key,会话结束就销毁。
Server Name Indication。客户端在ClientHello里把想访问的域名带上,让一台IP上的多站点服务器能发正确的证书。没有SNI就不能共享IP做HTTPS。