【网络编程】简述Https协议及其与Http协议的区别

📅 发布时间:2026/7/15 7:45:25 👁️ 浏览次数:
【网络编程】简述Https协议及其与Http协议的区别
简单来说Http是超文本传输协议明文传输无加密、无身份验证安全性差Https是HttpSSL/TLS协议的组合基于对称加密非对称加密实现数据加密传输有身份验证安全性高是目前主流的传输协议。核心区别1. 安全性• Http明文传输数据在客户端和服务器之间传递时未经过任何加密处理比如用户名、密码、接口参数等容易被中间人拦截、窃取、篡改安全性极低适合非敏感数据传输如静态页面展示。• Https基于SSL/TLS协议进行加密实现“数据加密身份验证”双重保障数据加密采用「非对称加密握手阶段 对称加密传输阶段」结合的方式避免数据被窃取、篡改身份验证通过数字证书验证服务器或客户端的真实身份防止中间人伪造服务器比如钓鱼网站。后端开发中我们需要配置SSL证书如Let’s Encrypt免费证书并在服务器Nginx、Tomcat中配置HTTPS监听确保加密生效。协议基础与端口• Http基于TCP协议默认端口是80无加密层协议头简单传输效率略高但差距可忽略。• Https基于TCP协议在Http应用层和TCP传输层之间增加了SSL/TLS加密层默认端口是443协议头包含加密相关字段如SSL版本、加密算法。加密原理• Http无任何加密机制数据直接以明文形式传输中间人可直接捕获并读取数据。• Https加密流程分两步面试简化版无需展开太多细节握手阶段服务器向客户端发送数字证书包含公钥客户端验证证书合法性确认服务器身份然后客户端生成一个随机密钥对称密钥用服务器的公钥加密后发送给服务器传输阶段服务器用自己的私钥解密获取对称密钥后续客户端和服务器之间的所有数据都用这个对称密钥进行加密传输对称加密效率高适合大量数据传输。非对称加密用于握手阶段传递对称密钥对称加密用于数据传输阶段兼顾安全性和传输效率私钥由服务器保管不可泄露否则会导致加密失效证书要求• Http无需任何证书只要服务器开启80端口即可提供Http服务开发和部署成本低。• Https必须配置数字证书由权威CA机构颁发如Symantec、Let’s Encrypt证书用于验证服务器身份防止伪造。如果证书过期、无效浏览器会提示“不安全”影响用户访问。后端如何配置Https1. 从CA机构获取证书含公钥、私钥2. 在服务器如Nginx中配置ssl_certificate证书路径、ssl_certificate_key私钥路径监听443端口3. 配置Http请求自动跳转至Https性能开销• Http无加密、无握手过程传输效率略高资源消耗少但差距不大。• Https由于增加了SSL/TLS握手和数据加密、解密过程会产生一定的性能开销约10%-20%对服务器的CPU资源有一定要求。适用场景• Http适合非敏感数据传输比如静态网站博客、资讯、公开的接口无需登录即可访问的接口开发部署简单成本低。• Https适合敏感数据传输比如用户登录、支付、个人信息查询等场景如电商、金融、社交后端是目前互联网业务的主流选择也是浏览器如Chrome强制要求的未使用Https的网站会被标记为“不安全”。常见问题问1Https的握手过程具体是什么样的客户端向服务器发送请求告知支持的SSL/TLS版本和加密算法服务器返回数字证书含公钥和选择的加密算法客户端验证证书合法性生成随机对称密钥用服务器公钥加密后发送给服务器服务器用私钥解密获取对称密钥双方后续用对称密钥加密传输数据握手完成。问2后端如何配置Https以Nginx为例说明。首先从CA机构获取证书文件.pem格式和私钥文件.key格式然后修改Nginx配置文件监听443端口配置ssl_certificate指向证书路径ssl_certificate_key指向私钥路径最后配置rewrite规则将80端口的Http请求自动跳转至443端口的Https重启Nginx即可生效。问3Https一定安全吗为什么不一定绝对安全但要比Http安全得多。可能存在的安全风险1. 证书被伪造但权威CA机构颁发的证书很难伪造且浏览器会验证2. 中间人攻击如果客户端未验证证书可能被伪造服务器拦截3. 私钥泄露服务器私钥泄露会导致加密失效。后端可以通过定期更新证书、保管好私钥、启用TLS1.3版本等方式进一步提升Https的安全性。问3什么是SSL/TLSSSL/TLS 是用于数据加密传输的安全协议TLS 是 SSL 的升级版本核心作用是为 Https 提供加密和身份验证 —— 加密 Http 数据、验证服务器身份避免数据泄露和伪造是 Https 实现安全传输的基础。