https和http有什么不同?
- 有ssl/tls连接
- CA机构验证可靠性
- 对称加密和非对称加密来确保安全
- 端口 80和443
https
- 数字签名确保来源可靠:用非对称加密来协商一个对称加密的密钥,后续都用这个密钥来加密通信。
服务器通过CA机构+数字签名,向客户端传递公钥,客户端生成会话密钥,用这个公钥来对会话密钥进行对称加密。
证书 = [服务器的公钥+数字签名+个人信息]
其中客户端收到后,也需要向CA验证合法性。
- 哈希数据防篡改
- CA机构进行身份验证防伪造:数字证书
https HTTPS TLS 握手过程
公钥加密,私钥解密: 内容不泄露;
私钥加密,公钥解密: 内容不篡改;
四步走
客户端向服务器发起请求,发送自己支持的TLS版本以及加密算法套件和一个随机数
服务端选择一个算法和tls版本,以及 SSL 证书,以及一个随机数,发给客户端。
客户端验证证书合法性,生成“预主秘钥”,然后 客户端和服务端通过【客户端随机数,服务端随机数,预主密钥】 各自计算会话密钥。
服务器用自己的私钥解密,获取预主秘钥,计算出会话密钥,成功解密。
哪一步防止重放?
- 随机数啊。