これはSSLContextによって行われます。 1つを初期化してから、ソケットファクトリを使用してHttpsConnectionインスタンスを作成します。あなたのOpenConnectionメソッドは、()あなたがここに初期化のSSLSocketFactoryを使用するHTTPSサイトのために呼び出すことの後
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(myKeyManagerFactory.getKeyManagers(), myTrustManagerArray, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
:
はここでラフ、私は自分のアプリケーションでこれを管理する方法の例です。 TrustManagerのは、あなたのSSLコンテキストウィッヒで使用するためにここで
コードすべての証明書を信頼します:ブルーノから
TrustManager[] myTrustManagerArray = new TrustManager[]{new TrustEveryoneManager()};
class TrustEveryoneManager implements X509TrustManager {
public void checkClientTrusted(X509Certificate[] arg0, String arg1){}
public void checkServerTrusted(X509Certificate[] arg0, String arg1){}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
UPD:それはしかし、便利、すべての証明書を信頼、用心、MITM攻撃への接続が脆弱になり
あなたのコードは、setDSaultSSLSocketFactory()がsetSSLSocketFacory()に置き換えられた場合に機能します。 setDefaultSSLSocketFactory()は次の例外をスローします。 "javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException: PKIXパス構築が失敗しました:sun.security.provider.certpath.SunCertPathBuilderExce ption:要求されたターゲットへの有効な証明書パスを見つけることができません" – Ashwin
DefaultSSLSocketFactory私のために、しかし将来的に知っておくと良いこと8) – yggdraa
:あなたはその例外の理由を知っていますか?とにかくありがとう。 – Ashwin