在非常有限的情况下允许来自Android App的明文HTTP流量

在非常有限的情况下允许来自Android App的明文HTTP流量,第1张

概述我已阅读 Android 8: Cleartext HTTP traffic not permitted,但没有一个答案似乎允许我做我想要的. 我有一个Android应用程序,其他客户端可以使用证书来识别自己.应用程序想要验证该证书.验证证书的一部分是从证书颁发者获取证书吊销列表(CRL). CRL的分发点是在证书中列出的,并且不可避免地是HTTP URL(CRL本身由发行者签名,因此没有安全问题 我已阅读 Android 8: Cleartext HTTP traffic not permitted,但没有一个答案似乎允许我做我想要的.

我有一个AndroID应用程序,其他客户端可以使用证书来识别自己.应用程序想要验证该证书.验证证书的一部分是从证书颁发者获取证书吊销列表(CRL). CRL的分发点是在证书中列出的,并且不可避免地是http URL(CRL本身由发行者签名,因此没有安全问题,如果它是httpS URL,则会想要验证保护CRL分发点的证书,并检查它是否已被撤销…)

可能的解决方案,以及它们为什么不适合我:

>不要担心 – 让TLS库担心验证证书.不幸的是,两个客户端之间没有直接的TLS连接;它全部通过服务器(通过TLS连接)进行调解.
>创建network_security_config.xml,其中列出了允许http的域.遗憾的是,我在构建应用程序时不知道URL – 这取决于CA决定放入其证书的内容.
>在清单中放置androID:usesCleartextTraffic =“true”.这意味着任何流量都可以是http,如果可能的话我宁愿避免这种情况. (例如,与服务器的通信绝对必须是httpS,如果我偶然做http,我想要一个错误.)

是否有任何方法让代码说“此连接被允许为http”(但默认为仅限httpS)?

解决方法 如果您使用的是 OkHttp,则可以构建一个客户端:

OkhttpClIEnt clIEnt = new OkhttpClIEnt.Builder() .connectionspecs(Arrays.asList(Connectionspec.MODERN_TLS,Connectionspec.COMPATIBLE_TLS)).build();

这只允许通过httpS连接.那么,您可以使用您的第三个选项(androID:usesCleartextTraffic =“true”),当您通过此客户端进行明文连接时,它将失败.

最后,您可以创建一个标准的Okhttp客户端:

OkhttpClIEnt clIEnt = new OkhttpClIEnt.Builder().build()

当你想使用明文连接时.

编辑:使用httpUrlConnection,您可以简单地检查返回的连接是否是httpsUrlConnection,如:

try {    URL my_url = new URL(path);    httpUrlConnection urlConnection = (httpURLConnection) my_url.openConnection();    if(!(urlConnection instanceof httpsURLConnection)) {        // cleartext connection,throw error        throw new NothttpsException();    }    // the connection is secure,do normal stuff here    urlConnection.setRequestMethod("POST");    urlConnection.setConnectTimeout(1500);    urlConnection.setReadTimeout(1500);    result = IoUtil.readFully(urlConnection.getinputStream());} catch(Exception e) {    e.printstacktrace()} finally {    if(urlConnection != null) urlConnection.disconnect();}
总结

以上是内存溢出为你收集整理的在非常有限的情况下允许来自Android App的明文HTTP流量全部内容,希望文章能够帮你解决在非常有限的情况下允许来自Android App的明文HTTP流量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1126270.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存