[英]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.