Android - 如何从系统中加载用户证书

问题描述 投票:6回答:1

我正在为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系统中安装了这样的软件的话 岗位).

可以吗?

java android ssl client-certificates
1个回答
0
投票

添加你的证书文件到 资产 目录,并替换为

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());
© www.soinside.com 2019 - 2024. All rights reserved.