在 Android 上配置 OkHttp 以信任 "AndroidCAStore" 中的内容以及显式证书

Configure OkHttp on Android to trust both content in "AndroidCAStore" and also explicit certificates

我的设置:

我正在尝试配置 OkHttp 以接受:

  1. 内置商业服务器证书(由 AndroidCAStore 中包含的 CA 签名)

    • 内部 Conscrypt 将 return KeyStore.getInstance("AndroidCAStore")
  2. 非商业服务器证书(由我的应用程序中的捆绑 CA 证书签名)

我已经让这两个解决方案分开工作:

如何同时解决这两个问题? 即我如何获取 AndroidCAStore 的副本并将我的证书添加到其中并使用它来初始化信任管理器工厂?

这有效(省略了异常处理):

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null);

// Ommitted: Code to add certificates explictly from file

final KeyStore androidCAStore = KeyStore.getInstance("AndroidCAStore");
androidCAStore.load(null);
final Enumeration<String> androidCAStoreAliases = androidCAStore.aliases();
while (androidCAStoreAliases.hasMoreElements()) {
     final String param = androidCAStoreAliases.nextElement();
     keyStore.setEntry(param, androidCAStore.getEntry(param, null), null);
}