我们的系统使用的提供商为我们提供了名为 MM_Base64.cer 的证书。我们的密钥库是 mitkeystore 。我们正在使用我们的密钥库:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="path\mitkeystore" keystorePass="ourpass" />
我们将他们的密钥导入我们的JDK和JVM,如下所示:
keytool -import -file "path\MM_Base64.cer" -keystore "C:\Program Files\Java\jre7\lib\security\cacerts"
仍然存在握手问题。
我在看this question。看起来很复杂。我们的问题是否像他们一样复杂?是否有一种简单的方法可以让我们的系统与提供商的系统协同工作?
答案 0 :(得分:3)
我可能错了,但我认为您必须将提供商的证书导入信任商店。有关keystore
vs trustore
的说明,请参阅here。然后,您必须将tomcat指向server.xml
内http连接器配置块中的信任存储文件。
这个想法是,当SSL握手发生时,您提供商提供其证书并知道它是否可信,tomcat使用信任库来查找该证书或证书颁发机构的信息。
答案 1 :(得分:2)
我同意Borys Zibrov关于truststore的观点。 https://www.mulesoft.com/tcat/tomcat-ssl是ssl设置的一个很好的链接。
除了关于truststore的观点之外,我注意到您将证书导入到jdk的密钥库中,但使用自定义密钥库(mitkeystore)作为keystoreFile。你有没有把它加载到mitkeystore的原因? (这实际上应该是一个评论,但我没有足够的声誉,所以请耐心等待。)