Android 7 (API 24) 中添加了声明性网络安全配置。在此之前,您必须以编程方式进行。不幸的是,这并不简单,步骤是:
- 把证书放在一个
KeyStore
- 创建一个
X509TrustManager
- 创建一个
SSLSocketFactory
- 建立一个
OkHttpClient
- 在
Retrofit构建器中使用客户端
有OkHttp 配方描述了这一点。
似乎还有一个带有更简单 API的OkHttp 扩展:
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)
java中构建OkHttp客户端的类似示例