HTTPS (全称:Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 。
- HTTP不管是用GET还是POST方法,它们都是不安全的,因为它们传输的数据是明文传送的。而HTTPS是基于HTTP在应用层添加一层SSL/TLS软件层,这层是用来HTTP握手协商,加密解密的。
2.1 加密&解密
- 加密:将明文数据经过变化,生成密文
- 解密:将密文数据经过变化,还原为明文
- 密钥:辅助进行加密解密的数据
2.2 对称加密和非对称加密
2.2.1 对称加密
通过一个密钥加密和解密,这样的加密方式就是对称加密算法。
- 特点:速度快,但安全性较低
2.2.2 非对称加密
非对称加密有两个密钥,公开的是公钥,不公开的是私钥。用公钥加密,只能用私钥解密。
- 特点:速度较慢 ,但安全性较高
2.2.3 数据摘要 和 数据指纹
将一串文本经过hash算法后,形成固定大小的字符串,这个字符串具有很强的唯一性。这个字符串就是数据摘要,数据指纹。对数据摘要加密就得到了数字签名。
- 可以通过数据摘要判断原始文本是否被篡改
- 常见的摘要算法:MD5,SHA1,SHA512等
2.3 客户端与服务器的密钥协商
在客户端与服务器通信之前,他们需要先交换对应的密钥信息,用来后续的加密通信,保证双方通信的数据安全。服务器将自己的公钥发送给客户端,客户端经过CA证书验证该公钥的合法性,然后客户端用该公钥加密自己对称密钥,将自己的对象密钥发送给服务器,然后服务器用私钥解密得到对称密钥,以后客户端与服务器之间传输数据用对称密钥加密,这样既能保证效率,也能一定程度上保证了数据安全。
2.4 CA证书
服务器在使用HTTPS前,需要向CA机构申请一份数字证书,数字证书里面包含了证书加密信息、公钥信息等。CA证书证明了该公钥的合法性。如果没有CA证书,那么中间人便有可能替换服务器的公钥,那么客户端与服务器的数据明文信息都会被中间人所得知。
2.4.1 CA机构签名过程
2.4.2 客户端验证CA合法性过程
- 客户端收到CA证书后,将签名与数据分开,然后对数据进行相同的Hash散列形成数据摘要,对数字签名做CA公钥解密获得之前用CA私钥加密前的数据摘要,然后客户端判断这两个数据摘要是否相同,如果不同,说明这份证书不可信,直接丢弃,从而验证了公钥的合法性。
- 中间人不可能整体替换证书,因为他没有CA私钥,制造的数字签名浏览器无法用CA公钥解密,因此这个证书也会失效。