Android 7 以下 Android 设备上 ktor kmm 中的证书固定

发布于 2025-01-09 00:20:34 字数 1128 浏览 3 评论 0原文

使用 android 28 测试 network_security_config 文件后,我看到使用 ktor kmm 时证书固定工作(使用 OkHttp) 但是,在 android 7 以下的设备中,有没有办法设置证书固定。

我尝试了这些代码,但它似乎不起作用,如何使用 kmm 在 ios 中设置证书固定?

actual class Platform actual constructor() {
    actual val clientEngine: HttpClientEngineFactory<HttpClientEngineConfig>
        get() = OkHttp.apply {
            config {
                val certificatePinner = CertificatePinner.Builder()
                    .add(
                        "test.com.co",
                        "sha256/xxxx"
                    ).build()
                preconfigured = OkHttpClient.Builder()
                    .certificatePinner(certificatePinner)
                    .build()
            }
        }
}

fun testHttpClient(
    config: EnvConfiguration,
    checker: NetworkChecker,
    header: HeaderProvider
): HttpClient =
    HttpClient(Platform().clientEngine) {
        install(JsonFeature) {
            serializer = KotlinxSerializer(
                kotlinx.serialization.json.Json {
                    prettyPrint = true
                }
            )
        }
    ...
    }

After testing network_security_config file with android 28, I see the certificate pinning working when using ktor kmm (using OkHttp)
However, in devices below android 7, Is there any way to setup certificate pinning.

I tried these codes, but it seems not working and how can I setup certifcate pinning in ios with kmm ?

actual class Platform actual constructor() {
    actual val clientEngine: HttpClientEngineFactory<HttpClientEngineConfig>
        get() = OkHttp.apply {
            config {
                val certificatePinner = CertificatePinner.Builder()
                    .add(
                        "test.com.co",
                        "sha256/xxxx"
                    ).build()
                preconfigured = OkHttpClient.Builder()
                    .certificatePinner(certificatePinner)
                    .build()
            }
        }
}

fun testHttpClient(
    config: EnvConfiguration,
    checker: NetworkChecker,
    header: HeaderProvider
): HttpClient =
    HttpClient(Platform().clientEngine) {
        install(JsonFeature) {
            serializer = KotlinxSerializer(
                kotlinx.serialization.json.Json {
                    prettyPrint = true
                }
            )
        }
    ...
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文