我的安卓应用正在连接到https自签名服务器,使用客户端证书(.cer文件)可以正常工作。
如果不使用客户端证书,安卓应用可以连接到https自签名服务器吗?--> 如果是肯定的,那么可以使用哪个库实现。我知道这不是最好的方法来实现,但这正是我需要的。
我的安卓应用正在连接到https自签名服务器,使用客户端证书(.cer文件)可以正常工作。
如果不使用客户端证书,安卓应用可以连接到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();
}