2014-10-30 86 views
1

我有一个SSL安全的休息ws。默认java cacerts不工作

在我的java客户端中,我已经将certificat添加到cacerts存储中,但只有在javax.net.ssl.trustStore参数中明确指定了cacerts文件路径并且javax.net.ssl中的密码.trustStorePassword。

Java主设置为: java.home:C:\ IDE \ jdk1.7.0_45 \ jre的

和两个参数设置为:

Properties pp = System.getProperties(); 

    Set<Object> s = pp.keySet(); 

    for (Object object : s) { 
     System.out.println(object + " : " + pp.get(object)); 
    } 

    System.setProperty("javax.net.ssl.trustStore", "C:\\ide\\jdk1.7.0_45\\jre\\bin\\cacerts"); 
    System.setProperty("javax.net.ssl.trustStorePassword", "secret"); 

结果:

java.runtime.name : Java(TM) SE Runtime Environment 
    sun.boot.library.path : C:\ide\jdk1.7.0_45\jre\bin 
    ..... 
    java.home : C:\ide\jdk1.7.0_45\jre 
    .... other java parameters value 
    WS called with success 

执行与异常:

Properties pp = System.getProperties(); 

    Set<Object> s = pp.keySet(); 

    for (Object object : s) { 
     System.out.println(object + " : " + pp.get(object)); 
    } 

    //System.setProperty("javax.net.ssl.trustStore", "C:\\ide\\jdk1.7.0_45\\jre\\bin\\cacerts"); 
    //System.setProperty("javax.net.ssl.trustStorePassword", "secret"); 

结果:

java.runtime.name : Java(TM) SE Runtime Environment 
sun.boot.library.path : C:\ide\jdk1.7.0_45\jre\bin 
..... 
java.home : C:\ide\jdk1.7.0_45\jre 
.... other java parameters value 
Exception in thread "main" 
Caused by: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated 
at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:397) 
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128) 
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:397) 
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:148) 
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149) 
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121) 
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:573) 
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:425) 
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820) 
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754) 
at org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor.execute(ApacheHttpClient4Executor.java:182) 
at org.jboss.resteasy.core.interception.ClientExecutionContextImpl.proceed(ClientExecutionContextImpl.java:39) 
at org.jboss.resteasy.plugins.interceptors.encoding.AcceptEncodingGZIPInterceptor.execute(AcceptEncodingGZIPInterceptor.java:40) 
at org.jboss.resteasy.core.interception.ClientExecutionContextImpl.proceed(ClientExecutionContextImpl.java:45) 
at org.jboss.resteasy.client.ClientRequest.execute(ClientRequest.java:443) 
at org.jboss.resteasy.client.ClientRequest.httpMethod(ClientRequest.java:677) 
at org.jboss.resteasy.client.ClientRequest.post(ClientRequest.java:566) 
... 2 more 
+1

也可以解释实际问题是什么?异常跟踪等可能有帮助。 – Abhinav 2014-10-30 18:16:26

+0

您必须使用不同的Java安装执行。 JAVA_HOME仅由IDE和JDKS使用,而不是由'java'命令使用。 – EJP 2014-10-30 20:49:16

+0

@Abhinav我已经添加了整个maon方法,并将结果记录在控制台中。 – dwa9ssa 2014-10-31 09:28:23

回答

0

我觉得现在的问题是,我使用了错误的cacerts文件路径。

Java中的默认cacerts文件是:

\ JRE \ lib \ security中\ cacerts中