簡體   English   中英

Web服務代理中的SSL證書問題

[英]SSL certificate problem in a web service proxy

我正在構建一個我連接到服務的JAVA Web服務客戶端。

此服務具有ssl證書驗證。

如何使用SSL證書驗證調用此服務。

我在使用Eclipse構建的客戶端中使用JAX-RPC實現。

舉一個例子。

我可以建立網絡服務連接...

我使用以下命令添加了密鑰庫:

keytool -import -trustcacerts -file <file path/filename.cer> -alias <aliasName> -keystore <JAVA_HOME/jre/lib/security/cacerts> 

將密碼指定為“ changeit”,並將證書添加到密鑰庫中。

現在在代碼中我添加了兩行:

System.setProperty("javax.net.ssl.trustStore", "<JAVA_HOME>/jre/lib/security/cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

還添加了

_call.setUsername("username");
_call.setPassword("password"); 

其中_call是Call Class的調用對象。

它奏效了!!!!!!

您需要做的就是通過使用以下命令行將服務器根證書注入到您的JDK / JRE環境中:-

keytool -importcerts -trustcacerts -file <path_to_root_cer_file> -alias <the_server_alias> -keystore <your_keystore>

默認[your_keystore]為

 1. <JDK_HOME>/jre/lib/security/cacerts
 2. <JRE_HOME>/lib/security/cacerts

默認密碼為changeit

調用網絡服務時,只需提及

"https://<host>:<SSL_port>/Path/To/Services"

希望這可以幫助您達到要求。

問候,

查理·Ch。

您的意思是您的Web服務受“客戶端證書”保護? 如果是,請從服務提供商處獲取.p12(PFX)或密鑰庫格式的證書,並在呼叫前使用以下系統屬性進行設置:

javax.net.ssl.keyStore-服務器上密鑰庫的路徑

javax.net.ssl.keyStorePassword-該密鑰庫的密碼

javax.net.ssl.keyStoreType-如果提供給您的客戶端證書是.p12,則將其設置為“ pkcs12”

如果您的應用程序僅是一個Web服務提供商的客戶端,請將這些屬性設置為VM參數,否則,您可能需要為每個受保護的端點創建特定的SSLConnectionFactory。 有關創建自定義SSL套接字工廠的詳細信息,請參閱我在此職位上的回復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM