我的 Android 应用程序正在连接到 https 自签名服务器,它在使用客户端证书(.cer 文件)时工作正常。
Android 应用程序可以在不使用客户端证书的情况下连接到 https 自签名服务器吗? --> 如果答案是 YES,那么可以使用哪个库。 我知道这不是实现的最佳方法,因为它是 https 服务器,但这是我需要的。
最佳答案
您可以为此使用 Volley Android 库。
您需要在应用程序类的 onCreate() 中添加以下代码。通过覆盖 X509Certificate,基本上您将接受所有证书。
try {
TrustManager[] victimizedManager = new TrustManager[]{
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
X509Certificate[] myTrustedAnchors = new X509Certificate[0];
return myTrustedAnchors;
}
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, victimizedManager, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
});
} catch (Exception e) {
e.printStackTrace();
}
关于Android 忽略自签名证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34136694/