2016-11-08 56 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