2016-11-08 72 views
0

我们的系统使用的提供商已向我们提供了一个名为MM_Base64.cer的证书。我们的keystore是mitkeystore。我们正在使用我们的密钥库是这样的:与Tomcat的双向SSL通信

<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

你能否把你的错误添加到你的问题? –

+0

我以为你应该将提供者的证书导入到truststore中,而不是keystore中,并在server.xml中指出要使用该信任库。请参阅此处以了解详细信息2的不同之处:http://www.java67.com/2012/12/difference-between-truststore-vs.html#more – borowis

+0

已添加为答案 – borowis

回答

3

我可能是错的那一个,但我认为你必须导入供应商的证书到信托商店。有关keystoretrustore的说明,请参阅here。然后,您必须将tomcat指向server.xml内http连接器配置块中的信任存储库文件。

这个想法是,当SSL握手发生时,提供者会提供证书并知道它是否可以信任.Tomcat使用信任库来查找有关该证书或证书颁发机构的信息。

+0

我的团队正在测试您的答案。非常感谢。 –

2

我同意Borys Zibrov关于truststore。 https://www.mulesoft.com/tcat/tomcat-ssl是一个很好的ssl安装链接。

除了关于信任库的一点,我注意到你正在将证书导入到jdk的密钥库中,但是使用自定义密钥库(mitkeystore)作为keystoreFile。有没有你没有把它加载到mitkeystore的原因? (这实际上应该是一个评论,但我没有足够的声誉,所以忍受着我。)

+1

是的,这是一个很好的观察。看起来他们想尽一切办法让它工作。应该是'mitkeystore'确实 – borowis