欢迎光临
我们一直在努力

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

简单来说:Http是超文本传输协议,明文传输,无加密、无身份验证,安全性差;Https是Http+SSL/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),证书用于验证服务器身份,防止伪造。如果证书过期、无效,浏览器会提示“不安全”,影响用户访问。

    后端如何配置Https:1. 从CA机构获取证书(含公钥、私钥);2. 在服务器(如Nginx)中配置ssl_certificate(证书路径)、ssl_certificate_key(私钥路径),监听443端口;3. 配置Http请求自动跳转至Https

    性能开销

    • Http:无加密、无握手过程,传输效率略高,资源消耗少(但差距不大)。

    • Https:由于增加了SSL/TLS握手和数据加密、解密过程,会产生一定的性能开销(约10%-20%),对服务器的CPU资源有一定要求。

    适用场景

    • Http:适合非敏感数据传输,比如静态网站(博客、资讯)、公开的接口(无需登录即可访问的接口),开发部署简单,成本低。

    • Https:适合敏感数据传输,比如用户登录、支付、个人信息查询等场景(如电商、金融、社交后端),是目前互联网业务的主流选择,也是浏览器(如Chrome)强制要求的(未使用Https的网站会被标记为“不安全”)。

    常见问题

    问1:Https的握手过程具体是什么样的?

  • 客户端向服务器发送请求,告知支持的SSL/TLS版本和加密算法;
  • 服务器返回数字证书(含公钥)和选择的加密算法;
  • 客户端验证证书合法性,生成随机对称密钥,用服务器公钥加密后发送给服务器;
  • 服务器用私钥解密,获取对称密钥;
  • 双方后续用对称密钥加密传输数据,握手完成。
  • 问2:后端如何配置Https?以Nginx为例说明。

    首先从CA机构获取证书文件(.pem格式)和私钥文件(.key格式);然后修改Nginx配置文件,监听443端口,配置ssl_certificate指向证书路径,ssl_certificate_key指向私钥路径;最后配置rewrite规则,将80端口的Http请求自动跳转至443端口的Https,重启Nginx即可生效。

    问3:Https一定安全吗?为什么?

    不一定绝对安全,但要比Http安全得多。可能存在的安全风险:1. 证书被伪造(但权威CA机构颁发的证书很难伪造,且浏览器会验证);2. 中间人攻击(如果客户端未验证证书,可能被伪造服务器拦截);3. 私钥泄露(服务器私钥泄露,会导致加密失效)。后端可以通过定期更新证书、保管好私钥、启用TLS1.3版本等方式,进一步提升Https的安全性。

    问3:什么是SSL/TLS?

    SSL/TLS 是用于数据加密传输的安全协议,TLS 是 SSL 的升级版本,核心作用是为 Https 提供加密和身份验证 —— 加密 Http 数据、验证服务器身份,避免数据泄露和伪造,是 Https 实现安全传输的基础。

    赞(0)
    未经允许不得转载:171主机测评 » 【网络编程】简述Https协议及其与Http协议的区别
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址