Tomcat 11 放置证书的核心逻辑与 Tomcat 9/10 一致(无强制固定路径),但需适配其部署路径、废弃的特性(如 JKS 密钥库)及默认配置规范,以下是针对性的详细说明:
Tomcat 11 仍以 conf 目录为配置核心,推荐在 conf 下创建 cert 子目录存放证书(路径简洁、适配相对路径配置、便于权限管理),不同部署方式的具体路径如下:
| 部署方式 | Tomcat 11 根目录示例 | 证书推荐路径 |
|---|---|---|
| 解压版(Linux 手动安装) | /opt/apache-tomcat-11.0.0 | /opt/apache-tomcat-11.0.0/conf/cert |
| 解压版(Windows 手动安装) | D:\apache-tomcat-11.0.0 | D:\apache-tomcat-11.0.0\conf\cert |
| 系统包安装(Ubuntu/Debian) | /etc/tomcat11(全局配置) | /etc/tomcat11/conf/cert |
| 系统包安装(CentOS/RHEL) | /etc/tomcat11 | /etc/tomcat11/conf/cert |
| Docker 官方镜像 | /usr/local/tomcat(容器内默认根目录) | /usr/local/tomcat/conf/cert |
证书格式优先 PKCS12(JKS 已废弃)Tomcat 11 正式废弃 JKS 格式密钥库(仅保留兼容),官方强制推荐 PKCS12 格式(更通用、安全),因此证书文件(如 xxx.p12)优先放在 conf/cert,配置时无需额外转换格式。
APR/native 模式的系统级目录(可选)若 Tomcat 11 启用 APR/native 模式(依赖 OpenSSL,性能更高),可将 PEM 格式证书(.crt/.key)放在系统级证书目录(Linux):
注意:需确保 Tomcat 11 运行用户(如 tomcat11)对私钥文件有只读权限(避免权限过大)。
Tomcat 11 对证书文件的权限要求更严格,需避免因权限泄露导致私钥安全问题:
|
1 2 3 4 5 6 7 8 9 |
# 切换到证书目录 cd /opt/apache-tomcat-11.0.0/conf/cert # 设置证书归属为 Tomcat 运行用户(如 tomcat11) chown tomcat11:tomcat11 *.p12 # 密钥库文件仅属主可读(最安全,600 权限) chmod 600 your-cert.p12 # PEM 格式证书/私钥(APR 模式) chmod 644 your-cert.crt # 证书可只读共享 chmod 600 your-key.key # 私钥仅属主可读 |
右键证书文件 → 「属性」→「安全」→ 移除所有无关用户 / 组,仅保留 Tomcat 运行用户(如 SYSTEM 或自定义 tomcat11 用户)的「读取」权限。
在 conf/server.xml 中配置 SSL 连接器,结合 conf/cert 目录的示例如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<!-- 443 端口 SSL 连接器(Tomcat 11 推荐 NIO2 协议) --> <Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" maxThreads="200" SSLEnabled="true"> <SSLHostConfig> <!-- 证书路径:相对路径(以 Tomcat 根目录为基准) --> <Certificate certificateKeystoreFile="conf/cert/your-cert.p12" type="RSA" keystoreType="PKCS12" <!-- 强制指定 PKCS12 --> keystorePass="你的密钥库密码" keyPass="你的私钥密码"/> <!-- 与密钥库密码一致可省略 --> </SSLHostConfig> </Connector> |
|
1 2 3 4 5 6 7 8 9 10 11 |
<Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol" maxThreads="200" SSLEnabled="true"> <SSLHostConfig> <!-- 绝对路径指向 conf/cert 目录的 PEM 证书 --> <Certificate certificateFile="/opt/apache-tomcat-11.0.0/conf/cert/your-cert.crt" privateKeyFile="/opt/apache-tomcat-11.0.0/conf/cert/your-key.key" type="RSA"/> </SSLHostConfig> </Connector> |
多实例 Tomcat 11每个实例有独立的 CATALINA_BASE(如 /opt/tomcat11-instance1),证书需放在对应实例的 CATALINA_BASE/conf/cert 目录,而非全局 TOMCAT_HOME/conf。
Docker 容器化 Tomcat 11推荐将宿主机证书目录挂载到容器内的 conf/cert,示例命令:
|
1 2 3 4 |
docker run -d \ -v /宿主机证书路径/:/usr/local/tomcat/conf/cert \ -p 443:443 \ tomcat:11-jdk17 # Tomcat 11 官方镜像(需 JDK 17+) |