2012-07-25 165 views
4

我在基於JAVA的web應用程序中使用了幾個RESTful webservice。我正在使用RESTeasy客戶端來訪問我的web服務。這裏客戶端和服務之間的所有通信都是通過XML(JAX-B xml註釋的詳細類)。這裏有以下代碼RESTeasy客戶端是否支持TLS/SSL?

String serviceURL = "https://service.company.com/Service/getService" 

ServiceRequestDetail serviceRequestDetail = getServiceRequestAsDetailClass(); 
ServiceResponseDetail serviceResponseDetail = new ServiceResponseDetail(); 
ClientRequest clientRequest = new ClientRequest(serviceURL); 
clientRequest.accept(MediaType.APPLICATION_XML); 
clientRequest.body(MediaType.APPLICATION_XML, serviceRequestDetail); 
ClientResponse<ServiceRequestDetail> response = 
    clientRequest.post(ServiceRequestDetail.class); 

if (response.getStatus() != 200) { 
    throw new RuntimeException("Failed : HTTP error code : " + 
          response.getStatus()); 
} 

ServiceResponseDetail serviceResponseDetail = 
    response.getEntity(ServiceResponseDetail.class); 

,當我嘗試訪問我的服務我得到的「同伴未經過身份驗證」錯誤

javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated 
... 

有沒有辦法在RestEasy的客戶端添加SSL配置細節?解決這個問題的任何其他建議也歡迎提前

+0

如果人們發現你從未接受過答案,請注意不要回答你的問題(不,我不知道答案) – gresdiplitude 2012-07-31 04:59:03

回答

3

我找到了答案

謝謝,但我的反應遲到真的很抱歉。

要回答我的問題,RESTeasy客戶端不支持TLS/SSL。事實上,問題是我錯過了將證書安裝到JVM中。

keytool -import -alias <Replace certificate Alias name> -keystore $JAVA_HOME\jre\lib\security\cacerts -file <Replace your Certificate file location> 

這解決了「Peer Not Authenticated」的問題。希望能幫助到你。 Kudos

+0

雖然注意它必須是證書,而不僅僅是密鑰在pem中配對:openssl x509 -outform der -in certificate.pem -out certificate.der – raf 2014-02-21 18:44:57

相關問題