Tomcat 环境配置 SSL 证书完整教程
作者
2026-07-12
发布日期
约 3 分钟
阅读时间
Tomcat 9、10、11 推荐使用 PKCS#12 格式的密钥库。本文讲解从证书准备到 HTTPS 配置的完整流程。
生成 PKCS#12 密钥库
openssl pkcs12 -export \
-out /opt/tomcat/conf/example.com.p12 \
-inkey privkey.pem \
-in server.crt \
-certfile chain.pem \
-name tomcat
检查密钥库:
keytool -list -v \
-storetype PKCS12 \
-keystore /opt/tomcat/conf/example.com.p12
条目类型必须是 PrivateKeyEntry,并且应包含完整证书链。
限制权限:
chown tomcat:tomcat /opt/tomcat/conf/example.com.p12
chmod 600 /opt/tomcat/conf/example.com.p12
配置 server.xml
编辑 $CATALINA_BASE/conf/server.xml,在 内添加:
<Connector
port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true">
<SSLHostConfig protocols="TLSv1.2,TLSv1.3">
<Certificate
certificateKeystoreFile="conf/example.com.p12"
certificateKeystorePassword="密钥库密码"
certificateKeystoreType="PKCS12"
certificateKeyAlias="tomcat"
type="RSA" />
</SSLHostConfig>
</Connector>
注意事项:
- •certificateKeyAlias 应与 openssl 命令中的 -name 一致
- •ECDSA 证书可使用 type=”EC”
- •不要在同一 Connector 中混用旧式 keystoreFile 属性和嵌套的 SSLHostConfig
重启和验证
sudo systemctl restart tomcat
sudo systemctl status tomcat
journalctl -u tomcat -n 100 --no-pager
验证 HTTPS:
curl -I https://example.com:8443
openssl s_client \
-connect example.com:8443 \
-servername example.com \
-showcerts
生产环境通常由 Nginx 或负载均衡器监听公网 443。不要为了让 Tomcat 直接监听 443 而以 root 身份运行 Tomcat。
续期后需重新生成 P12 并重启 Tomcat。
—
本文到此结束
—