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

Spring Boot 3 HTTPS项目部署至Tomcat服务器的配置指导求助

Spring Boot 3 线上Tomcat HTTPS部署配置疑问

我已在本地成功为Spring Boot 3项目配置HTTPS,本地application.yaml配置如下:

spring:
  config:
    activate:
      on-profile: development
  application:
    name: meteraindo
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.MySQLDialect
    show-sql: true
    hibernate:
      ddl-auto: update
  datasource:
    username: root
    password: 1ron_man
    url: jdbc:mysql://localhost:3306/meterai
    driver-class-name: com.mysql.cj.jdbc.Driver
  servlet:
    multipart:
      max-file-size: 50MB
      max-request-size: 50MB
    
  mail:
    host: smtp.gmail.com
    port: 587
    username: info@cg2net.id
    password: findingCg2
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
          ssl:
            protocols: TLSv1.2
server:  
  port: 8443
  ssl:
    key-store: src/main/resources/meteraindo.p12
    key-store-type: PKCS12
    key-store-password: padamuNegr1
    key-alias: meteraindo
---

非HTTPS模式下,我只需执行mvn clean install并上传war包即可完成部署,但部署至线上Tomcat服务器时,有以下疑问:执行mvn install时Spring Boot是否会将.p12文件整合进war包?还是需要手动上传至服务器?

我已取消注释Tomcat的server.xml中以下配置:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol"/>
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
                         certificateFile="conf/localhost-rsa-cert.pem"
                         certificateChainFile="conf/localhost-rsa-chain.pem"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

恳请指导我完成服务器端的配置与部署步骤,提前感谢!

更新:按照@M. Deinum的建议,使用可执行jar包在虚拟机测试时HTTPS可正常运行,但部署至阿里云主机时无法运行,推测需要额外配置。


解答

一、关于.p12文件是否会被打包进war包

如果你的.p12文件放在src/main/resources目录下,执行mvn clean install时,Maven会自动将该目录下的文件打包到war包的WEB-INF/classes目录中。但注意:当把Spring Boot项目以war包部署到外部Tomcat时,application.yaml里的server.ssl相关配置会被外部Tomcat忽略,外部Tomcat会使用自身server.xml中的SSL配置。

二、线上Tomcat服务器配置与部署步骤

针对当前情况,有两种部署方案可选:

方案1:使用外部Tomcat托管war包(推荐统一用Tomcat管理SSL)
  1. 调整Spring Boot项目配置

    • 修改application.yaml,移除server.ssl相关配置,将server.port改为Tomcat默认HTTP端口(如8080),因为外部Tomcat会接管端口和SSL。
    • 确保pom.xml中打包方式为war:
      <packaging>war</packaging>
      
    • 添加Tomcat starter依赖(若之前为jar部署需调整):
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-tomcat</artifactId>
          <scope>provided</scope>
      </dependency>
      
  2. 配置外部Tomcat的SSL

    • 将meteraindo.p12上传到Tomcat的conf目录(或指定的安全目录)。
    • 修改Tomcat的server.xml,替换原有SSL Connector配置为适配PKCS12格式的内容:
      <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
                 maxThreads="150" SSLEnabled="true">
          <SSLHostConfig>
              <Certificate certificateKeystoreFile="conf/meteraindo.p12"
                           certificateKeystorePassword="padamuNegr1"
                           type="RSA" />
          </SSLHostConfig>
      </Connector>
      
      注:若为正规购买的证书,需确保证书链完整;自签名证书需在服务器上信任该证书。
    • 可选:配置HTTP跳转HTTPS,在server.xml的Engine标签下添加:
      <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
      
      然后在Tomcat的conf/Catalina/localhost下创建rewrite.config文件,内容如下:
      RewriteCond %{HTTPS} off
      RewriteRule ^(.*)$ https://%{SERVER_NAME}:8443$1 [R,L]
      
  3. 部署war包

    • 执行mvn clean install生成war包,上传到Tomcat的webapps目录,Tomcat会自动解压部署。
    • 启动Tomcat,访问https://你的服务器IP:8443/项目上下文路径即可。
方案2:使用可执行jar包部署(Spring Boot自带嵌入式Tomcat)

既然虚拟机测试可执行jar正常,部署到阿里云失败需做以下检查配置:

  1. 阿里云安全组配置
    • 登录阿里云控制台,进入对应ECS实例的安全组规则,添加入方向规则,开放8443端口(HTTPS)。
  2. 服务器防火墙配置
    • 若服务器开启防火墙(如firewalld或iptables),需开放8443端口:
      • firewalld命令:sudo firewall-cmd --add-port=8443/tcp --permanent,再执行sudo firewall-cmd --reload
      • iptables命令:sudo iptables -A INPUT -p tcp --dport 8443 -j ACCEPT,保存规则。
  3. 证书路径检查
    • 若jar包已包含.p12,确保application.yaml中key-store路径正确;若使用外部证书文件,建议用绝对路径(如/opt/certs/meteraindo.p12),并保证运行jar的用户有读取权限。
  4. 启动jar包
    • 用命令nohup java -jar 你的项目jar包名.jar --spring.profiles.active=development &后台运行,查看nohup.out日志排查错误。

三、常见问题排查

  • 访问HTTPS出现证书错误:检查证书有效性、域名匹配度(若为域名证书)。
  • jar包启动失败:查看日志中的错误信息,比如证书路径错误、密码不正确、端口被占用等。
  • Tomcat启动失败:查看logs/catalina.out日志,排查SSL配置是否有误。

内容的提问来源于stack exchange,提问作者fajar setiawan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:55:06