Android 忽略自签名证书
Android ignore self signed certificate
我的 Android 应用程序正在连接到 https 自签名服务器并且使用客户端证书(.cer 文件)工作正常。
可以 Android 应用程序可以连接到 https 自签名服务器而不使用客户端证书。 --> 如果答案是 YES,那么可以使用哪个库。
我知道这不是实现的最佳方法,因为它是 https 服务器,但这是我需要的。
您可以为此使用 Volley Android 库。
您需要在应用程序的 onCreate() 中添加以下代码 class。通过覆盖 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 应用程序正在连接到 https 自签名服务器并且使用客户端证书(.cer 文件)工作正常。
可以 Android 应用程序可以连接到 https 自签名服务器而不使用客户端证书。 --> 如果答案是 YES,那么可以使用哪个库。 我知道这不是实现的最佳方法,因为它是 https 服务器,但这是我需要的。
您可以为此使用 Volley Android 库。
您需要在应用程序的 onCreate() 中添加以下代码 class。通过覆盖 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();
}