HTTPS比HTTP多了一个TLS/SSL加密层,不仅对数据进行了加密,还提供了身份验证的功能
HTTPS使用了非对称加密和对称加密一起使用的方法。简单地说,就是其中的一方先生成一个对称加密的密钥,然后通过非对称加密的方式来发送这个密钥,这样双方通信后就可以通过对称加密来进行加密和解密了
关于SSL/TLS。TLS的前身是SSL,,位于应用层和传输层之间
握手层是用于端对端协商密码和连接状态等连接参数,并完成身份认证
记录层是对数据的封装,把数据交给传输层之前,经过分片,压缩,认证,加密等操作
HTTPS的请求过程:
1.客户端输入网址,连接到服务端的443端口,发送自己支持的SSL版本,加密组件等给服务器
2.服务器发送所选择的连接参数和证书(包括公钥信息等)给客户端。服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,自己制作的证书需要客户端验证通过才可以继续访问,而使用受信任的公司的申请证书就不会弹出提示页面。比如startSSL。
3.传送证书(包括公钥)
4.客户端解析证书,通过客户端的TLS完成,会验证公钥是否有效,如果发现异常,就会弹警告,如果没问题,就生成一个随机key,用证书的公钥对其进行加密
5.传送加密后的随机key,让服务器收到
6.服务端用私钥解密,获得随机的key值
双方开始用随机key进行对称信息加密,并且传输...
最后放一张时序图: