我已经部署了许多SSL配置,包括tomcat(cacerts keytool)和IIS(Windows证书存储 NetSH HTTP SSLCERT),因此我熟悉这些过程。<<<<<<<<<<<<<<<<
是否有人想出了一种将Tomcat的SSL连接器指向Windows商店的方法(即配置,扩展,插件等)?只是希望将SSL部署的管理集中到一个商店,而不是拥有多家商店。
根据"在tomcat Windows Server中启用SSL"上的答案,您可以在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" />
<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 必须设置为空字符串。在bz.apache.org上查看我的评论,"错误56021"
如果未设置,它们将默认为导致麻烦的值。
keyalias 应该是友好名称(如果有一个)或证书的通用名称。
似乎不可能。来自Tomcat 8文档https://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html
tomcat当前仅在JKS,PKCS11或PKCS12格式密钥库上运行。
Windows Store需要一个类似于JSSE的" Windows-My"的特定连接器。
文档中没有任何引用到Windows证书存储的任何插件或连接器。
dmitry的解决方案在tomcat 8.0上起作用,从tomcat 8.5开始时,有一个小警告:您需要将JSSE明确将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>
另外,也可以在AprLifecycleListener
上设置useOpenSSL="false"
。