Tomcat在CentOS中的SSL证书如何安装
导读:在 CentOS 上为 Tomcat 安装 SSL 证书 一 准备与前置检查 环境:CentOS 7/8/9,Tomcat 8.5/9,已安装 JDK 并配置好 JAVA_HOME。 证书:从证书服务商下载服务器类型为 Tomcat 的证...
在 CentOS 上为 Tomcat 安装 SSL 证书
一 准备与前置检查
- 环境:CentOS 7/8/9,Tomcat 8.5/9,已安装 JDK 并配置好 JAVA_HOME。
- 证书:从证书服务商下载服务器类型为 Tomcat 的证书包(常见为 PFX/PKCS12,部分也提供 JKS;同时会提供 .txt 密码文件,且每次下载密码可能不同)。
- 域名与网络:证书绑定的域名已正确 DNS 解析 到服务器;服务器防火墙与云厂商安全组已放行 TCP 443;若网站在 中国内地,需完成 ICP 备案。
- 连接测试:本地可用
ping yourdomain验证解析;服务器上可用ss -tlnp | grep ':443'或nc -vz yourdomain 443检查端口连通性。
二 安装步骤
- 上传证书
- 将证书文件(如 domain.pfx 或 domain.jks)与 密码文件 上传到 Tomcat 配置目录,例如 $CATALINA_HOME/conf/ 或新建 $CATALINA_HOME/conf/cert/。
- 编辑 server.xml
- 打开 $CATALINA_HOME/conf/server.xml。
- 启用 HTTP→HTTPS 跳转(端口 80 的 Connector):
< Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" /> - 配置 HTTPS Connector 使用 443(推荐 NIO 模式):
- 使用 PFX/PKCS12(多数证书包为此格式):
< Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> < SSLHostConfig> < Certificate certificateKeystoreFile="conf/domain.pfx" certificateKeystorePassword="YourPfxPassword" certificateKeystoreType="PKCS12" /> < /SSLHostConfig> < /Connector> - 使用 JKS(如你自行转换或证书商直接提供):
< Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> < SSLHostConfig> < Certificate certificateKeystoreFile="conf/domain.jks" certificateKeystorePassword="YourJksPassword" type="RSA" /> < /SSLHostConfig> < /Connector> - 若此前存在 AJP Connector,将其 redirectPort 改为 443:
< Connector protocol="AJP/1.3" address="::1" port="8009" redirectPort="443" />
- 使用 PFX/PKCS12(多数证书包为此格式):
- 可选 全站 HTTP 自动跳转 HTTPS
- 在 $CATALINA_HOME/conf/web.xml 的
< web-app>结束标签前加入:< security-constraint> < web-resource-collection> < web-resource-name> SSL< /web-resource-name> < url-pattern> /*< /url-pattern> < /web-resource-collection> < user-data-constraint> < transport-guarantee> CONFIDENTIAL< /transport-guarantee> < /user-data-constraint> < /security-constraint>
- 在 $CATALINA_HOME/conf/web.xml 的
- 重启 Tomcat
或使用 systemd:$CATALINA_HOME/bin/shutdown.sh $CATALINA_HOME/bin/startup.shsudo systemctl restart tomcat(按你的实际服务名调整)。
三 验证与常见问题
- 验证
- 访问 https://yourdomain(默认端口 443 无需加端口),浏览器地址栏出现 锁形图标 表示成功;也可使用
curl -Iv https://yourdomain查看证书链与握手信息。
- 访问 https://yourdomain(默认端口 443 无需加端口),浏览器地址栏出现 锁形图标 表示成功;也可使用
- 常见问题与排查
- 端口未放行:在云安全组与系统防火墙(firewalld/iptables)放行 443/TCP;用
ss -tlnp | grep ':443'或nc -vz yourdomain 443复核。 - 密码错误:PFX/JKS 的 密码文件与证书一一对应,重新下载会生成新密码,需同步更新配置。
- 证书格式不匹配:若拿到的是 PEM 证书链 + 私钥,可转换为 PKCS12 再配置:
然后在 Connector 中使用openssl pkcs12 -export \ -in server.crt -inkey server.key \ -out domain.pfx -name tomcat \ -CAfile chain.crt -caname rootcertificateKeystoreType="PKCS12"指向该 .pfx。 - HTTP 未跳转:确认 80 端口 Connector 的 redirectPort=443 已设置,且应用或 web.xml 的
< transport-guarantee> CONFIDENTIAL< /transport-guarantee>生效。 - 域名不匹配或证书未签发:证书需对访问域名有效(含精确域名与通配符匹配规则),状态需为 已签发。
- 端口未放行:在云安全组与系统防火墙(firewalld/iptables)放行 443/TCP;用
四 进阶与可选方案
- APR/OpenSSL 引擎(可选):若追求更高性能,可启用 APR 模式并配置本地 OpenSSL,示例:
需安装 tomcat-native 与 OpenSSL 依赖,按官方文档编译启用。< Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol" maxThreads="150" SSLEnabled="true"> < SSLHostConfig> < Certificate certificateKeyFile="conf/server.key" certificateFile="conf/server.crt" certificateChainFile="conf/chain.crt" type="RSA" /> < /SSLHostConfig> < /Connector> - 使用 RewriteValve 做跳转(可选):在 server.xml 的
< Host>内加入重写阀并配置规则,可实现更灵活的跳转逻辑(适合复杂场景)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Tomcat在CentOS中的SSL证书如何安装
本文地址: https://pptw.com/jishu/782679.html
