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。

本文到此结束