我目前正在使用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下,最好是从同一密钥库中。

据我所知,我需要添加第二个连接器。我的问题是我不确定如何告诉连接器在密钥库中使用哪个证书。

看来该方法与使用keyAlias属性有关。但是,似乎已不赞成使用SSLHostConfig。不幸的是,无论是哪种配置方式,都无法为我的用例找到合适的文档,更不用说示例了。

如何正确配置连接器?如果有多种方法,那么什么才是最佳实践?我是否应该将两个证书都存储在同一密钥库中?

最佳答案

在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

关于tomcat - Tomcat中使用不同证书的多个HTTPS连接器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50639718/

10-13 21:27