【问题标题】:Android - How to load User Certificate from systemAndroid - 如何从系统加载用户证书
【发布时间】:2017-10-13 18:40:26
【问题描述】:

我正在为 Android 5 或更高版本开发应用程序。

我需要加载 SSL 客户端证书以向 API 发出请求。

我可以实现从下载文件夹加载证书并提出请求:

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "certificate.pfx");
KeyStore clientStore = KeyStore.getInstance("PKCS12");
clientStore.load(new FileInputStream(file), "password".toCharArray());

KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(clientStore, "password".toCharArray());
KeyManager[] kms = kmf.getKeyManagers();

SSLContext sslContext = null;
sslContext = SSLContext.getInstance("TLS");
sslContext.init(kms, null, new SecureRandom());            

HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());

但我想知道是否有可能从Android系统加载证书(当然如果我之前在Android中安装过这样的post)。

有可能吗?

【问题讨论】:

    标签: java android ssl client-certificates


    【解决方案1】:

    将您的证书文件添加到 assets 目录并替换:

    File file = new File(Environment.getExternalStoragePublicDirectory(
    Environment.DIRECTORY_DOWNLOADS), "certificate.pfx");
    KeyStore clientStore = KeyStore.getInstance("PKCS12");
    clientStore.load(new FileInputStream(file), "password".toCharArray());
    

    KeyStore clientStore = KeyStore.getInstance("PKCS12");
    InputStream is = context.getAssets().open("certificate.pfx");
    clientStore.load(is, "password".toCharArray());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 2012-03-28
      • 2014-03-10
      • 2015-08-15
      • 2016-08-05
      • 2013-02-05
      • 2012-01-08
      相关资源
      最近更新 更多