Android TLS连接和自签名证书

时间:2012-08-18 12:45:02

标签: android ssl

我正在尝试从我的Android应用程序连接到基于node.js的TLS服务器。当然,它失败了,因为我使用的是自签名证书。

无论如何我可以将证书添加到我的应用程序并让Android以某种方式信任它吗?注意,我没有使用HTTPS,这是一个TLS over TCP连接。

2 个答案:

答案 0 :(得分:18)

经过大量阅读后,我想出了一个答案。

这是一个非常好的指南:http://nelenkov.blogspot.no/2011/12/using-custom-certificate-trust-store-on.html

现在,由于我没有使用HTTPS,因此我不得不采用一种稍微不同的方法来获取新密钥库的干净SSL套接字:

KeyStore store = KeyStore.getInstance("BKS");
InputStream truststore = mainActivity.getResources().openRawResource(R.raw.trust);
store.load(truststore, "PASSWORD".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
tmf.init(store);
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), new SecureRandom());
Socket socket = context.getSocketFactory().createSocket(ip, port);

答案 1 :(得分:7)

不建议将证书添加到您的应用程序中。您在更新证书时会遇到问题。

你看过了吗?

Self-signed SSL acceptance on Android

HTTPS GET (SSL) with Android and self-signed server certificate