我已经阅读了 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)?
domain-config
中,并设置cleartextTrafficPermitted="false"
。 - karan