以前只知道https,可以对传输的数据进行加密。
主要面试经常喜欢问些此类的问题,接下来讲解下原理
申请过域名证书的都知道,有2个文件
1、证书文件
证书文件包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;签名的生成是单向散列公开的明文信息的信息摘要,然后用私钥将信息摘要加密,就得到签名
2、私钥
私钥获取签名时有用到的。
SSL握手协议,如下图
主要看证书验证那块
客户端拿到证书后,因为本机系统内嵌了CA根证书及公钥(与根证书的公钥一致), 本地采用相同的散列函数对证书基本信息进行加密,得到信息摘要,同时本地公钥对证书的签名进行解密,得到摘要信息,对比二者是否相等,对等即是互为可信任对方。当然金融行业客户端也有证书,需要进行双向验证。在此我就不展开了。
证书校验通过,就完成了第一步。
接下来,数据安全传输,
客户端对数据进行对称加密的,加密秘钥key1,使用公钥对key1进行非对称加密;
服务端用私钥对加密串进行解密得到key1,在用key1对数据进行解密。
完整的HTTPS原理就到此结束了。
tips:非对称加密的缺点就是运算速度非常慢,比对称加密要慢很多
以上内容纯属个人对HTTPS的一些认识,如果文中有错误之处还请多多包涵,欢迎留言指正。