2012-07-25 153 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