次のコードを使用して BKS をロードしようとしてHttpsUrlConnection
いますが、それは機能しましたが、他のサーバーでのデフォルトの CA 証明書の検証が壊れました。
try {
TrustManagerFactory tmf = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
KeyStore ks = KeyStore.getInstance("BKS");
InputStream in = ctw.getResources()
.openRawResource(R.raw.bks);
ks.load(in, "password".toCharArray());
in.close();
tmf.init(ks);
TrustManager[] tm = tmf.getTrustManagers();
KeyManagerFactory kmf = KeyManagerFactory
.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, "password".toCharArray());
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(kmf.getKeyManagers(), tm, null);
HttpsURLConnection
.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname,
SSLSession session) {
return true;
}
});
HttpsURLConnection
.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
私が得るエラーは次のとおりです。
com.android.volley.NoConnectionError:
javax.net.ssl.SSLHandshakeException:
java.security.cert.CertPathValidatorException:
Trust anchor for certification path not found.
Volley
ネットワーク要求にライブラリを使用しています。私のコードは間違っていますか、それともVolley
ライブラリを変更する必要がありますか?
ありがとう。