X509Certificate によって生成された X509Certificate を表す文字列を渡しています。
String strMessage =
Base64.encodeToString(chain[0].getEncoded(), android.util.Base64.NO_WRAP);
これは、ユーザーが証明書を表示し、場合によってはそれを受け入れることができるようにするためです。彼らがそれを受け入れることにした場合は、カスタム SSL ファクトリに追加する Keystore オブジェクトを作成する必要があります (ここのように:)
private SSLSocketFactory newSslSocketFactory(boolean trustCert, String cert) {
try {
KeyStore trusted = KeyStore.getInstance("BKS");
if(trustCert) {
String cert_begin = "-----BEGIN CERTIFICATE-----\n";
String end_cert = "-----END CERTIFICATE-----";
String strCert = cert_begin + cert + end_cert;
byte[] bytes = Base64.decode(cert.getBytes(), Base64.DEFAULT);
InputStream bis = new ByteArrayInputStream(bytes);
try {
trusted.load(bis, "password".toCharArray());
}
catch(Exception e) {
int j;
j = 10;
}
finally {
bis.close();
}
}
AdditionalKeyStoresSSLSocketFactory af = new AdditionalKeyStoresSSLSocketFactory(trusted, null, mTrustCert, mCert);
af.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER);
return af;
}
catch (Exception e) {
throw new AssertionError(e);
}
}
しかし、これは機能していないようです。リストを繰り返し処理しても見つからない /ローレン