gpt4 book ai didi

apache - Tomcat 托管具有多个 SSL 证书的多个虚拟主机

转载 作者:行者123 更新时间:2023-11-28 21:47:57 25 4
gpt4 key购买 nike

例如,我有一台使用 Tomcat 7 托管多个网站的服务器

  • a.abc.com
  • b.abc.com
  • c.def.com
  • d.def.com

利用tomcat的虚拟主机特性,所以它们可能属于不同的webapps文件夹。

我们现在正在尝试为每个网站实现 Https。所以基本上我们得到了 2 个通配符证书,*.abc.com 和 *.def.com

我一直在寻找设置的方法,我发现:

  • This它教我如何使用 tomcat 设置 SSL
  • This它教我如何使用指向不同 IP 地址的不同 SSL 设置多个主机

第二个示例最接近我的需要,但问题是我所有的虚拟主机都具有相同的 IP 地址,唯一的区别在于域名本身,更糟糕的是它们中的大多数甚至有几个不同的别名(例如:我的 d.def.com 可以将 e.ghi.com 作为其别名之一)。

所以我的问题是,我是否可以为所有虚拟主机设置多个 SSL 证书?

最佳答案

恐怕 tomcat 无法满足您的所有要求:

  • 多个域
  • 两个 SSL 证书
  • 唯一的IP地址
  • 标准 SSL 端口(我假设它)

Tomcat SSL 配置在 <Connector> 中定义元素位于 config.xml

<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="${user.home}/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS"/>

每个连接器都需要一个 port属性。参见 HTTP Connector 中的定义文档

The TCP port number on which this Connector will create a server socket and await incoming connections. Your operating system will allow only one server application to listen to a particular port number on a particular IP address.

因此您不能使用同一个端口定义两个连接器,也就不可能配置不同的 SSL 证书。

备选方案

  • 几个 IP 的: address属性配置将用于监听指定端口的地址。使用 SSL 证书为每个主域设置一个 IP 并配置 Connector为之

  • 不同端口:443对于 *.abc.com,444对于 *.def.com 等

  • SSL Proxy:在tomcat前面部署一个类似Apache或Nginx的代理服务器。代理只处理 SSL 协商和虚拟主机。所有流量都以普通 HTTP 重定向到 Tomcat。

以使用Apache mod_ssl为例+ 和 tomcat 连接器 mod_JK您要求的配置很简单

listen 443

<VirtualHost *:443>
ServerName a.abc.com:443
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile "/home/certs/abc.com.crt"
SSLCertificateKeyFile "/home/certs/abc.com.key"
SSLCertificateChainFile "/home/certs/abc.com.ca-bundle"
SSLOptions +StdEnvVars +ExportCertData
ErrorLog "/var/logs/error_abc_443.log"
TransferLog "/var/logs/error_abc_443.log"
JkMount /* worker1

</VirtualHost>


<VirtualHost *:443>
ServerName c.def.com:443
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile "/home/certs/def.com.crt"
SSLCertificateKeyFile "/home/certs/def.com.key"
SSLCertificateChainFile "/home/certs/def.com.ca-bundle"
SSLOptions +StdEnvVars +ExportCertData
ErrorLog "/var/logs/error_def.log"
TransferLog "/var/logs/error_def.log"
JkMount /* worker2
</VirtualHost>

关于apache - Tomcat 托管具有多个 SSL 证书的多个虚拟主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40761660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com