gpt4 book ai didi

android - 改造不适用于 sha256 测试 url 的 map api

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:19 25 4
gpt4 key购买 nike

我已经对 google Places 和 direction API 集成进行了改造。最近我从 Google Maps for Work 支持团队那里得到了更新,为了确保您的应用程序不受影响,您需要验证您使用的 HTTPS 客户端是否支持 SHA -256.

他们提供了一个测试 url( https://cert-test.sandbox.google.com ) 来验证 http-client 是否兼容

我用过https://cert-test.sandbox.google.com使用 Retrofit 进行验证,但它失败了,并给出了如下所述的异常:

javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL 握手中止: ssl=0x1027ce0: SSL 库失败,通常是协议(protocol)错误

需要说明的是,我在此集成中使用了普通的 okhttpclient。

如果有人有修复,请做必要的。

最佳答案

看起来服务器正在使用 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 密码。 API 20 (L Preview) 才开始支持它。您可以在 SSLSocket docs 上按 API 级别查看支持的密码列表。 .

尝试在 5.0 或更高版本的设备上运行您的测试。例如,下面的代码在运行 5.0 的设备上是成功的,但在 4.4.4 上得到 SSL 异常 --

OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().get().url("https://cert-test.sandbox.google.com/")
.build();

response = client.newCall(request).execute();
Log.d(TAG, "code = " + response.code());

但是对于等效的 URLConnection 代码也是如此 --

HttpsURLConnection con = (HttpsURLConnection) new URL("https://cert-test.sandbox.google.com/").openConnection();
con.connect();
Log.d(TAG, "code = " + con.getResponseCode());

问题不是改造或 okhttp,而是旧手机上提供的默认安全提供程序的限制。

您可以通过安装新的提供程序来解决这个问题。谷歌通过谷歌播放服务提供了一个,并且很容易安装。一行(加上异常处理等)。

try {
ProviderInstaller.installIfNeeded(this);
} catch (GooglePlayServicesRepairableException e) {
// Fix it
} catch (GooglePlayServicesNotAvailableException e) {
// Skip it
}

有关完整示例,请参阅 "Updating Your Security Provider to Protect Against SSL Exploits"来自谷歌。

如果手机安装了 Google Play,这样做将允许上述两个代码块在较低的 API 版本上运行。

关于android - 改造不适用于 sha256 测试 url 的 map api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32837416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com