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

如何在Docker中部署带SSL的Tomcat Web应用,配置REST API并交付镜像

部署带SSL配置的Tomcat Web应用Docker镜像

下面是完整的实操步骤,覆盖SSL证书生成、Tomcat配置、Docker镜像构建全流程:

1. 生成SSL证书

先创建自签名证书(生产环境请替换为可信CA签发的证书),使用JDK自带的keytool工具:

keytool -genkeypair -alias tomcat -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore localhost.p12 -validity 3650

执行命令后按提示输入证书密码、组织信息等,务必记住设置的密码,后续配置Tomcat会用到。生成的localhost.p12就是我们需要的证书文件。

2. 配置Tomcat启用SSL

修改server.xml

找到Tomcat默认的conf/server.xml,注释掉原有HTTP Connector(可选,也可保留用于跳转),添加HTTPS Connector:

<!-- 注释默认HTTP端口(可选) -->
<!-- <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" /> -->

<!-- 添加HTTPS Connector -->
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="/usr/local/tomcat/conf/localhost.p12"
                     type="RSA"
                     certificateKeystorePassword="你的证书密码"
                     certificateKeystoreType="PKCS12"/>
    </SSLHostConfig>
</Connector>

将certificateKeystorePassword替换为你生成证书时设置的密码。

强制HTTPS跳转(可选)

如果需要把所有HTTP请求自动跳转到HTTPS,修改conf/web.xml,在</web-app>标签前添加:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Entire Application</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

3. 构建Docker镜像

创建Dockerfile,将配置文件、证书和war包整合到镜像中:

# 基于官方Tomcat 9 + JDK 11镜像
FROM tomcat:9-jdk11

# 复制SSL证书到Tomcat配置目录
COPY localhost.p12 /usr/local/tomcat/conf/

# 替换Tomcat的server.xml配置
COPY server.xml /usr/local/tomcat/conf/server.xml

# 替换web.xml以启用HTTPS强制跳转(如果不需要可删除此行)
COPY web.xml /usr/local/tomcat/conf/web.xml

# 复制你的Web应用war包到Tomcat的webapps目录
# 若要替换默认ROOT应用,可将war包命名为ROOT.war
COPY your-app.war /usr/local/tomcat/webapps/

# 暴露HTTPS端口
EXPOSE 8443

# 启动Tomcat
CMD ["catalina.sh", "run"]

将your-app.war替换为你的实际war包文件名,确保Dockerfile和证书、配置文件、war包在同一目录下。

执行构建命令:

docker build -t tomcat-ssl-app:v1 .

4. 运行并验证

启动容器:

docker run -d -p 8443:8443 tomcat-ssl-app:v1

验证方式:

  • 浏览器访问https://localhost:8443/your-app(如果war包是your-app.war),自签名证书会触发安全提示,确认后即可访问应用
  • 用curl测试REST API:
curl -k https://localhost:8443/your-app/api/xxx

-k参数用于跳过自签名证书的验证,生产环境可去掉。

生产环境注意事项

  • 不要使用自签名证书,改用Let's Encrypt等可信CA签发的免费证书,或购买商业证书
  • 证书密码不要硬编码在配置文件中,可通过Tomcat的加密功能或环境变量传递
  • 根据实际业务调整Tomcat的线程数、连接超时等参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:10:30