我正在使用我的應用程序中的外部Web服務。目前只有選定的IP地址列入白名單。現在,web服務建議在調用webservice時使用jks密鑰傳遞自簽名證書,以避免將白名單ip過程。基於認證的安全Web服務認證
web服務客戶端當前正在使用軸1.3 api。探索後,我想出keytool命令只調用服務
System.setProperty("javax.net.ssl.keyStore", "C:/migration/temp/keystore.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "C:/migration/temp/cacerts.jks");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
之前產生JKS文件,並使用下面的代碼來設置JVM參數,但它沒有工作,而不是我得到了下面的異常
Thread- 1,調用closeSocket() 線程1,處理異常:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException: PKIX路徑構建失敗:sun.security.provider.certpath.SunCertPathBuilderException:無法找到有效的 要求目標的認證路徑
我的問題是有任何其他方式來實現這一點。
服務是否需要單向SSL或雙向SSL驗證? –
錯誤是由於您必須信任服務器證書。在「C:/ migration/temp/cacerts.jks」中包含服務器證書的根CA.執行證書認證之前發生錯誤 – pedrofb
其單向SSL。從SOAPUI或URLConnection調用時,我得到了正確的響應,沒有任何證書配置從相同的IP地址,未列入白名單 –