微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决javax.net.ssl.SSLHandshakeException:握手期间远程主机关闭连接

如何解决如何解决javax.net.ssl.SSLHandshakeException:握手期间远程主机关闭连接

我正在尝试使用AWS Lambda上的Apache commons FileUtils从URL下载文件。 但是我得到了这个例外。

javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:994)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
at java.net.URL.openStream(URL.java:1045)
at org.apache.commons.io.FileUtils.copyURLToFile(FileUtils.java:1478)

我在AWS Lambda中使用了Java 8。 我尝试过

System.setProperty("https.protocols","SSLv3,TLSv1,TLSv1.1,TLSv1.2");
Security.setProperty("jdk.tls.disabledAlgorithms","");
public static void addSslToTrustStore() throws NoSuchAlgorithmException,KeyManagementException {
        TrustManager[] trustAllCerts = new TrustManager[]{new x509trustmanager() {
            public java.security.cert.X509Certificate[] getAcceptedissuers() {
                return null;
            }

            public void checkClientTrusted(X509Certificate[] certs,String authType) {
            }

            public void checkServerTrusted(X509Certificate[] certs,String authType) {
            }
        }
        };

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

        // Create all-trusting host name verifier
        HostnameVerifier allHostsValid = new HostnameVerifier() {
            public boolean verify(String hostname,SSLSession session) {
                return true;
            }
        };

        // Install the all-trusting host verifier
        HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
    }

这些都是我在网上找到的所有选项,但对我没有用。 文件在任何本地都下载到我的本地,但在lambda上抛出异常。 请帮助我。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。