2013-03-22 57 views
1

我已经用Java编写了一个小代码来访问一个URL。 该代码工作正常的HTTP连接,但HTTPS失败(错误粘贴在下面)到https URL的Java连接

任何帮助解决此问题将不胜感激。

CODE:

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.net.URLConnection; 


public class ConnectToWCProd { 

    public static void main(String[] args) throws Exception { 

     String userPassword = "user1:user1"; 
     String encoding = new sun.misc.BASE64Encoder().encode (userPassword.getBytes()); 

     //URL oracle = new URL("http://<URL>/"); 
     URL oracle = new URL("https://<URL>"); 
     URLConnection yc = oracle.openConnection(); 

     yc.setRequestProperty("Authorization", "Basic " + encoding); 

     BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); 
     String inputLine; 
     while ((inputLine = in.readLine()) != null) 
      System.out.println(inputLine); 
     in.close(); 
    } 

} 

错误:螺纹

异常 “主要” javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径建设失败:sun.security。 provider.certpath.SunCertPathBuilderException:无法在com.sun.net.ssl.internal.ssl.Alerts.getSSLException(未知来源) (com.sun.net.ssl.internal.ssl)处找到要求的目标 的有效证书路径。 SSLSocketImpl.fatal(未知来源) at com.sun.net.ssl.internal.ssl。 Handshaker.fatalSE(Unknown Source) at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source) at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source) at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source) at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source) at com.sun.net.ssl .internal.ssl.Handshaker.process_record(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake (Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandsh (未知源) at sun.net.www.protocol.https.HttpsClient.afterConnect .protocol.http.HttpURLConnection.getInputStream(Unknown Source) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source) at ConnectToWCProd.main(ConnectToWCProd.java:21) 引起:sun.security .validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到有效的证书路径,请求sun.security.validator.PKIXValidator.doBuild(未知源) 在sun.security处要求的目标 。 validator.PKIXValidator.engineValidate(未知来源) at sun.security.validator.Validator.validate(Unknown Source) at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(Unknown Source) at com.sun.net.ssl.internal.ssl。 X509TrustManagerImpl.checkServerTrusted(Unknown Source) at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) ... 13更多 引起影响:sun.security.provider.certpath.SunCertPathBuilderException:无法请在sun.security.provider.certpath.SunCertPathBuilder.engineBuild(未知来源)找到要求目标 的有效证书路径 at java.security.cert.CertPathBuilder.build(Unknown Source) ...19多

+0

的可能重复[无法找到有效的证书路径来请求目标 - 即使在导入证书后错误](http://stackoverflow.com/questions/9210514/unable-to-find-valid-certification-path-to-requested-target-error-eve正后-c)的 – ben75 2013-03-22 11:34:03

回答

1

阅读本link

你必须包括在jre/lib/security/cacerts证书(默认路径)