【Android】オレオレ証明書を無視する
サーバ側からJSONファイルを受け取って、
解析するってアプリはよくあると思います。
そこで、サーバ側が自己証明書を使用している場合
アプリ側も対応が必要になります。
記載方法は以下になります。
# 今回の条件として、TLS通信であること。
# HttpsURLConnectionを使用して通信を行っていること。
--------------------------------
try {
// オレオレ証明書を使う.
final TrustManager trustAllCerts = new TrustManager{
new X509TrustManager() {
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate
chain, String authType)
throws CertificateException {
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate
chain, String authType)
throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[]
getAcceptedIssuers() {
return null;
}
}
};
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustAllCerts,
new java.security.SecureRandom());
SSLSocketFactory sslSocketFactory =
sslContext.getSocketFactory();
connection.setSSLSocketFactory(sslSocketFactory);
connection.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname,
SSLSession session) {
return true;
}
});
} catch (Exception e) {
e.printStackTrace();
}
--------------------------------
connect呼ぶ前に対応してあげるといいと思います。
ちなみに上記記載順番とか入れ替わるだけで
通らなくなるので気を付けてください。
多分、必要な情報が無いとか言って怒られるんだろうな。。