首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android连接到AWS/alive.json挂起

Android连接到AWS/alive.json挂起
EN

Stack Overflow用户
提问于 2017-09-20 11:49:55
回答 1查看 226关注 0票数 1

我手上有一个Android应用,目标是SDK 21级。在这方面,我试图使用AWS‘alive.json连接到java.net.HttpURLConnection

信任链看起来是这样的:

  • 巴尔的摩CyberTrust根(由开发设备信任)
  • DigiCert巴尔的摩CA-2 G2 (开发设备信任DigiCert保证ID根G2、全局根CA、全局根G2等DigiCerts --这足够吗?)
  • AWS (*..us east-等.amazonaws.com)

我的AndroidManifest.xml以<uses-permission android:name="android.permission.INTERNET"/>为特色。

代码可以归结为以下几点。它在一个单独的线程上被调用(这个线程一个一个地执行请求--目前只有这个线程),它来自NDK。

代码语言:javascript
复制
    // init() -- all optional
    System.setProperty("http.keepAlive", "false");
    HttpURLConnection.setDefaultAllowUserInteraction(false);

    // makeRequest(HttpRequest request)
    URL url = new URL(request.url);
    HttpURLConnection http = (HttpURLConnection) url.openConnection();
    http.setUseCaches(false);
    http.setReadTimeout(timeoutMs);
    http.setChunkedStreaingMode(0); // optional
    http.setDoInput(true);
    http.setRequestMethod("GET"); // optional
    http.setRequestProperty("X-Correlation-ID", x); // optional
    http.connect();

现在,如果我将超时设置为80 an,我将得到一个javax.net.ssl.SSLHandshakeException: SSL handshake timed out。除此之外(800毫秒),它将永远挂在http.connect()

https://developer.android.com/training/articles/security-ssl.html#HttpsExample和周围的文章详细介绍了应该如何做到这一点。我的理解是,我不应该需要证书钉在这个练习。

如果我添加了一个(按照上面文章的思路),我就会得到一个javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

连接到http:// resource可以正常工作。

我做错了什么?我需要什么额外的配置,为什么?

更新:

1、基于OkHttp的实现表现出完全相同的行为。

2、证书钉扎没有帮助回避这一问题。请注意,这只是一个绝望的措施,而不是什么生产-显然,我们不想打破当亚马逊的证书得到更新。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-04 13:52:30

哦哦。不要在Android上这样做;使用http://s3.us-east-2.amazonaws.com/static-us-east/alive.json,而不是https://

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46321268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档