我有一个针对网络的自定义SSL根CA,我希望能够在Android设备上安装它。如果我下载它会说"没有要安装的证书"。如何配置证书以使用openSSL或其他工具?我做了一些谷歌搜索,一些网站说我应该将它转换为.pfx但这涉及给用户我的私钥并破坏安全性。
答案 0 :(得分:0)
如果您要将证书添加到Android KeyChain(可以从ICS开始),您需要提供X509Certificate
(。crt,.pem等)或PKCS12
(。pfx)文件。
您必须从KeyChain
班级调用安装意图。
根据文件:http://developer.android.com/reference/android/security/KeyChain.html#createInstallIntent()
返回可用于凭据安装的Intent。该 意图可以在没有任何额外的情况下使用,在这种情况下用户将是 能够从他们自己的来源安装凭证。
或者,可以使用EXTRA_CERTIFICATE或EXTRA_PKCS12来指定 X.509证书或PKCS#12密钥存储区的字节 安装。这些额外内容可与EXTRA_NAME结合使用 正在安装的凭据的默认别名。
当与startActivityForResult(Intent,int)一起使用时,RESULT_OK将是 如果成功安装了凭证,则返回,否则返回 将返回RESULT_CANCELED。
<强>然而强>
在我看来,您真正想要做的是将X509Certificate
与您的应用程序一起包含在内,这样您就可以在没有用户知识的情况下建立安全的SSL连接,这将适用于所有设备。
为了做到这一点,您必须创建将X509Certificate
放入应用程序(作为PEM字符串,.crt文件.der文件或BouncyCastle KeyStore
内)并初始化SSLContext
用它。完成后,您可以获得SSLSocketFactory
,您可以使用http客户端。
更多相关信息: https://developer.android.com/training/articles/security-ssl.html