微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

API <24 上的 Android 网络安全

如何解决API <24 上的 Android 网络安全

为了与我的 android 应用程序进行通信,我使用了 network-security-config.xml,它看起来像

<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="@raw/my_ca"/>
            <certificates src="system"/>
        </trust-anchors>
    </base-config>
</network-security-config>

my_ca 在哪里 - 证书(.pem 文件

在 API

解决方法

声明式网络安全配置已在 Android 7 (API 24) 中添加。在此之前,您必须以编程方式进行。不幸的是,这并不简单,步骤是:

  • 将证书放入 KeyStore
  • 创建一个X509TrustManager
  • 创建一个SSLSocketFactory
  • 构建OkHttpClient
  • Retrofit 构建器中使用客户端

OkHttp recipe 描述了这一点。

似乎还有一个带有更简单 API 的 OkHttp extension :

val certificate = """-----BEGIN CERTIFICATE-----
...                
-----END CERTIFICATE
""".decodeCertificatePem()

val certificates: HandshakeCertificates = HandshakeCertificates.Builder()
    .addTrustedCertificate(certificate)
    .addPlatformTrustedCertificates()
    .build()

val client = OkHttpClient.Builder()
    .sslSocketFactory(certificates.sslSocketFactory(),certificates.trustManager)
    .build()

Retrofit.Builder()
    .client(client)
    ...
    .build()
    .create(MyWebService::class.java)

构建 OkHttp 客户端的类似示例 in java

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。