https的优势:
通讯过程的hash生成的摘要,保证数据完整性
握手过程的非对称加密,传输过程的对称加密,保证数据私密性
证书保证双方身份的真实性
https大致过程
建立服务器443端口连接
SSL握手:随机数,证书,密钥,加密算法
发送加密请求
发送加密响应
关闭SSL
关闭TCP
SSL握手大致过程:
客户端发送随机数1,支持的加密方法(如RSA公钥加密)
服务端发送随机数2,和服务器公钥,并确认加密方法
客户端发送用服务器公钥加密的随机数3
服务器用私钥解密这个随机数3,用加密方法计算生成对称加密的密钥给客户端,
接下来的报文都用双方协定好的加密方法和密钥,进行加密
SSL握手详细过程:
一、客户端发出加密通信请求ClientHello
提供:
1,协议版本(如TSL1.0)
2,随机数1(用于生成对话密钥)
3,支持的加密方法(如RSA公钥加密)
4,支持的压缩方法
二、服务器回应SeverHello
回应内容:
1,确认使用的加密通信协议版本(TSL1.0)
2,随机数2(用于生成对话密钥)
3,确认加密方法(RSA)
4,服务器证书(包含非对称加密的公钥)
5,(可选)要求客户端提供证书的请求
三、客户端验证证书
如果证书不是可信机构颁布,或证书域名与实际域名不符,或者证书已经过期,就会向访问者显示一个警告,是否继续通信
四、客户端回应
证书没有问题,就会取出证书中的服务器公钥
然后发送:
1,随机数3(pre-master key,此随机数用服务器公钥加密,防止被窃听)
2,编码改变通知(表示随后的信息都将用双方商定的方法和密钥发送)
3,客户端握手结束通知
五、双方生成会话密钥
双方同时有了三个随机数,接着就用事先商定的加密方法,各自生成同一把“会话密钥”
服务器端用自己的私钥(非对称加密的)获取第三个随机数,会计算生成本次所用的会话密钥(对称加密的密钥),如果前一步要求客户端证书,会在这一步验证
六、服务器最后响应
服务器生成会话密钥后,向客户端发送:
1,编码改变通知(后面的信息都用双方的加密方法和密钥来发送)
2,服务器握手结束通知
至此,握手阶段全部结束,接下来客户端与服务器进入加密通信,用会话密钥加密内容
面试问题:HTTPS中间人攻击
未校验https证书从而导致“中间人攻击