1. 什么是https
HTTPS叫做Hyper Text Transfer Protocol Secure,它是一种安全的超文本传输协议。下面的图片对比了http和https的区别。
可以看到,http传输的是明文数据,而https传输的是加密数据,因此https可以防止黑客读取和修改传输的数据。https在客户端和服务器之间建立了一个加密连接,这个加密连接使用Secure Socket Layer (SSL)协议或Transport Layer Security(TLS)协议。
- SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取。当前版本为3.0。
- TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本,可以理解为SSL 3.1.
1.2 Secure Socket Layer(SSL)
SSL是标准的加密传输协议,https本质上是通过SSL传输http。通过SSL证书,SSL在客户端和服务器之间建立一个加密连接,SSL证书也被称为数字签名。
1.3 http和https的区别
http | https |
传输明文数据 | 传输加密数据 |
默认是80端口 | 默认是443端口 |
不安全 | SSL安全协议 |
url以 http:// 开头 | url以 https:// 开头 |
1.4 https的优点
- 安全传输:客户端和服务器之间建立一个加密的连接。
- 数据完整性:因为数据是加密的,所以即使黑客截取了信息,也无法读取数据或者修改伪造数据。
- 传输更快:相对手动加密数据然后通过http传输,https传输的数据更小,更快。
- SEO:提升网站的SEO排名。
- 未来:https是网络传输的未来,越来越多网络传输都从http转到https。
2. SSL是如何工作的
SSL传递数据的两个基本概念:
- Asymmetric Cryptography:非对称加密
- Symmetric Cryptography:对称加密
2.1 Asymmetric Cryptography
Asymmetric Cryptography(非对称加密),它有两个密钥:公钥和私钥。私钥是保密的,公钥是公开的。用其中的一个密钥加密的数据,只能用对应的配对密钥解密。
SSL使用非对称加密发起连接,被称为SSL握手,握手成功就建立连接。常用的非对称加密算法有:EIGamal, RSA, DSA, Elliptic curve techniques 和 PKCS。
2.2 Symmetric Cryptography
Symmetric Cryptography(对称加密)的加密过程和解密过程使用同一个密钥。
SSL握手成功后,客户端和服务器端都会拿到当前的session key。这个session key就是它们通讯的密钥,SSL使用这个session key对称加密、解密客户端和服务器端之间的数据。常用的对称加密算法有:AES-128, AES-192 和 AES-256。
2.3 https通过SSL发送数据
https连接分为两步:先SSL握手,然后传递数据。
2.4 SSL握手
SSL握手,是为了验证server,然后把session key安全的发给server。
- 客户端给服务器发送一个消息,包含客户端的SSL版本,密码设置以及session数据。
- 服务器返回消息,包含server的SSL版本,密码配置,包含公钥的SSL证书文件以及session数据。
- 客户端通过公钥验证服务器,如果验证失败则抛出错误,连接失败;如果认证成功,进入第4步。
- 客户端创建一个session key,使用SSL证书的公钥加密session key,然后发送给服务器。
- 服务器使用SSL证书的私钥解密session key,然后服务器使用session key加密并发送一个应答消息,告知客户端我们可以通讯了。
2.5 真实的数据传输
SSL握手之后,客户端和服务器都拥有session key,之后的数据传输都是通过session key加密和解密,SSL证书中的公钥和私钥就没用了。使用对称加密(session key)传输数据的原因是:相对于非对称加密,对称加密简单,速度快,消耗更少的计算资源。
3. 参考
- HTTPS Tutorial:https://www.tutorialsteacher.com/https (主要内容从这里翻译而来)
- SSL/TLS原理详解:https://segmentfault.com/a/1190000002554673