我目前正在使用Tomcat 8.5通过HTTPs托管Web应用程序。连接器配置如下所示:
<Connector
port="8443"
protocol="HTTP/1.1"
connectionTimeout="10000"
maxHttpHeaderSize="65536"
SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
keystoreFile="myKeystore"
keystorePass="changeit"
/>
我现在要做的是将应用程序托管在另一个URL下,并使用另一个cerficate,最好是来自同一个密钥库。
据我所知Tomcat documentation我需要添加第二个连接器。我的问题是我不知道如何告诉连接器在密钥库中使用哪个证书。
似乎要走的路与使用keyAlias属性有关。但是,这似乎已被弃用,而有利于SSLHostConfig。不幸的是,我没有找到适合我的用例的文档,无论是哪种配置方式,更不用说示例了。
如何正确配置连接器?如果有多种方式,那么最佳做法是什么?我是否应该将两个证书存储在同一个密钥库中?
答案 0 :(得分:2)
在找到详细说明Tomcat文档中所有连接器和SSLHostConfig attributes的页面后,我设法创建了一个工作设置。
这两个连接器现在看起来像这样:
<Connector
address="192.168.0.100"
port="8443"
protocol="HTTP/1.1"
maxHttpHeaderSize="65536" connectionTimeout="10000"
SSLEnabled="true" scheme="https" secure="true">
<SSLHostConfig
sslProtocol="TLS"
certificateVerification="false">
<Certificate
certificateKeystoreFile="myKeystore"
certificateKeystorePassword="changeit"
certificateKeyAlias="server1cert"
certificateKeyPassword="server1pw"
/>
</SSLHostConfig>
</Connector>
<Connector
address="192.168.0.101"
port="8443"
protocol="HTTP/1.1"
maxHttpHeaderSize="65536" maxThreads="150"
SSLEnabled="true" scheme="https" secure="true">
<SSLHostConfig
sslProtocol="TLS"
certificateVerification="false">
<Certificate
certificateKeystoreFile="myKeystore"
certificateKeystorePassword="changeit"
certificateKeyAlias="server2cert"
certificateKeyPassword="server2pw"
/>
</SSLHostConfig>
</Connector>
需要注意的是替换连接器中所有已弃用的SSL属性。
否则,Tomcat将在内部根据已弃用的属性创建默认的SSLHostConfig,从而在启动期间导致错误。有关详细信息,请参阅this answer。