# 1、HTTP 与 HTTPS 的区别
HTTP+信息加密+身份验证+完整性保护 = HTTPS
- HTTP 是明文传输,HTTPS 通过 SSL\TLS 进行了加密。
- HTTP 的端口号是 80,HTTPS 是 443。
- HTTPS 需要到 CA 申请证书,一般免费证书很少,需要交费。
- HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
# 2、为什么要使用HTTPS?
- 对数据进行了加密,建立一个信息安全通道,来保证数据传输的安全
- 对网站服务器进行真实身份认证
# 3、加密算法
- 对称加密: 通俗的讲,就是你知道加密,也知道解密,也就是加密和解密的秘钥是相同的。对称加密的速度是非对称加密的100倍左右。容易受到中间人攻击。(信息加密)
- 非对称加密: 服务端将公钥发送给客户端,客户端使用公钥加密信息,服务器接收到消息后使用私钥解密。公钥加密的内容,必须用私钥才能解密,私钥加密的内容,只有公钥才能解密。(主要作用是身份验证和秘钥协商)
# 4、客户端和服务器端建立安全连接的握手过程
- 1、client向server发起安全连接的https请求
- 2、server返回数字证书,client验证数字证书(使用CA验证)正确,得到server公钥。
- 3、client随机生成对称加密的密码,client用server的公钥对随机密码加密后传输给server。
- 4、服务器通过私钥解密对称加密的密码,然后client和server就可以通过对称加密安全的传输数据了。
# 5、HTTPS中间人攻击
中间人攻击过程如下:
- 1、服务器向客户端发送公钥。
- 2、攻击者截获公钥,保留在自己手上。
- 3、然后攻击者自己生成一个
伪造
的公钥,发送给客户端。 - 4、客户端收到伪造的公钥后,生成加密的
hash
值发送给服务器。 - 5、攻击者获得加密的
hash
值后,用自己的私钥解密获得真秘钥。 - 6、同时生成假的加密
hash
值,发送给服务器。 - 7、服务器用私钥解密获得假秘钥。
- 8、服务器用假的秘钥加密传输信息。
防范方法:服务器在发送给浏览器的公钥中加入CA
证书,浏览器可以验证CA
证书的有效性。
参考文档
1、HTTP和HTTPS详解 (opens new window)
2、谈谈 HTTPS (opens new window)