First, don't ignore certificate errors. Deal with them instead. Ignoring certificate errors opens the connection to potential MITM attacks. It's like turning off the buzzer in your smoke alarm because sometimes it makes a noise...
Sure, it's tempting to say it's only for test code, it won't end up in production, but we all know what happens when the deadline approaches: the code doesn't show any error when it's being tested -> we can ship it as it is. You should set up a test CA instead if you need. It's not very hard to make, and the overall process is certainly no harder than introducing custom code for development and removing it in production.
You're visibly using Apache Http Client:
HttpClient client = new HttpClient();
int statusCode = client.executeMethod(method);
Yet, you're initialising the javax.net.ssl.HttpsURLConnection
with the SSLContext
you've created:
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
This is completely independent of the Apache Http Client settings.
Instead, you should set up the SSLContext
for the Apache Http Client library, as described in this answer. If you're using Apache Http Client 3.x, you need to set up your own SecureProtocolSocketFactory
to use that SSLContext
(see examples here). It's worth upgrading to Apache Http Client 4.x though, which has direct support for SSLContext
.
You can also use Pascal's answer to import the certificate correctly. Again, if you follow the accepted answer (by Kevin) to that question, you will indeed ignore the error but this will make the connection vulnerable to MITM attacks.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…