我的Android应用程序正在连接到https自签名服务器&它使用客户端证书(.cer文件)工作正常。
Android应用程序是否可以连接到https自签名服务器而无需使用客户端证书。 - >如果答案为是,则可以使用哪个库。 我知道这不是最好的方法,因为它是https服务器,但这是我需要的。
答案 0 :(得分:4)
你可以使用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();
}