以下は、進むべきヒントです。サーバの証明書を検証するコネクション用のカスタムトラストマネージャを追加し、受け入れ可能なリストからホスト名を評価するカスタムホスト名検証ロジックを追加するか、ハードコードのみをtrueに設定します。 docsから
SSLContext ctx = SSLContext.getInstance("TLS");
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(getTrustedCert());//todo
ctx.init(null, tmf.getTrustManagers(), null);
HttpsURLConnection.setDefaultSSLSocketFactory(ctx.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return isInAcceptableHostNameList(arg0);//todo
}
});
-
このクラスは、のHostnameVerifierとのSSLSocketFactoryを使用しています。両方のクラスに対して定義されているデフォルト実装は です。ただし、 の実装は、クラスごと(静的)または インスタンスごとに置き換えることができます。新しいHttpsURLConnectionsインスタンスはすべて、インスタンス作成時に "デフォルト"の静的値が割り当てられた になりますが、 は、接続する前に適切なインスタンス単位の設定方法( )を呼び出してオーバーライドできます。
これはhttpsの方法ですが、httpの単純な要求と応答モデルではなく、双方向通信が必要であるため、普通の古いソケットを使用します – Allahjane