我已经部署了许多SSL配置,包括Tomcat(cacerts + keytool)和IIS(Windows Certificate Store + netsh http sslcert),所以我熟悉这些程序。
有没有人想出办法将Tomcat的SSL连接器指向Windows应用商店(即配置,扩展,插件等)?只是希望将SSL部署的管理集中到一个商店,而不是拥有多个商店。
答案 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
。