HTTP与HTTPS
HTTP与HTTPS的区别
HTTP(HyperText Transfer Protocol),即超文本传输协议,是一个应用层协议。HTTP协议以明文方式发送内容,不提供数据加密,因此是不安全的。而HTTPS协议是在HTTP的基础上加入SSL/TSL协议,使用混合加密算法(对称加密+非对称加密)来实现对传输数据的加密。
HTTPS建立连接的方式更加复杂,因此相比之下,HTTP的页面响应速度更快。由于HTTPS需要设计加密,它比HTTP更耗费服务器资源,而且HTTPS需要申请CA证书,总的来说使用HTTPS的成本更高。
另外,两者使用的默认端口不一样,HTTP是80,而HTTPS是443。
HTTPS如何保证安全性
HTTPS使用了对称加密+非对称加密的混合算法,由于使用对称加密时无法避免密钥的传输,而对称加密中加解密使用的是同一个密钥,一旦密钥在传输过程中被截获则数据的安全性就得不到保证。为了解决这个问题,HTTPS首先使用非对称加密,在服务器生成一对密钥,服务器自己保管私钥,将公钥发送给客户端。客户端使用这个公钥来加密后续数据传输时要使用的密钥,然后发送给服务器,这样即使发送过程中被恶意第三方截获,由于第三方没有对应的私钥,因此无法破解密文拿到这个密钥。而服务器收到了密文后,使用私钥进行解密,拿到这个密钥(这个密钥就是后续进行数据传输时,对称加密算法使用的密钥),这就有效解决了对称加密的密钥泄漏问题。
为什么后面要用对称加密而不是非对称加密来加解密数据呢?因为非对称加密算法计算量大,加解密速度慢,因此在解决了对称加密的密钥泄漏问题后,仍然使用对称加密来进行数据的传输,保证效率。
对称加密与非对称加密的区别
- 对称加密:加密和解密使用的是同一个密钥,密钥在传输过程中若被截获则无法保证数据的安全性。相比于非对称加密,对称加密的加密速度更快,效率更高。
- 非对称加密:加密和解密需要两个不同的密钥,即公钥和私钥。通常,由服务器生成一对密钥后,私钥由自己保管,而将公钥对外公开,得到该公钥的客户端使用该公钥对信息进行加密,服务器收到加密数据后使用私钥进行解密。
HTTPS加解密以及数据传输的过程
- 首先,采用HTTPS协议的服务器必须具备一套数字证书,证书需要申请并由专门的数字证书认证机构来颁发。颁发证书的同时会产生一个私钥和公钥,私钥由服务器自己保存,公钥则附带在证书的信息中,同时证书还附带一个数字签名,用来验证证书的完整性和真实性。
- 客户端发起HTTPS请求后,服务器响应该请求,将证书传递给客户端。
- 客户端解析证书并对其进行验证。
- 若证书没有问题,客户端会从证书中取出服务器的公钥,然后客户端生成一个随机码KEY(会话密钥),并使用公钥对该随机码进行加密。
- 客户端把加密后的随机码发给服务器,服务器使用私钥对加密的随机码进行解密。此时,双方都持有随机码KEY,这个随机码是用于后续双方数据通信时对数据加密的对称密钥。
- 后续双方通信时都使用这个随机码KEY来进行数据加密。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)