例如,我有一台使用 Tomcat 7 托管多个网站的服务器
- a.abc.com
- b.abc.com
- c.def.com
- d.def.com
使用tomcat的虚拟主机功能,因此它们各自可能属于不同的webapps文件夹。
我们现在正在尝试为每个站点实施 Https。所以基本上我们得到了 2 个通配符证书,*.abc.com 和 *.def.com
我一直在寻找设置方法,发现:
-
This https://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html它教我如何使用 tomcat 设置 SSL
-
This https://stackoverflow.com/a/6343059/1131470它教我如何使用指向不同 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 连接器 https://tomcat.apache.org/tomcat-7.0-doc/config/http.html文档
此连接器将在其上创建服务器套接字并等待传入连接的 TCP 端口号。您的操作系统将只允许一个服务器应用程序侦听特定 IP 地址上的特定端口号.
因此,您无法使用同一端口定义两个连接器,并且无法配置不同的 SSL 证书。
备择方案
多个IP: The address
属性配置将使用哪个地址来侦听指定端口。使用 SSL 证书设置每个主域的 IP 并配置Connector
for it
不同端口: 443
对于 *.abc.com,444
对于 *.def.com 等
SSL 代理:在tomcat前面部署Apache或Nginx等代理服务器。代理仅处理 SSL 协商和虚拟主机。所有流量均以纯 HTTP 方式重定向到 Tomcat。
作为一个例子使用Apache mod_ssl https://httpd.apache.org/docs/current/mod/mod_ssl.html+ 和 tomcat 连接器mod_JK http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html您要求的配置很简单
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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)