HTTP与HTTPS的区别
什么是HTTP?
MDN的描述:
HTTP是一种能够获取如 HTML 这样的网络资源的 protocol(通讯协议)。它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的接受方发起的。一个完整的Web文档通常是由不同的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等。
那什么是HTTPS?
维基百科的描述:
HTTP安全(HTTPS)是超文本传输协议(HTTP)的扩展,用于通过计算机网络进行安全通信,并且广泛用于Internet。在HTTPS中,通信协议由传输层安全性(TLS)或以前的前身安全套接字层(SSL)加密。因此该协议通常也被称为HTTP over TLS,或HTTP over SSL。
一、HTTP与HTTPS的区别
- HTTP的URL以http:// 开头,HTTPS 的URL以https:// 开头;
- HTTP不需要证书,HTTPS需要CA证书;
- HTTP是明文传输,HTTPS加密传输;
- HTTP和HTTPS都基于TCP(以及UDP)协议,但HTTP使用TCP协议80端口, HTTPS使用TCP协议443端口;
- HTTP直接和TCP通信,HTTP先和SSL通信,SSL再和TCP通信。
HTTPS采用混合加密机制
百度的描述
- 公开密钥加密也称为非对称密钥加密,该加密算法使用两个不同的密钥:加密密钥和解密密钥。前者公开,又称公开密钥,简称公钥。后者保密,又称私有密钥,简称私钥。这两个密钥是数学相关的,用某用户加密密钥加密后所得的信息只能用该用户的解密密钥才能解密。RSA算法(由发明者Rivest,Shmir和Adleman姓氏首字母缩写而来)是著名的公开密钥加密算法。
- 公钥加密的另一用途是身份验证:用私钥加密的信息,可以用公钥拷贝对其解密,接收者由此可知这条信息确实来自于拥有私钥的某人。
- 公钥的形式就是数字证书。
- 对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。
HTTPS采用混合加密机制,客户端和服务器先用公开密钥加密算法交换对称加密算法密钥,确保密钥安全交换后,使用对称加密算法进行通信。
HTTPS工作流程:
- TCP三次握手;
- 客户端验证服务器数字证书,验证通过,继续下一步骤;(如果客户端配置了客户端验证,服务器方也可以验证客户端的身份)
- DH算法协商对称加密算法的密钥、hash算法的密钥;
- SSL安全加密隧道协商完成;
- 网页以加密的方式传输,用协商好的对称加密算法和密钥加密,保证数据安全;
- 用协商好的hash算法进行数据完整性保护,保证数据不被篡改。
二、HTTPS缺点
SSL速度慢(相对于HTTP):
- 通信慢;
- 硬件资源消耗大导致处理速度变慢。
(目前硬件水平可基本忽略以上这两点)
HTTPS通信需要CA证书(大部分机构收费),不能确保数字证书认证机构的证书一定安全。