【问题标题】:Android Parse implementation cannot verify custom server hostnameAndroid Parse 实现无法验证自定义服务器主机名
【发布时间】:2016-05-25 06:32:13
【问题描述】:

Android 上初始化Parse 时,我能够在以下情况下成功连接到 Parse 服务器:
1) 我没有指定服务器 URL,或者
2) 我将服务器 URL 设置为 Parse 服务器。

因为我们打算最终将我们的数据从 Parse 迁移到不同的主机,所以我们希望连接到不同的服务器 URL。 但是,当我尝试指定重定向(用作代理)到 Parse 服务器的不同服务器 URL (https://api.ourhostname.com/1/) 时,应用程序无法完全连接到服务器。从 iOS 项目实现时,此服务器 URL 可以正常工作。但是,当在 Android 等效设备上实现时:

Parse.initialize(new Parse.Configuration.Builder(this)
        .applicationId(APP_ID)
        .clientKey(CLIENT_KEY)
        .server("https://api.ourhostname.com/1/")
        .build()
    );

我收到一个 i/o 故障:

05-24 21:46:55.319 7140-7140/com.ourapp W/System.err: com.parse.ParseRequest$ParseRequestException: i/o failure
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at com.parse.ParseRequest.newTemporaryException(ParseRequest.java:290)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at com.parse.ParseRequest$2.then(ParseRequest.java:145)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at com.parse.ParseRequest$2.then(ParseRequest.java:139)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at bolts.Task$15.run(Task.java:917)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err:     at java.lang.Thread.run(Thread.java:818)
05-24 21:46:55.324 7140-7140/com.ourapp W/System.err: Caused by: javax.net.ssl.SSLPeerUnverifiedException: Cannot verify hostname: api.ourhostname.com
05-24 21:46:55.329 7140-7140/com.ourapp W/System.err:     at android.net.SSLCertificateSocketFactory.verifyHostname(SSLCertificateSocketFactory.java:242)
05-24 21:46:55.329 7140-7140/com.ourapp W/System.err:     at android.net.SSLCertificateSocketFactory.createSocket(SSLCertificateSocketFactory.java:486)
05-24 21:46:55.329 7140-7140/com.ourapp W/System.err:     at com.android.okhttp.Connection.upgradeToTls(Connection.java:1226)
05-24 21:46:55.329 7140-7140/com.ourapp W/System.err:     at com.android.okhttp.Connection.connect(Connection.java:1183)
...

通过网络浏览器,我可以访问我们的自定义服务器 URL,该 URL 在浏览器中是受信任且有效的,这意味着它不是自签名的。

有没有其他人在他们的 Android 项目中遇到过这个问题,以及关于如何成功让 Parse SDK 连接到自定义服务器 URL 的任何建议?

更新: 我们能够通过以下方式解决此问题:
1)在Android端添加this solution
2) 调整我们的自定义服务器提供其公钥的方式(这对于让 Marshmallow 连接到服务器尤其重要)。

【问题讨论】:

  • 你解决了吗?我在这里面临同样的问题
  • @gfpacheco 我已经更新了帖子,说明了我们如何解决问题。

标签: android parse-platform hostname


【解决方案1】:

我们能够通过以下方式解决此问题:
1)在Android端添加this solution
2) 调整我们的自定义服务器提供其公钥的方式(这对于让 Marshmallow 连接到服务器尤其重要)。

【讨论】:

    猜你喜欢
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多