如何在Tomcat中配置虚拟主机的SSL证书

核心结论

一台 Tomcat,多个域名(虚拟主机),每个域名配自己的 SSL 证书,用 HTTPS 443 端口访问。

一、准备工作

  1. 你有 2 个以上域名

    www.a.comwww.b.com

  2. 每个域名有 SSL 证书(推荐 .pfx 格式,阿里云 / 腾讯云直接下载)
  3. 把证书放到:

    tomcat/conf/ssl/ (自己新建 ssl 文件夹)


二、最关键配置(server.xml)

1. 配置 HTTPS 连接器(支持多虚拟主机 SSL)

xml
<Connector
    port="443"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    SSLEnabled="true"
    scheme="https"
    secure="true"
    sslProtocol="TLS">

    <!-- 第一个虚拟主机 SSL:www.a.com -->
    <SSLHostConfig hostName="www.a.com">
        <Certificate
            certificateKeystoreFile="conf/ssl/a.com.pfx"
            type="RSA"
            certificateKeystorePassword="证书密码"
            certificateKeystoreType="PFX" />
    </SSLHostConfig>

    <!-- 第二个虚拟主机 SSL:www.b.com -->
    <SSLHostConfig hostName="www.b.com">
        <Certificate
            certificateKeystoreFile="conf/ssl/b.com.pfx"
            type="RSA"
            certificateKeystorePassword="证书密码"
            certificateKeystoreType="PFX" />
    </SSLHostConfig>

</Connector>

2. 配置虚拟主机(与上面 hostName 对应)

xml
<Engine name="Catalina" defaultHost="localhost">

    <!-- 默认主机 -->
    <Host name="localhost" appBase="webapps" />

    <!-- 虚拟主机 1 -->
    <Host name="www.a.com" appBase="webapps/a.com" />

    <!-- 虚拟主机 2 -->
    <Host name="www.b.com" appBase="webapps/b.com" />

</Engine>

三、HTTP 自动跳转 HTTPS(推荐加上)

xml
<Connector port="80" redirectPort="443" />

四、最重要规则(必须遵守)

  1. <SSLHostConfig hostName="xxx">

    必须 完全等于 <Host name="xxx">

  2. 证书路径、密码不能错
  3. 配置完 必须重启 Tomcat

五、访问效果

plaintext
https://www.a.com
https://www.b.com
✅ 每个域名用自己独立的证书

✅ 一台 Tomcat 支持无数个 HTTPS 虚拟主机


六、如果你用的是 pem 证书(crt + key)

替换成这样即可:
xml
<SSLHostConfig hostName="www.a.com">
    <Certificate
        certificateFile="conf/ssl/a.crt"
        certificateKeyFile="conf/ssl/a.key"
        type="RSA" />
</SSLHostConfig>

最简总结

  1. Connector 443 里写 <SSLHostConfig> 配置证书
  2. Host 里写域名和项目路径
  3. 两者名字必须一样
  4. 重启 → 成功
上一篇 SR588更换硬盘后为GBOD状态
下一篇 WLAN远程办公转发策略技术白皮书