将 .cer 文件添加到 okhttp

add .cer file to okhttp

我在我的项目中使用 okhttp,最近切换到 https 管理员发送了一个 .cer 我尝试添加它,但所有示例都使用证书中的哈希值 像这样

val certificatePinner = CertificatePinner.Builder()
   .add(
           "www.example.com",
           "sha256/ZC3lTYTDBJQVf1P2V7+fibTqbIsWNR/X7CWNVW+CEEA="
   ).build()

val okHttpClient = OkHttpClient.Builder()
   .certificatePinner(certificatePinner)
   .build()

有没有办法添加.cer 或者如何从中获取 sha?

您需要将证书加载到您的信任库中,如 OkHttp 的 CustomTrust.java 示例所示:

X509TrustManager trustManager;
SSLSocketFactory sslSocketFactory;
try {
  trustManager = trustManagerForCertificates(trustedCertificatesInputStream());
  SSLContext sslContext = SSLContext.getInstance("TLS");
  sslContext.init(null, new TrustManager[] { trustManager }, null);
  sslSocketFactory = sslContext.getSocketFactory();
} catch (GeneralSecurityException e) {
  throw new RuntimeException(e);
}

client = new OkHttpClient.Builder()
    .sslSocketFactory(sslSocketFactory, trustManager)
    .build();