配置Tomcat以使用Windows证书存储区进行SSL

时间:2016-06-20 18:58:42

标签: java windows tomcat ssl

我已经部署了许多SSL配置,包括Tomcat(cacerts + keytool)和IIS(Windows Certificate Store + netsh http sslcert),所以我熟悉这些程序。

有没有人想出办法将Tomcat的SSL连接器指向Windows应用商店(即配置,扩展,插件等)?只是希望将SSL部署的管理集中到一个商店,而不是拥有多个商店。

4 个答案:

答案 0 :(得分:1)

似乎不可能。来自tomcat 8文档https://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html

  

tomcat目前仅在JKS,PKCS11或PKCS12格式密钥库上运行。

Windows应用商店需要一个类似于&#WINDOWS-MY'的特定连接器。 JSSE。

文档中没有对Windows证书库的任何插件或连接器的引用。

答案 1 :(得分:1)

根据“SSL enabling in Tomcat Windows server”的答案,您可以在server.xml中的连接器配置中将密钥库类型指定为“Windows-My”,它也适用于Tomcat 8.0.22

<Connector port="8443" 
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           SSLEnabled="true"
           maxThreads="150" 
           scheme="https" 
           secure="true"
           keyAlias="<alias of the cert>"
           keystoreFile=""
           keystoreType="Windows-My"
           clientAuth="false" 
           sslProtocol="TLS"
           keepAliveTimeout="200000" />

答案 2 :(得分:0)

<Connector port="8443" 
               protocol="org.apache.coyote.http11.Http11NioProtocol"
               SSLEnabled="true"
               maxThreads="150" 
               scheme="https" 
               secure="true"
               keyAlias="<alias of the cert>"
               keystoreFile=""
               keystorePass=""
               keystoreType="Windows-My"
               clientAuth="false" 
               sslProtocol="TLS"
               keepAliveTimeout="200000" />

keystoreFile keystorePass 必须设置为空字符串。 see my comment at bz.apache.org "BUG 56021"

如果未设置,则默认为会引起麻烦的值。

keyAlias 应该是证书的友好名称(如果有的话)或通用名称。

答案 3 :(得分:0)

虽然 Dmitry 的解决方案适用于 Tomcat 8.0,但从 Tomcat 8.5 开始,有一个小警告:您需要将 JSSE 显式设置为 SSLImplementation。因此配置变为(还考虑到 Tomcat 8.5 中引入的新结构):

<Connector port="8443"
           sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"
           scheme="https" secure="true" SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateKeystoreType="Windows-MY"
                     certificateKeystoreFile=""
                     certificateKeyAlias="tomcat" />
    </SSLHostConfig>
</Connector>

或者,您也可以在 useOpenSSL="false" 上设置 AprLifecycleListener