首页 > 解决方案 > 如何绕过 SSL 握手 javax.net.ssl.SSLHandshakeException

问题描述

我收到异常 javax.net.ssl.SSLHandshakeException。我已经阅读了你可以在编码级别绕过这个。这是我一直在尝试做的。我已将 NoopH​​ostnameVerifier.INSTANCE 和 SSLContext 添加到客户端构建器,但仍然收到 SSL 异常。

var clientBuilder  = HttpClientBuilder.create()
            .setDefaultRequestConfig(RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).build())
            .setRedirectStrategy(new LaxRedirectStrategy())
            .setDefaultCookieStore(cookieStore)
            .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
            .setSSLContext(createSSLContext());
private SSLContext createSSLContext() {
              TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
              @Override
                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                      return null;
                   }

                    @Override
                    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                    }

                    @Override
                    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

                    }
           } };

       SSLContext sc = null;
        try {
           sc = SSLContext.getInstance ("SSL");
           sc.init (null, trustAllCerts, new java.security.SecureRandom ());
        } catch (KeyManagementException | NoSuchAlgorithmException e) {
           e.printStackTrace ();
        }
        return sc;
    }

标签: javahttpssl-certificatehttpclient

解决方案


推荐阅读