HTTPS 是基于 SSL/TLS 的 HTTP,要解释 HTTPS,只需要在了解 HTTP 的基础上,了解 SSL/TLS 就可以了。
HTTPS 是安全的 HTTP,其安全来自于对传输信息的加密,加密方法有可以分为对称加密和非对称加密,下面我们来看加密方法中的非对称加密,并介绍几个非对称加密的应用,如数字签名和数字证书。
非对称加密
服务器有两个密钥,一个公钥 Public Key,一个私钥 Private Key,用任意一个密钥加密的信息都能用另一个密钥解密。
一个用私钥解密公钥的例子是服务端解密客户端信息:
客户端用公钥加密信息,发送给服务器,服务器收到后用私钥解密,由于私钥只有服务器拥有,所以这个消息只对发送者和这个持有私钥的服务器可见。
数字签名
一个用公钥解密私钥的例子是数字签名:
- 服务器给客户端发送消息时,要为这个消息签字,以证明是服务器自己发的。服务器首先用一个 Hash 函数处理要发送的消息,这会生成一个短小的串,称为消息摘要,消息摘要是不可逆的,即不能被转换回原文。
- 随后服务器再将消息摘要用私钥加密,加密后的结果就是数字签名。
- 客户端收到这个消息后,首先用公钥解密数字签名,若解密成功,则证明是由持有对应私钥的服务器发送的,客户端再用相同的 Hash 函数处理收到的消息,若输出的串与服务器发送的消息摘要相同,则证明被签名的数据没有被篡改。