【问题标题】:How to create an SSL connection using an installed user certificate on android如何在 android 上使用已安装的用户证书创建 SSL 连接
【发布时间】:2017-09-07 14:46:52
【问题描述】:

我们正在使用用户证书从我们的移动应用程序到 F5 服务器进行身份验证。我们使用我们安装的测试证书测试了该过程,并创建了一个密钥库以用于创建我们的 SSLContext 对象。对于生产,我们使用 MDM 动态创建用户证书并将其安装到 android 设备上。我相信这是将证书放入 /data/misc/keystore 位置。我们面临的问题是我们无法访问此用户证书并使用它创建 SSLContext。

在我们的测试中,我们通过安装 Open VPN for Android 验证了证书在设备上。证书显示在 Open VPN 中的 Android 证书下,但需要用户选择它(这不是我们的应用程序的选项,我们需要以编程方式获取证书)。

我们发现的所有内容要么涉及 CA 证书(我们可以访问),要么拥有 .cer 或 .pfx 文件并安装和创建密钥库,就像我们对测试证书所做的那样。

有没有办法访问用户安装的证书以用于创建 SSLContext?

我们的 Android 版本是 4.1.2 (API 16)。

我们是 android 开发的新手,我们将不胜感激。

谢谢,

迈克

【问题讨论】:

    标签: android ssl-certificate openvpn android-security


    【解决方案1】:

    为了访问存储在设备密钥库中的用户凭据,您需要获得用户的许可。 具体来说,您需要调用 KeyChain.choosePrivateKeyAlias() 之一(请参阅KeyChain documentation)。 一旦你有了别名(你会在 KeyChainAliasCallback 中得到它),你就可以使用(来自 Activity 或 Service):

    PrivateKey key = KeyChain.getPrivateKey(this, alias);
    X509Certificate[] chain = KeyChain.getCertificateChain(this, alias);
    

    【讨论】:

      【解决方案2】:

      如何使用类似的东西:

      SSLContext sslContext 
          = SSLConnections.getSSLContext(keyStoreFile, keyStoreFilePassword);
      httpsURLConnection.setSSLSocketFactory(sslContext.getSocketFactory());
      

      你也可以看看in this link

      【讨论】:

      • @Mike 这是你要找的吗?
      猜你喜欢
      • 2017-05-02
      • 2011-01-19
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      • 2016-08-19
      • 1970-01-01
      相关资源
      最近更新 更多