面试题答案
一键面试1. 确保数据传输保密性和完整性的原理
在CDN加速场景下,SSL证书通过以下方式确保用户浏览器与服务器之间数据传输的保密性和完整性:
- 保密性:SSL证书采用加密技术,在数据传输前对数据进行加密处理。浏览器与服务器在建立连接时,通过握手协议协商加密算法和密钥,之后数据在传输过程中以密文形式存在,只有拥有对应解密密钥的接收方(服务器)才能还原数据,这样可以防止数据被第三方窃听获取内容。
- 完整性:在数据传输过程中,会使用消息认证码(MAC)等机制。发送方在数据后附加MAC值,该值基于数据和共享密钥计算得出。接收方收到数据后,使用相同的密钥和算法重新计算MAC值,并与接收到的MAC值进行比对。若两者一致,则说明数据在传输过程中未被篡改,保证了数据的完整性。
2. 具体的加密和验证机制
- 加密机制:
- 对称加密:在SSL握手完成后,浏览器和服务器使用协商好的对称加密算法(如AES)对实际传输的数据进行加密和解密。对称加密的优势在于加解密速度快,适合大量数据的快速处理。
- 非对称加密:在SSL握手阶段,用于交换对称加密的密钥。例如,服务器将自己的公钥发送给浏览器,浏览器使用该公钥对生成的对称加密密钥进行加密后发送给服务器,服务器再用私钥解密得到对称加密密钥。常见的非对称加密算法有RSA、ECC等。
- 验证机制:
- 证书验证:浏览器收到服务器发送的SSL证书后,会进行一系列验证。首先检查证书是否由受信任的证书颁发机构(CA)签发,浏览器内置了受信任CA的根证书,通过验证证书链来确认CA的合法性。其次,检查证书是否过期,以及证书中的域名是否与访问的服务器域名匹配,确保证书的真实性和有效性。
- 数字签名验证:SSL证书包含了CA对证书内容(如服务器公钥、域名等)的数字签名。浏览器使用CA的公钥对数字签名进行解密,得到原始的消息摘要,并对证书内容重新计算消息摘要,比对两者是否一致,以此验证证书内容未被篡改。