1480 字
约 4 分钟
0
HTTPS 入门

HTTPS 入门

1. 一句话简介

HTTPS(Hypertext Transfer Protocol Secure)是在 HTTP 之上叠加 TLS/SSL 加密层 的安全传输协议。本 demo 通过 server.ssl.* 配置为内嵌 Tomcat 启用 SSL,并自定义 HttpsConfig 配置类,让 Tomcat 同时监听 80(HTTP)与 443(HTTPS)两个端口,实现 HTTP 请求自动重定向到 HTTPS。它解决的核心问题是:在浏览器与服务器之间传输的数据(账号密码、支付信息、业务数据)明文可被窃听、篡改,而 HTTPS 通过证书身份认证 + 对称加密 + 消息完整性校验,保证数据的机密性、完整性与服务器的身份可信。

2. 什么时候使用

✅ 适用场景

  • 涉及账号登录、表单提交,需要保护用户口令与敏感信息不被中途窃取(如登录页、注册页、支付回调)。
  • 全站或部分接口需要防止中间人攻击、数据被篡改,对传输完整性有要求。
  • 需要证明服务器身份可信,例如电商、银行、需要向用户展示锁形图标的站点。
  • Web 应用与移动端、第三方系统对接的回调地址(如微信/支付宝回调)被平台强制要求 HTTPS。
  • 在内嵌 Tomcat 环境下追求低改造成本的 HTTPS 接入:只需在 application.yml 配置证书路径与密码,Spring Boot 会自动完成 SSL 初始化,无需改动业务代码。
  • 开发/测试环境快速启用加密传输,验证 HTTPS 相关逻辑,可用 keytool 生成自签名证书零成本实现(本 demo 的做法)。

❌ 不适用 / 需谨慎

  • 纯内网、对传输安全性要求不高的场景,HTTPS 的 TLS 握手会增加额外延迟与 CPU 开销,属于过度设计。
  • 自签名证书不能用于生产环境——浏览器会提示"不安全",用户无法建立信任,必须改用受信任的 CA 证书(Let's Encrypt 或商业 CA)。
  • 证书管理有运维成本:证书有有效期(如 Let's Encrypt 90 天需自动续期),过期将导致站点不可访问。
  • 需要处理证书双向认证(mTLS)、证书轮换、多域名(SAN)等复杂场景时,仅靠本 demo 的简单配置不够,需另行设计。
  • 当请求量极大、性能敏感,且由 Nginx/LB 等反向代理统一做 SSL 终结时,不必让每个 Spring Boot 实例都承载 TLS 解密。

3. 常见业务场景

  • Web 站点、后台管理系统全站加密:用户通过浏览器访问管理后台,配置 HTTPS 后所有请求走加密通道。本 demo 的 static/index.html 即演示了通过 https://localhost 访问静态页面,而访问 http://localhost 会被自动 302 重定向到 HTTPS。
  • 统一登录与账号安全:登录、注册、修改密码等页面的表单提交数据含敏感凭证。HTTPS 保证这些凭证在网络传输中不可被窃听,是账号体系的安全底线。本 demo 通过 SecurityConstraint 设置 CONFIDENTIAL 约束并匹配 /*,相当于对全站所有路径强制加密传输,可直接复用该思路到需要全站保护的场景。
  • API 服务对外暴露:REST 接口供移动端、第三方系统调用时采用 HTTPS,防止接口参数与返回数据在公网明文暴露。可只在自己的应用上启用 SSL 而不依赖外部代理,适合直接对外暴露、无法前置反代的场景。
  • 合规与信任背书:银行、政务、金融、电商等行业的合规要求强制全站 HTTPS,并向用户展示受信任的站点锁图标以提升转化率与信任度。
  • 端口收敛的双通道过渡:在迁移 HTTPS 的过渡期,保留 80 端口仅用于重定向、443 端口处理真实流量,保证用户访问旧 http:// 地址仍能平滑落到 HTTPS,无缝完成升级(正是本 demo connector 配置所为)。

4. 同类技术对比

维度 Spring Boot 内嵌 HTTPS(本 demo) Nginx 反向代理终结 SSL 全站 HTTP(明文)
部署形态 应用本身监听 443,独立即成 需前置 Nginx/LB,应用监听 80/内网 直接监听 80
配置难度 低(server.ssl.* 配置项即可) 中(需证书 + 代理配置 + 上游协调)
数据加密 全程 TLS 加密 TLS 终结在代理,代理到上游多为明文 明文不加密
可维护性 证书、应用、端口耦合在一起 证书与业务解耦,集中管理、易轮换 无需管证书
性能开销 应用承受每个请求的 TLS 解密 TLS 卸载到高性能代理,后端压力小 无 TLS 开销
适用规模 中小型应用、单体、直接对外 高并发、微服务集群、多域名 内网/低安全需求

选型建议

单机部署、应用直接对外、希望零依赖接入的一个或多个 Spring Boot 服务,优先考虑内嵌 HTTPS 方案;集群、高并发、需要统一证书管理与多域名证书并存的场景,更适合用 Nginx/LB 做 SSL 终结,业务侧保持透明;纯内网或低敏感数据,可维持 HTTP 以节省 TLS 开销。无论选哪种,生产环境都务必使用受信任的 CA 证书,仅在开发/测试阶段可使用 keytool 自签名证书(本 demo 采用的方式)。

HTTPS 入门
http://www.clxhxhhr.top/posts/488/
作者
clxstart
发布于
2026-09-07
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。