一、HTTPS基本概念
HTTPS = HTTP + SSL/TLS
HTTP(HyperText Transfer Protocol,超文本传输协议):一个客户端和服务端请求和应答的标准。
HTTPS(HyperText Transfer Protocol over Secure Socket,超文本传输协议):是以安全为目标的HTTP通道,及HTTP的安全版。在HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
SSL(Server Sockets Layer,安全套接层):及其继任者TLS(Transport Layer Security,传输层安全),是为网络通信提供安全及数据完整性的一种安全协议。SSL与TLS在传输层对网络连接进行加密。
HTTP | HTTPS | |
数据 | 不加密 | SSL加密 |
端口 | 80 | 443 |
证书 | CA证书,一般都为收费,免费的很少 | |
安全 | 连接简单,是无状态的 | 由SSL+HTTP协议构建的可行性加密传输、身份认证的网络协议 |
二、HTTPS协议原理
1、HTTPS三大主要功能:内容加密、身份认证、数据完整性
HTTPS协议的主要功能基本都依赖于SSL/TLS协议,HTTPS的三大主要功能即SSL/TLS主要功能。
① 内容加密
加密算法一般分为两种:对称加密、非对称加密。对称加密(密钥加密):加密和解密使用相同密钥;非对称加密(公钥加密):加密和解密使用不同密钥。
对称加密强度非常高,一般破解不了。但无法安全的生成和保管密钥,1、若客户端与服务端之间每次会话都使用同一密钥加密解密,一旦有人获取到了对称密钥,所有内容就没有安全性可言了,2、大量的密钥很难管理
非对称加密主要用于密钥交换(密钥协商),客户端与服务端每次新建会话都使用非对称密钥交换算法协商得到对称密钥,然后使用该对称密钥完成数据的加密、解密、验证,整个会话过程中的密钥只在内存中生成和保存,而且除会话复用之外的每个会话的对称密钥都不同。但非对称加密存在两个很严重的缺点:1、CPU计算资源消耗非常大;2、加密内容长度限制不能超过公钥长度。因此,非对称加密有一定的局限性,目前只能用来密钥交换或者内容签名,不适合做应用层传输内容的加解密
HTTPS采用非对称加密算法,非对称密钥交换在保证安全的同时也使得HTTPS性能和速度大大降低。
② 身份认证
身份认证主要涉及到PKI(Public Key Infrastructure,公钥基础设施)和数字证书。
数字证书有两个作用:1、身份授权。确保浏览器访问的网站是经过CA验证的可信任的网站;2、分发公钥。每个数字证书都包含了注册者生成的公钥。在SSL握手时会通过certificate消息传输给客户端。
申请者拿到CA证书并部署在服务器,客户端发起会话接收到证书后,数字签名作为证书的防伪标签,来验证该证书是否为CA签发的,或者说是否为伪造的。
③ 数据完整性
数据完整性,即保证所有数据的精确性和可靠性。目前有很多完整性校验算法,要结合实际应用。
2、SSL/TLS协议工作原理
1、SSL/TLS协议:
2、SSL/TLS握手过程:
协议