アプリをベータ グループにアップロードした 3 月 1 日以降、Google から次のようなメールが届きました。
この情報は、setDefaultHostnameVerifier API を使用してリモート ホストへの HTTPS 接続を確立するときにすべてのホスト名を受け入れる HostnameVerifier インターフェースの安全でない実装を使用するアプリの開発者を対象としています。
ネットで検索した後、いくつかのリンクを見つけましたが、ほとんどはサードパーティのライブラリを使用することを提案していますが、アプリ全体で、restcalls の単純な HTTPS 要求を実行しました。残りの呼び出しに使用したコードは次のとおりです。
TrustManager[] trustAllCerts = new TrustManager[] {
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {}
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());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
// Create all-trusting host name verifier
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
HostnameVerifier hv =
HttpsURLConnection.getDefaultHostnameVerifier();
return hv.verify("something.com", session);
}
};
URL url = new URL("Something");
urlConnection = (HttpsURLConnection) url.openConnection();
urlConnection.setHostnameVerifier(hostnameVerifier);
Google からの警告から回復するには、どのような種類のコードを記述すればよいか、誰にもわかりません。しかし、Volley のようなサードパーティのライブラリを利用したくありません。