温馨提示×

Ubuntu如何配置Tomcat SSL证书

小樊
45
2025-12-26 20:33:19
栏目: 云计算

Ubuntu 上 Tomcat 配置 SSL 证书实操指南

一 准备与前置检查

  • 准备证书文件:从证书服务商下载适配 Tomcat 的证书包,常见为 JKSPFX/PKCS12,通常包含一个证书文件与一个包含密码的 .txt 文件;确保证书已签发绑定域名与访问域名一致。将文件上传到 $CATALINA_HOME/conf/(Tomcat 安装目录可用 sudo find / -iname "*tomcat*" 查找)。
  • 解析与备案:域名 A 记录需指向服务器公网 IP;若服务器在中国内地,需完成 ICP 备案
  • 端口与防火墙:开放 443/TCP(以及测试用 8443/TCP)。云平台安全组放行 443;本机防火墙按实际启用 ufw/firewalld/nftables/iptables 放行 443。示例:sudo ufw allow 443/tcpsudo firewall-cmd --permanent --add-port=443/tcp && sudo firewall-cmd --reload
  • 访问验证:完成后用 https://你的域名https://服务器IP:8443 验证。

二 使用 PFX PKCS12 证书配置 Tomcat 9(推荐)

  • 放置证书:将下载的 domain.pfxpfx-password.txt 放到 $CATALINA_HOME/conf/cert/
  • 修改配置:编辑 $CATALINA_HOME/conf/server.xml,在 内添加或修改如下 Connector(示例为直接监听 443;若需 8443,将 port 改为 8443 并用 https://:8443 访问):
<Connector port="443"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           SSLEnabled="true"
           scheme="https"
           secure="true"
           keystoreFile="/opt/tomcat/conf/cert/domain.pfx"
           keystoreType="PKCS12"
           keystorePass="从pfx-password.txt复制的密码"
           clientAuth="false"
           sslProtocol="TLS"/>
  • Tomcat 9 重要提示:若你的 PFX 里证书别名不是 tomcat,需先转换别名,否则启动会报错:
keytool -changealias -keystore /opt/tomcat/conf/cert/domain.pfx \
        -alias 当前别名 -destalias tomcat
  • 可选 HTTP→HTTPS:在 $CATALINA_HOME/conf/web.xml 的 之后添加:
<security-constraint>
  <web-resource-collection>
    <web-resource-name>Protected Context</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>
  • 重启生效:sudo systemctl restart tomcat9(或 tomcat8/tomcat7)。
  • 说明:若你更倾向使用 JKS,见下一节;若使用 PFX,上述 keystoreType 必须为 PKCS12

三 使用 JKS 证书配置 Tomcat 7 8 9

  • 放置证书:将 keystore.jkskeystore-password.txt 放到 $CATALINA_HOME/conf/
  • 修改配置:编辑 $CATALINA_HOME/conf/server.xml,添加或修改如下 Connector(示例监听 443;若需 8443,将 port 改为 8443):
<Connector port="443"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           SSLEnabled="true"
           scheme="https"
           secure="true"
           keystoreFile="/opt/tomcat/conf/keystore.jks"
           keystorePass="从keystore-password.txt复制的密码"
           clientAuth="false"
           sslProtocol="TLS"/>
  • 可选 HTTP→HTTPS:同第二节的 web.xml 片段。
  • 重启生效:sudo systemctl restart tomcat9
  • 说明:Tomcat 9 同样要求使用 NIO 协议(即 org.apache.coyote.http11.Http11NioProtocol)。

四 自签名证书与快速测试(仅测试环境)

  • 生成 JKS(自签名):
sudo keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 \
        -keystore /opt/tomcat/keystore.jks -validity 365
# 按提示填写信息(域名填实际访问域名)
  • 配置 Connector:使用第三节的 JKS 配置示例(端口可用 8443 测试)。
  • 访问验证:浏览器访问 https://你的域名:8443,会出现不受信任证书提示(自签名正常)。
  • 生产建议:使用受信任 CA 签发的证书替换自签名证书。

五 常见问题与排查

  • 端口与连通性:确认云安全组与系统防火墙已放行 443;本机可用 ss -tlnp | grep ':443',或 nc -w 3 -vz 你的公网IP 443 测试连通。
  • 启动报错与别名:Tomcat 9 要求证书别名为 tomcat(PFX 需先 keytool -changealias)。
  • 协议与端口:Connector 的 protocol 建议使用 org.apache.coyote.http11.Http11NioProtocol;若直接监听 443,访问用 https://域名;若监听 8443,访问用 https://域名:8443
  • 强制 HTTPS:使用 web.xml<transport-guarantee>CONFIDENTIAL</transport-guarantee> 或在 80→443 做重定向。
  • 日志与权限:检查 $CATALINA_HOME/logs/catalina.out;Tomcat 建议以非 root用户运行,目录权限最小化。

0