You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS上实现HTTP到HTTPS请求重定向?解决Spring服务适配问题

在AWS EC2上为Spring服务配置HTTPS解决跨协议调用问题

方案一:使用AWS应用负载均衡器(ALB)实现SSL终止(推荐)

这种方式无需修改Spring服务代码,由负载均衡器处理HTTPS加密,后端仍用HTTP通信,适合AWS新手。

  1. 申请SSL证书

    • 登录AWS控制台,打开Certificate Manager(ACM),选择EC2实例所在的AWS区域。
    • 点击「请求证书」,选择「公有证书」,输入你的域名(无域名可先为EC2弹性IP绑定域名后再申请)。
    • 选择DNS验证方式,按照提示在域名解析服务商处添加指定DNS记录,完成验证后等待证书颁发。
  2. 创建应用负载均衡器(ALB)

    • 进入EC2控制台「负载均衡器」页面,点击「创建负载均衡器」,选择「应用负载均衡器」。
    • 基础配置:命名负载均衡器,选择「互联网面向」,VPC选EC2所在VPC,勾选至少两个可用区的子网。
    • 安全设置:添加HTTPS监听(端口443),关联ACM申请的证书;可同时添加HTTP监听(端口80),设置转发到HTTPS 443端口实现自动跳转。
    • 目标组:新建目标组,目标类型选「实例」,端口填8080,注册你的EC2实例,配置健康检查路径(如Spring服务的/actuator/health,无健康端点则用/)。
  3. 配置安全组

    • 编辑EC2实例的安全组,添加入站规则:允许来自ALB安全组的8080端口访问。
    • 编辑ALB的安全组,添加入站规则:允许0.0.0.0/0的443(HTTPS)和80(HTTP)端口访问。
  4. 更新前端调用地址
    将前端代码中调用Spring服务的地址,从EC2公网IP:8080替换为ALB的DNS名称(无需加端口,默认走443)。

方案二:直接在Spring服务中配置HTTPS

若不想使用负载均衡器,可直接在Spring Boot中启用HTTPS。

  1. 获取并转换SSL证书

    • 用ACM申请证书后导出.crt证书文件和.key私钥文件;或用Let's Encrypt生成免费证书。
    • 使用OpenSSL将证书转换为Java支持的PKCS12格式:
      openssl pkcs12 -export -in your-cert.crt -inkey your-private.key -out keystore.p12 -name spring-ssl
      
      执行时设置证书密码,后续配置会用到。
  2. 配置Spring Boot
    在application.properties中添加以下配置:

    server.port=443
    server.ssl.key-store=classpath:keystore.p12
    server.ssl.key-store-password=你的证书密码
    server.ssl.key-store-type=PKCS12
    server.ssl.key-alias=spring-ssl
    
  3. 部署与配置

    • 将keystore.p12放入Spring项目的src/main/resources目录,重新打包部署到EC2实例。
    • 编辑EC2安全组,添加入站规则:允许0.0.0.0/0的443端口访问。
    • 若需要HTTP自动跳转HTTPS,可在Spring中添加重定向配置,或在EC2上部署Nginx做反向代理。

注意事项

  • ACM证书仅在申请的区域可用,若使用CloudFront需在us-east-1区域申请证书。
  • 方案一的ALB方式更易维护,无需关注证书更新和Spring服务的SSL配置,适合长期运维。
  • 若使用域名,确保域名已正确解析到ALB或EC2实例的公网IP/弹性IP。

内容的提问来源于stack exchange,提问作者Emiliano Quintero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 20:52:41