【发布时间】:2015-05-27 14:11:54
【问题描述】:
我正在尝试在 java 的 Eclipse 中使用 Tomcat 7 配置 SSL。我已经配置了 server.xml:
<Connector SSLEnabled="true" clientAuth="false" keystoreFile="/.keystore" keystorePass="mypass" maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11Protocol" scheme="https" secure="true" sslProtocol="TLS"/>
我正在做一个应用程序客户端/服务器,服务器运行良好,但是当我执行客户端时出现以下错误:
线程“主”com.sun.jersey.api.client.ClientHandlerException 中的异常:jav ax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:PKI X 路径构建失败: sun.security.provider.certpath.SunCertPathBuilder 异常:无法 找到请求目标的有效认证路径 在 com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle (URLConnectionClientHandler.java:155) 在 com.sun.jersey.api.client.Client.handle(Client.java:652) 在 com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) 在 com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) 在 com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:570) 在 clientWAN.client.main(client.java:109) 引起:javax.net.ssl.SSLHandshakeException: sun.security.validator.Validator 例外:PKIX 路径构建失败: sun.security.provider.certpath.SunCertPath BuilderException:无法 找到请求目标的有效认证路径 在 sun.security.ssl.Alerts.getSSLException(未知来源) 在 sun.security.ssl.SSLSocketImpl.fatal(未知来源) 在 sun.security.ssl.Handshaker.fatalSE(未知来源) 在 sun.security.ssl.Handshaker.fatalSE(未知来源) 在 sun.security.ssl.ClientHandshaker.serverCertificate(未知来源) 在 sun.security.ssl.ClientHandshaker.processMessage(未知来源) 在 sun.security.ssl.Handshaker.processLoop(未知来源) 在 sun.security.ssl.Handshaker.process_record(未知来源) 在 sun.security.ssl.SSLSocketImpl.readRecord(未知来源) 在 sun.security.ssl.SSLSocketImpl.performInitialHandshake(未知来源 ) 在 sun.security.ssl.SSLSocketImpl.startHandshake(未知来源) 在 sun.security.ssl.SSLSocketImpl.startHandshake(未知来源) 在 sun.net.www.protocol.https.HttpsClient.afterConnect(未知来源) 在 sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect (来源不明) 在 sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(未知 资源) 在 sun.net.www.protocol.http.HttpURLConnection.getOutputStream(未知 S 源) 在 sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unk 现在的来源) 在 com.sun.jersey.client.urlconnection.URLConnectionClientHandler$1$1.ge tOutputStream(URLConnectionClientHandler.java:238) 在 com.sun.jersey.api.client.CommittingOutputStream.commitStream(Committ ingOutputStream.java:117) 在 com.sun.jersey.api.client.CommittingOutputStream.write(CommittingOutp utStream.java:89) 在 sun.nio.cs.StreamEncoder.writeBytes(未知来源) 在 sun.nio.cs.StreamEncoder.implFlushBuffer(未知来源) 在 sun.nio.cs.StreamEncoder.implFlush(未知来源) 在 sun.nio.cs.StreamEncoder.flush(未知来源) 在 java.io.OutputStreamWriter.flush(未知来源) 在 java.io.BufferedWriter.flush(未知来源) 在 com.sun.jersey.core.util.ReaderWriter.writeToAsString(ReaderWriter.ja 弗吉尼亚州:191) 在 com.sun.jersey.core.provider.AbstractMessageReaderWriterProvider.writ eToAsString(AbstractMessageReaderWriterProvider.java:128) 在 com.sun.jersey.core.impl.provider.entity.BaseFormProvider.writeTo(Bas eFormProvider.java:109) 在 com.sun.jersey.core.impl.provider.entity.FormProvider.writeTo(FormPro vider.java:88) 在 com.sun.jersey.core.impl.provider.entity.FormProvider.writeTo(FormPro vider.java:58) 在 com.sun.jersey.api.client.RequestWriter.writeRequestEntity(RequestWri ter.java:300) 在 com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invok e(URLConnectionClientHandler.java:217) 在 com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle (URLConnectionClientHandler.java:153) ... 5 更多原因:sun.security.validator.ValidatorException:PKIX 路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到请求目标的有效认证路径 在 sun.security.validator.PKIXValidator.doBuild(未知来源) 在 sun.security.validator.PKIXValidator.engineValidate(未知来源) 在 sun.security.validator.Validator.validate(未知来源) 在 sun.security.ssl.X509TrustManagerImpl.validate(未知来源) 在 sun.security.ssl.X509TrustManagerImpl.checkTrusted(未知来源) 在 sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(未知酸 ce) ... 35 更多原因:sun.security.provider.certpath.SunCertPathBuilderException:无法 找到请求目标的有效认证路径 在 sun.security.provider.certpath.SunCertPathBuilder.build(未知来源 e) 在 sun.security.provider.certpath.SunCertPathBuilder.engineBuild(未知 资源) 在 java.security.cert.CertPathBuilder.build(未知来源) ... 41 更多
我不知道这个问题的原因。我在这个网站上看到了几个类似的问题,但我一直无法解决。我需要帮忙。 非常感谢。
【问题讨论】:
标签: web-services security tomcat ssl https