我目前正在开发一个Android应用程序,我需要将SSLSocket连接到测试服务器。
我们不会为这台服务器购买证书,因为它是测试服务器,而不是生产。
虽然它在Simulator上工作正常但是在我的S3上它给了我这个错误:
06-01 00:36:17.355: I/System.out(13629): java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
此代码的最后一行抛出异常:
mSf = (SSLSocketFactory) SSLSocketFactory.getDefault();
mSocket = (SSLSocket) mSf.createSocket("myTestingServer.com", 443);
mSocket.startHandshake();
我真的不在乎解决方案是代码还是降低安全检查作为Android用户,因为它要在我的S3上进行测试,一旦投入生产,证书应该是好的。 这不是HTTP服务器,所以我不能使用org.apache.http.org.ssl
答案 0 :(得分:0)
也许你想忽略证书检查
警告:此代码不安全
TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}};
// Install the all-trusting trust manager
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
SSLSocketFactory sslsocketfactory = sc.getSocketFactory();
SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("google.com", 443);
...
来源:Using Java to connect with SSLSocket, trusting all certificates