Copy and paste the code in a new class. To use self-signed certificates, just invoke:
AllCertificatesAndHostsTruster.apply();
before any of your network calls. This works when you use HttpsUrlConnection
.
If you use some other http stack, it's up to you to check if the same applies or how to do it if it doesn't work. I'm not providing any support for this code, use it at your own risk. It's meant to be only a short hand helper for when you are developing by using self-signed certificates.
If you are developing for Android, be careful to not include this class in your production release. Why? Read the following e-mail from Google Play Store.
Hello Google Play Developer,
Your app(s) listed at the end of this email use an unsafe implementation of the interface X509TrustManager. Specifically, the implementation ignores all SSL certificate validation errors when establishing an HTTPS connection to a remote host, thereby making your app vulnerable to man-in-the-middle attacks. An attacker could read transmitted data (such as login credentials) and even change the data transmitted on the HTTPS connection. If you have more than 20 affected apps in your account, please check the Developer Console for a full list.
To properly handle SSL certificate validation, change your code in the checkServerTrusted method of your custom X509TrustManager interface to raise either CertificateException or IllegalArgumentException whenever the certificate presented by the server does not meet your expectations. For technical questions, you can post to Stack Overflow and use the tags “android-security” and “TrustManager.”
Please address this issue as soon as possible and increment the version number of the upgraded APK. Beginning May 17, 2016, Google Play will block publishing of any new apps or updates containing the unsafe implementation of the interface X509TrustManager.