избегать java. net .SocketException: сброс соединения при доверии всем сертификатам? - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь подключиться к Интернету через прокси, дело в том, что я получаю исключение, когда устанавливаю прокси:

java.net.SocketException: Connection reset

После поиска в Google я обнаружил, что это из-за проблемы с сертификатом, Я нашел какое-то решение, которое состоит в изменении хранилища сертификатов java, но я хочу исправить это без внесения ручных / сложных изменений -> Я хочу сделать это из самого приложения JAVA, потому что хочу распространить свое приложение среди других лиц и я хочу, чтобы он выполнялся без дальнейших манипуляций.

Я пытался доверять всем сертификатам, например так:

    // Create a trust manager that does not validate certificate chains
    TrustManager[] trustAllCerts = new TrustManager[]{
            new X509TrustManager() {
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                public void checkClientTrusted(
                        java.security.cert.X509Certificate[] certs, String authType) {
                }
                public void checkServerTrusted(
                        java.security.cert.X509Certificate[] certs, String authType) {
                }
            }
    };

    // Install the all-trusting trust manager
    try {
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
    } catch (Exception e) {
    }

Та же ошибка.

Код, который я использую: как следует:

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("x.botproxy.net", 8443));

HttpURLConnection urlConnection = (HttpURLConnection) new URL("http://httpbin.org/ip").openConnection(proxy);
urlConnection.addRequestProperty("Proxy-Authorization","Basic MyProxyAuthentication==");

InputStream inputStream = urlConnection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String c="",l;
while ((l=bufferedReader.readLine())!=null) c+=l;
inputStream.close();
System.out.println(c);

Есть предложения?

Заранее спасибо,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...