【安全】https 双向认证
1.https 与 ssl 的关系
https 是基于 http 超文本传输协议的一种安全的协议,称为安全的超文本传输协议。http 直接基于 tcp 协议,而https 是在 http 和 tcp 中间加上一层加密层。该层是安全套接层 ssl,ssl 协议可分为两层: ssl 记录协议(SSL Record Protocol),建立在可靠的传输协议,例如 tcp,为高层协议提供数据封装、压缩、加密等基本功能的支持。 ssl 握手协议(SSL Handshake Protocol),建立在 ssl 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
image.png问题:https 与 ssl 的关系?
https 与 ssl 的关系是包含与被包含的关系,简单来说就是 https=http+ssl,即 https 是在 http 上面加了一层 ssl 协议,用于验证服务端或客户端的合法性。
2.https 单向认证和双向认证
2.1 keystore 和 truststore 与单向认证和双向认证的关系
问题1:什么是 keystore 和 truststore?
keystore 是存储密钥(公钥、私钥)的容器,keystore 和 truststore 其本质都是 keystore,但是二者盛放的密钥所有者不同而已,对于 keystore 一般存储自己的私钥和公钥,而 truststore 存储自己信任的对象公钥的证书。
问题2:什么是单向认证和双向认证?
单向认证是指客户端确定服务端身份。双向认证则是指客户端需要确认服务端身份,同时服务端也需要确认客户端的身份。
问题3:keystore 和 truststore 与单向认证和双向认证是什么关系?
单向认证的场景下,客户端要认证服务端的身份,因此客户端的 keystore 保存自身的私钥和公钥,而 truststore 保存服务端公钥的数字证书。
双向认证的场景下,客户端要认证服务端的身份,因此客户端的 keystore 保存自身的私钥和公钥,而 truststore 保存服务端公钥的证书。服务端也需要认证客户端的身份,因此服务端的 keystore 保存自身的私钥和公钥,而 truststore 保存客户端公钥的数字证书。