这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战。
1. HTTP的主要缺点
- 通信使用明文,内容可能被窃听。
- 不验证通信方的身份,因此可能遭遇伪装。
- 无法保证报文的完整性,所以可能遭到篡改。
2.什么是HTTPS?
- HTTPS = HTTP + 加密 + 认证 + 完整性保护,所以把添加了加密及认证机制的HTTP称为HTTPS。
- HTTPS并不是应用层的新协议,只是身披SSL外壳的HTTP协议。
- 通常情况下,HTTP直接和TCP通信。当使用SSL时,则先和SSL通信再由它同TCP通信。
- SSL时独立于HTTP的协议,在很多方面都有使用。它采用一种叫做公开密钥加密的加密处理方法。
3.HTTPS的加密方式
- 共享密钥加密(对称密钥加密):加密和解密同用一个密钥的方式。
- 公开密钥加密(非对称加密):这种方式存在两把密钥,私有密钥和公开密钥。 HTTPS采用公开密钥加密和共享密钥加密混合的加密机制。由于公开密钥加密机制比较复杂,在通信时使用处理效率较低。因此HTTPS先采用公开密钥加密将共享密钥发送给对方,然后使用共享加密方式通信。
公开密钥存在一个问题:无法证明密钥本身是否是真实存在的。为了解决这个问题,使用数字证书认证(CA)和相关机关办法的公开密钥证书。
4. HTTPS的安全通信流程
-
- 客户端向服务器发起https请求开始SSL通信。
-
- 服务器用自己的公钥登录数字证书认证机构,获取公钥证书(服务器公钥+数字证书认证机构的数字签名)。
-
- 服务器把公钥证书发送给客户端。
-
- 客户端获取公钥证书后:
-
- 通过数字证书认证机构验证公钥证书是否有效受信。
-
- 客户端验证公钥证书有效受信后,生成一段随机数密码并用公钥证书中的公钥加密(也就是服务器公钥)。
-
- 将带有加密随机数的信息发送给服务器。
-
- 服务器接收到客户端的消息后:
-
- 用私钥将信息解密去除随机数密码。
-
- 把内容功过随机数进行对称加密后,发送给后客户端。
-
- 客户端通过随机数解密服务器传过来的加密信息。
-
- 之后所有的通信数据将由之前客户端生成的随机数密码利用对称加密算法进行加密解密。 HTTP一般使用的加密算法和HASH算法如下:
- 非对称加密算法:RSA,DSA/DSS
- 对称加密算法:AES,RC4,3DES
- HASH算法:MD5,SHA1,SHA256
5. SSL的位置
SSL介于HTTP应用层和TCP传输层之间。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,然后传递给传输层。