CertPathValidatorException: Trust anchor for certification path not found解决方法
错误log:javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification pathnot found.at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startH
错误log:
-
javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path -
not found. -
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:413) -
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:257) -
at libcore.net.http.HttpConnection.setupSecureSocket(HttpConnection.java:210) -
at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:477) -
at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:432) -
at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282) -
at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232) -
at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80) -
at libcore.net.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:164) -
at com.etnet.global.ConnectionTool.post(ConnectionTool.java:462) -
at com.etnet.android.Welcome$3.run(Welcome.java:177) -
Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for -
certification path not found. -
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:184) -
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:163) -
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:593) -
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method) -
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:410) -
... 10 more
解决方法:忽略证书验证:
-
public static StringBuffer post(String urlString, String param) { -
StringBuffer sb = new StringBuffer(); -
URL url = null; -
HttpURLConnection connection = null; -
DataOutputStream out = null; -
BufferedReader in = null; -
try { -
url = new URL(urlString); -
//关键代码 -
//ignore https certificate validation |忽略 https 证书验证 -
if (url.getProtocol().toUpperCase().equals("HTTPS")) { -
trustAllHosts(); -
HttpsURLConnection https = (HttpsURLConnection) url -
.openConnection(); -
https.setHostnameVerifier(HttpIgnoreSSL.DO_NOT_VERIFY); -
connection = https; -
} else { -
connection = (HttpURLConnection) url.openConnection(); -
} -
connection.setReadTimeout(10000); -
connection.setDoInput(true); -
connection.setDoOutput(true); -
connection.setRequestMethod("POST"); -
connection.setUseCaches(false); -
connection.setInstanceFollowRedirects(true); -
connection.setRequestProperty("Content-Type", -
"application/x-www-form-urlencoded"); -
connection.connect(); -
out = new DataOutputStream( -
connection.getOutputStream()); -
out.writeBytes(param); -
out.flush(); -
in = new BufferedReader(new InputStreamReader( -
connection.getInputStream()), 512); -
String line; -
while ((line = in.readLine()) != null) { -
sb.append(line.trim()); -
} -
} catch (IOException e) { -
e.printStackTrace(); -
} catch (Exception e) { -
e.printStackTrace(); -
}finally { -
if (out != null) { -
try { -
out.close(); -
} catch (IOException e) { -
} -
} -
if (in != null) { -
try { -
in.close(); -
} catch (IOException e) { -
} -
} -
if (connection != null) { -
connection.disconnect(); -
} -
} -
return sb; -
}
-
public static void trustAllHosts() { -
// Create a trust manager that does not validate certificate chains -
// Android use X509 cert -
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { -
public java.security.cert.X509Certificate[] getAcceptedIssuers() { -
return new java.security.cert.X509Certificate[] {}; -
} -
public void checkClientTrusted(X509Certificate[] chain, -
String authType) throws CertificateException { -
} -
public void checkServerTrusted(X509Certificate[] chain, -
String authType) throws CertificateException { -
} -
} }; -
// Install the all-trusting trust manager -
try { -
SSLContext sc = SSLContext.getInstance("TLS"); -
sc.init(null, trustAllCerts, new java.security.SecureRandom()); -
HttpsURLConnection -
.setDefaultSSLSocketFactory(sc.getSocketFactory()); -
} catch (Exception e) { -
e.printStackTrace(); -
} -
} -
-
public final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() { -
public boolean verify(String hostname, SSLSession session) { -
return true; -
} -
};
更多推荐
所有评论(0)