Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中添加多个用于SSL固定的.bks文件_Android_Ssl Certificate_Certificate Pinning - Fatal编程技术网

在Android中添加多个用于SSL固定的.bks文件

在Android中添加多个用于SSL固定的.bks文件,android,ssl-certificate,certificate-pinning,Android,Ssl Certificate,Certificate Pinning,我正在使用OkHttpClient库进行HTTP请求,并且在“res/raw”文件夹中有两个'.bks'文件用于SSL固定。我已经为获取一个“.bks”文件编写了以下代码。但是如何添加多个文件呢 dkhymnow.bks dpsandroid.bks 我希望有人能帮助我 private OkHttpClient getOkHttpClient() { try { OkHttpClient.Builder builder = new OkHttpClient.Build

我正在使用OkHttpClient库进行HTTP请求,并且在“res/raw”文件夹中有两个'.bks'文件用于SSL固定。我已经为获取一个“.bks”文件编写了以下代码。但是如何添加多个文件呢

  • dkhymnow.bks

  • dpsandroid.bks

我希望有人能帮助我

private OkHttpClient getOkHttpClient() {
    try {
      OkHttpClient.Builder builder = new OkHttpClient.Builder();
      builder.sslSocketFactory(getPinnedCertSslSocketFactory(context));
      builder.connectTimeout(30, TimeUnit.SECONDS);
      builder.writeTimeout(30, TimeUnit.SECONDS);
      builder.readTimeout(30, TimeUnit.SECONDS);

      OkHttpClient okHttpClient = builder.build();
      return okHttpClient;
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
  }

  private SSLSocketFactory getPinnedCertSslSocketFactory(Context context) {
    try {
      KeyStore trusted = KeyStore.getInstance("BKS");
      InputStream in = context.getResources().openRawResource(R.raw.dkhymnow);
      trusted.load(in, STORE_PASS);
      SSLContext sslContext = SSLContext.getInstance("TLS");
      TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(
        TrustManagerFactory.getDefaultAlgorithm());
      trustManagerFactory.init(trusted);
      sslContext.init(null, trustManagerFactory.getTrustManagers(), null);
      return sslContext.getSocketFactory();
    } catch (Exception e) {
      Log.e("MyApp", e.getMessage(), e);
    }
    return null;
  }

您是否考虑过使用或Android的网络安全配置?目前我正在使用keystore固定证书,但如果您可以使用CertificatePaner提供解决方案,那就太好了。您是否考虑过使用或Android的网络安全配置?目前我正在使用keystore固定证书,但如果您可提供具有认证的解决方案。