URLを指定してウェブサイトのタイトルを取得する必要があるアプリを開発中です。次のコードはそれを行いますAndroidのSSL接続中の人の男
特定のWebページ(たとえばCreditCheckTotal.com)ではIOExceptionがスローされています。ここに例外があります
javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
これはSSL証明書が信頼されていないことが原因であると私は理解しています。私はこの問題に対処する方法を模索していましたが、接続を確立する前に次のコードを実行するように提案された記事がありました。
private static void trustEveryone() {
try {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier(){
public boolean verify(String hostname, SSLSession session) {
return true;
}});
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new X509TrustManager[]{new X509TrustManager(){
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {}
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}}}, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(
context.getSocketFactory());
} catch (Exception e) { // should never happen
e.printStackTrace();
}
}
は今、ポストから、それはMIMAの可能性を作成するため、このソリューションは、セキュリティ上の脅威をもたらす可能性があることが明らかになりました。今、私の質問は、私の上記のコードの唯一のポイントは、Webページのタイトルをつかむことなので、私はすべての証明書を信頼することが問題ですか?
正しいサーバーに正しいWebページのタイトルがあるかどうかわからないため、問題です。このコードは使用しないでください。 – EJP
EJP何を意味するのかよくわからないのですか?タイトルを取得するだけでこのコードが有害である状況を提供できますか? – Saik