HttpURLConnection SSL握手使用AWS签名URL重定向中止

时间:2016-04-08 00:55:04

标签: android ssl nginx amazon-s3 hapijs

我正在尝试使用Android的HttpURLConnection从Amazon S3服务器下载文件,但是获得了SSLException。我们的服务器是在Nginx后面运行的Node.js服务器(Hapi)。应用程序从我们的服务器请求该文件,该服务器回复302重定向到S3服务器上资源的签名URL。使用重定向回复的代码是:

        var params = {
            Bucket: bucketID, 
            Key: fullPath
        };
        var s3 = new AWS.S3({ apiVersion: '2006-03-01' });
        s3.getSignedUrl('getObject', params, function (err, url)
        {
            if (err || !url)
            {
                return reply(Boom.notFound());
            }

            return reply.redirect(url);

        });

使用浏览器或curl工作正常并正确地重定向到S3并下载文件,但在Android上使用HttpURLConnection(HttpClient也会出现同样的问题),我得到一个SSLException:

javax.net.ssl.SSLException: SSL handshake aborted: ssl=0x7148d680: I/O error during system call, Connection reset by peer

知道可能导致这种情况的原因吗?

1 个答案:

答案 0 :(得分:0)

没关系 - 这是应用程序支持的TLS版本与服务器支持的TLS版本之间的不匹配。服务器设置为TLSv1.1和TLSv1.2,我猜测默认HttpURLConnection和HttpClient是为TLSv1.0设置的。我改为HttpClient,因此添加以下代码解决了这个问题:

78.311333