HTTPS原理概括就是使用TLS实现,TLS 是SSL的升级版。(具体历史是1999年,互联网标准化组织ISOC发布了SSL(Secure Sockets Layer)的升级版TLS 1.0版(Transport Layer Security))
1.先理解下对称和非对称加密
对称加密
对称加密就是共享一个密钥;问题在于我们不能安全传输这对密钥。
非对称加密
非对称加密采用的是非对称的密钥,既公钥和私钥。
公钥是公开信息,私钥服务器独有的。这样服务器发送的消息有公钥的都能解,然而客户端发送的带有私钥锁的消息只有有私钥的服务器能解。如此一来客户端发送密码什么就安全了。
常见的非对称加密有RSA等等;
2.HTTPS原理
具体来讲,HTTPS使用对称+非对称加密方式实现。因为非对称计算量大,HTTPS以非对称加密的方式传输对称加密密钥,接着就可使用对称加密的密钥传输数据。
3.连接过程
大部分书里的连接过程比较复杂,其实都可以概括为以下几步:
- 客户端发送https请求,协商协议;
- 服务端确认;返回数字证书(公钥);
- 用公钥传输会话密钥(秘密数);
- 服务端确认(会话密钥计算完成);
然后就可以开始安全数据传输了!(可以再去看《图解Http》)
4.数字证书的原理
数字证书由两部分组成,证书信息(服务器信息,公钥等) 和 数字签名;
- 数字签名实现了鉴别请求的功能;
其实鉴别功能非常容易实现,用非对称进行加密附加在报文后,再用公钥解密进行比对,其实就等于鉴别功能;
但因为私钥加密费时,这里我们并不需要加密整个证书信息,所以通过MD5或SHA-1等hash算法生成信息摘要(MD),再用私钥加密,附加在报文后,这就是数字签名了!
验证时对证书信息做同样的MD5再进行比对;MD5也是一种加密运算,应该理解为加密出一段信息,但它没有密钥;这也使他计算非常的快,SHA更安全但慢些;
5.公钥篡改问题
如果有人假装服务器发送https请求,公钥和数字签名都可以被伪造;
这时候就要通过认证中心CA将公钥和对应实体绑定;发送数字证书,简单来说就是发送公钥+基本信息,方便你去CA认证;
参考
计算机网络教程-谢希仁
https://blog.csdn.net/qq_38984677/article/details/85621784