1

我有一个在 Tomcat 7 上运行的 Java 1.7 中使用 Spring 的 REST Web 服务。我在我的开发机器上拥有自签名证书。当我尝试使用 rest 客户端调用 API 时,它给出了以下错误:

    peer not authenticated
    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:572)
        at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
        at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
        at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
        at org.wiztools.restclient.HTTPClientRequestExecuter.execute(HTTPClientRequestExecuter.java:387)
        at org.wiztools.restclient.ui.RESTViewImpl$2.run(RESTViewImpl.java:320)

谁能告诉我如何在不更改任何 java 代码的情况下摆脱这个错误?

注意:我已经在我的环境中运行了以下命令:

keytool -genkey -v -keyalg RSA -alias tomcat -keypass 12345 -storepass 12345
4

2 回答 2

0

看起来服务器正在请求客户端身份验证,而您没有从客户端向服务器发送一个证书。尝试使用 -Djavax.net.debug=all 参数运行 VM。

而且我认为如果不对您的代码进行更改,就不可能做到这一点。

于 2013-03-29T02:02:16.110 回答
0

如果我使用 jre 1.6,我会遇到这个问题。当我切换到 jre 1.7 时,这个问题就消失了。

于 2014-03-13T21:38:31.890 回答