【发布时间】:2017-03-10 15:50:03
【问题描述】:
我特别想建立到这个网站的 HTTPS 连接,https://elearning.utp.edu.my/
我从 SSL 工具检查了网站使用 Entrust_L1K 证书,然后我从 Chrome 浏览器导出证书文件。
我尝试使用Android开发者网站提供的代码。
try {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream caInput = mContext.getResources().openRawResource(R.raw.entrust_l1k);
Certificate ca;
try {
ca = cf.generateCertificate(caInput);
System.out.println("ca = " + ((X509Certificate) ca).getSubjectDN());
} finally {
caInput.close();
}
// Create a KeyStore containing our trusted CAs
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);
// Create a TrustManager that trusts the CAs in our KeyStore
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
// Create an SSLContext that uses our TrustManager
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), null);
HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
urlConnection.setConnectTimeout(7000);
urlConnection.setRequestMethod("GET");
urlConnection.setDoInput(true);
urlConnection.connect();
int responseCode = urlConnection.getResponseCode();
switch (responseCode) {
case HttpsURLConnection.HTTP_OK:
InputStream in = urlConnection.getInputStream();
Scanner scanner = new Scanner(in);
scanner.useDelimiter("\\A");
boolean hasInput = scanner.hasNext();
if (hasInput) {
return scanner.next();
} else {
return null;
}
default:
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
但是我仍然收到以下错误代码
W/System.err: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
我尝试了 Stack Overflow 的多种解决方案。
我希望学习在不信任所有证书的情况下连接到 HTTPS 的最佳实践。 如果有人可以指导我,将不胜感激。
编辑 1:显然,当我使用 Firefox 单击“登录”时,它会提示显示“elearning.utp.edu.my 使用无效的安全证书”的警告。 但是,我可以使用 Chrome 与网站建立“安全”连接。 网址如下:https://elearning.utp.edu.my/login/index.php
【问题讨论】: