安装VPN和APP证书

时间:2017-08-23 10:06:16

标签: android certificate

我试图要求用户安装证书,但我只想在VPN和应用凭证使用而不是Wi-Fi上进行。

该对话框显示了用户可以选择的两个选项,如here

中所示

到目前为止,我找不到任何会强制VPN和应用程序选项仅显示的选项。

我这样调用证书安装:

 Intent clientCertInstall = KeyChain.createInstallIntent();
 clientCertInstall.putExtra(KeyChain.EXTRA_CERTIFICATE, __CERT_ENCODING__);
 clientCertInstall.putExtra(KeyChain.EXTRA_NAME, __NAME__);
 activity.startActivityForResult(clientCertInstall, __CODE__);

此外,如果用户安装证书,应用程序将收到有关活动的信息,但意图将为null,结果代码为-1,告诉我用户是否选择了WIFI或VPN和应用程序。

onActivityResult(int requestCode, int resultCode, Intent data) 

最后,如果用户通过Wi-Fi安装证书,我无法在密钥库别名下找到它,如下所示:

KeyStore ks = KeyStore.getInstance("AndroidCAStore");
Eumeration aliases = ks.aliases();
while (aliases.hasMoreElements()) {
       String alias = (String) aliases.nextElement();
       X509Certificate cert = (X509Certificate) ks.getCertificate(alias);
       BigInteger localCertSerialNumber = cert.getSerialNumber();
       String localIssuerDN = cert.getIssuerX500Principal().getName();

       BigInteger serial = new BigInteger(currentCertificateSerial);
       if (installedCertSerialNumber.compareTo(localCertSerialNumber) == 0 && installedCertIssuerDn.equals(localIssuerDN)) {
           //Should reach here but it does not when user installs certificate via Wi-Fi
       }
}

我在这里做错了吗?

0 个答案:

没有答案