2017-04-06 123 views
0

我使用自由16.0.0.4IBM自由SSL握手失敗

我想打電話給XXXX SOAP服務,但我得到了以下錯誤

[錯誤] CWPKI0022E:SSL握手失敗:SubjectDN CN = xxxx的簽名者已從目標主機發送。簽名者可能需要添加到位於SSL配置別名defaultSSLConfig中的本地信任存儲庫 serverHome/resources/security/key.jks中。來自SSL握手異常的擴展錯誤消息是:PKIX路徑建設失敗:sun.security.provider.certpath.SunCertPathBuilderException:無法找到請求的目標的有效證書路徑

我用下一個命令生成證書

openssl s_client -connect xxxxURL:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > xxx.cert 

然後將其注入自由JKS默認的文件與下一個命令

keytool -import -trustcacerts -alias xxxSigner -file xxx.cert -keystore *pathToHomeServer/resources/security/key.jks* -storepass Liberty -storetype jks 

而且這個我■相關於

<featureManager> 
    <feature>webProfile-7.0</feature> 
    <feature>jaxb-2.2</feature> 
    <feature>concurrent-1.0</feature> 
    <feature>javaMail-1.5</feature> 
    <feature>localConnector-1.0</feature> 
    <feature>jaxws-2.2</feature> 
    <feature>apiDiscovery-1.0</feature> 
    <feature>ssl-1.0</feature> 
</featureManager> 

<keyStore id="defaultKeyStore" location="${server.config.dir}/resources/security/key.jks" password="{xor}EzY9Oi0rJg==" type="jks" /> 
<keyStore id="defaultTrustStore" location="${server.config.dir}/resources/security/key.jks" password="{xor}EzY9Oi0rJg==" type="jks" /> 

<sslDefault sslRef="defaultSSLConfig" /> 

<ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" trustStoreRef="defaultTrustStore" sslProtocol="TLSv1.2"/> 

<httpEndpoint id="defaultHttpEndpoint" httpPort="9080" httpsPort="9443"> 
    <sslOptions sslRef="defaultSSLConfig"></sslOptions> 
</httpEndpoint> 

我server.xml的標記,這樣的問題是什麼我身邊這

+1

不確定爲什麼你的方法不起作用,但另一種方法是使用瀏覽器來檢索證書,然後keytool添加它,如此處所述(請參閱本文底部的8/5/2015評論):https://developer.ibm.com/wasdev/docs/single-sign-google-liberty/ –

+0

@BruceT。謝謝,實際上它工作時從WSDL路徑下載證書並注入它使用「keytool -import ...」,但我不知道什麼是錯誤的時候通過使用「openssl s_client ...」命令執行它,無論如何,你可以添加你的答案,我會接受它,再次:) –

回答

3

不確定你的方法不起作用,但另一種方法是使用瀏覽器檢索證書,然後使用keytool添加它,如此處所述(請參閱2015年8月5日的註釋文章的底部):developer.ibm.com/wasdev/docs/single-sign-google-liberty

0

,如果你明確添加簽名者本身,在證書當你堆的底部顯示它的工作原理追加-showcerts到你的openssl命令?

+0

不幸的是它不工作,我用-showcerts作爲你的建議,所以我的命令是「openssl s_client -showcerts -connect xxx:443 | sed -ne'/ -BEGIN CERTIFICATE - /,/ - END CERTIFICATE-/p'> xxx.cert「,然後它生成證書文件,然後將其注入到默認服務器jsk文件中,但是像以前一樣從Liberty中拋出相同的異常:( –

+1

關鍵是要停止使用命令並單獨複製/粘貼根CA和根CA? 也,https://github.com/covener/plugin-tools/blob/master/retrievesigner.jar – covener