【问题标题】:How to get installed cert from Android and use it on okhttp?如何从 Android 获取已安装的证书并在 okhttp 上使用它?
【发布时间】:2023-01-05 12:07:16
【问题描述】:

我正在使用 XAMPP 8.1.12 来测试客户端身份验证。只有拥有证书的Android 才能向服务器发送http 请求。

由于 XAMPP 默认启用 https,所以我将 C:\xampp\apache\conf\ssl.crt\server.crt 复制并安装到 Android 并使用此代码获取我的证书,我可以找到很多证书,但没有一个是我安装的证书。

val ks: KeyStore = KeyStore.getInstance("AndroidCAStore")
//val ks: KeyStore = KeyStore.getInstance("PKCS12") //no cert found
//val ks: KeyStore = KeyStore.getInstance("crt") //no cert found
//val ks: KeyStore = KeyStore.getInstance("cer") //no cert found
//val ks: KeyStore = KeyStore.getInstance("cert") //no cert found
//val ks: KeyStore = KeyStore.getInstance(KeyStore.getDefaultType()) //no cert found
ks.load(null, null)
val aliases: Enumeration<String> = ks.aliases()
while (aliases.hasMoreElements()) {
    val alias = aliases.nextElement() as String
    val cert = ks.getCertificate(alias) as X509Certificate
    Log.v("listhere", cert.issuerDN.name)
}

如何获取已安装的证书并在 okhttp 中使用它进行客户端身份验证?

【问题讨论】:

    标签: android ssl ssl-certificate certificate okhttp


    【解决方案1】:

    您可以使用好的http3为此目的的证书固定,您可以将证书添加到您的项目或简单地管理证书的 SHA 指纹。

    OkHttpClient okHttpClient = okHttpClientBuilder
          .certificatePinner(getCertificatePinner())
          .build();
    

    跟着CertificatePinner.Builder()文档来构建你需要的东西。

    您可能还想阅读 Android 的 network-security-config 配置。 (https://developer.android.com/training/articles/security-config)

    【讨论】:

      猜你喜欢
      • 2017-05-02
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 2017-08-29
      • 2018-11-16
      • 1970-01-01
      • 2018-09-05
      • 2019-05-07
      相关资源
      最近更新 更多