tomcat9 配置外部服務證書
配置 Tomcat 9 使用外部 SSL 服务证书
为了使 Tomcat 支持 HTTP/2.0 协议并使用外部 SSL 服务证书,必须先确保已获取有效的 SSL/TLS 证书[^1]。一旦拥有该证书及其私钥,则可以按照以下方法将其集成到 Tomcat 的配置中。
准备工作
假设已经有一个由受信任的第三方颁发机构签发的服务端证书 server.crt
和对应的私钥文件 server.key
。如果这些文件是以 PEM 编码的形式存在,则可以直接用于后续操作;如果不是,则可能需要转换成适合 Java 密钥库(JKS) 或者 PKCS#12 格式的文件以便于导入。
对于现有的 .key
文件和 .crt
文件,可以通过 OpenSSL 工具创建一个包含这两部分信息在内的 PCKS#12 (.pfx/.p12) 文件:
openssl pkcs12 -export -in server.crt -inkey server.key -out keystore.p12 -name tomcat -CAfile ca_bundle.crt -caname root
此命令会提示输入密码来保护新生成的密钥库,在之后设置 Tomcat 连接器时需要用到这个密码。
将证书导入 JKS 或保持为 PKCS#12 格式
Tomcat 可以接受两种类型的密钥存储格式——JKS (Java Keystore) 和 PKCS#12。现代版本更推荐后者因为其兼容性和安全性更好。因此可以选择跳过这一步骤而直接使用上一步产生的 .p12 文件作为连接器中的 sslKeystoreFile 参数值。
但如果偏好传统方式或出于某些原因需转存入 JKS,请执行如下指令完成转换:
keytool -importkeystore \
-destkeystore demo.jks \
-srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass password_used_above \
-alias tomcat
这里 -deststorepass
, -destkeypass
后面跟的是目标 JKS 库的新密码,默认情况下通常设为 "changeit". 而源 p12 文件的密码则通过 -srcstorepass
提供.
修改 Server.xml 文件
编辑位于 $CATALINA_HOME/conf/server.xml
下的服务器配置文档, 找到 Connector 元素并将之修改为支持 HTTPS 请求以及指定所使用的协议版本(HTTP/2),同时指明刚才准备好的密钥库路径与相应参数:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol"/>
<!-- 如果是PKCS#12格式 -->
<SSLHostConfig>
<Certificate certificateKeyFile="/path/to/server.key"
certificateFile="/path/to/server.crt"
type="RSA" />
</SSLHostConfig>
<!-- 若采用JKS/PKCS#12形式 -->
<SSLHostConfig protocols="+TLSv1.2,+TLSv1.3,-SSLv3,-TLSv1,-TLSv1.1">
<Certificate certificateKeystoreFile="${catalina.base}/conf/demo.jks"
certificateKeystorePassword="your_keystore_password"
type="RSA" />
</SSLHostConfig>
</Connector>
请注意上述 XML 片段中的 ${catalina.base}
表达式会被替换为实际部署环境下的 CATALINA_BASE 环境变量指向的位置。另外记得把 /path/to/*
替换成真实的绝对路径,并且确认所提供的密码无误。
最后重启 Tomcat 实例让更改生效即可访问 https://localhost:8443 来验证是否成功启用了加密通信和支持HTTP/2特性。
相关推荐


















