Tomcat 11 放置证书的核心逻辑与 Tomcat 9/10 一致(无强制固定路径),但需适配其部署路径、废弃的特性(如 JKS 密钥库)及默认配置规范,以下是针对性的详细说明:
一、核心推荐目录(Tomcat 11 首选)
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 |
二、Tomcat 11 关键适配点(与旧版本差异)
-
证书格式优先 PKCS12(JKS 已废弃)Tomcat 11 正式废弃 JKS 格式密钥库(仅保留兼容),官方强制推荐 PKCS12 格式(更通用、安全),因此证书文件(如 xxx.p12)优先放在 conf/cert,配置时无需额外转换格式。
-
APR/native 模式的系统级目录(可选)若 Tomcat 11 启用 APR/native 模式(依赖 OpenSSL,性能更高),可将 PEM 格式证书(.crt/.key)放在系统级证书目录(Linux):
- 证书文件:/etc/ssl/certs/(通用)或 /etc/pki/tls/certs/(CentOS)
- 私钥文件:/etc/ssl/private/(通用)或 /etc/pki/tls/private/(CentOS)
注意:需确保 Tomcat 11 运行用户(如 tomcat11)对私钥文件有只读权限(避免权限过大)。
三、权限配置(安全核心)
Tomcat 11 对证书文件的权限要求更严格,需避免因权限泄露导致私钥安全问题:
Linux 权限配置示例
|
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 # 私钥仅属主可读
|
Windows 权限配置
右键证书文件 → 「属性」→「安全」→ 移除所有无关用户 / 组,仅保留 Tomcat 运行用户(如 SYSTEM 或自定义 tomcat11 用户)的「读取」权限。
四、Tomcat 11 证书配置示例(核心)
在 conf/server.xml 中配置 SSL 连接器,结合 conf/cert 目录的示例如下:
示例 1:PKCS12 格式(Tomcat 11 原生 NIO2 模式,推荐)
|
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>
|
示例 2:PEM 格式(APR/native 模式)
|
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+)
|
六、核心规范总结
- 99% 场景优先选择 conf/cert 目录,配置简单、迁移方便;
- 避免将证书放在 webapps、bin、temp 等非配置目录(易误删、权限风险);
- 禁用 JKS 格式,全部迁移为 PKCS12(适配 Tomcat 11 废弃策略);
- 证书权限遵循「最小权限原则」(仅运行用户可读),禁止 777 等宽松权限。
|