Android和SSL证书加载
问题描述:
我正在为Android 2.2 SDK的应用程序,并从通过Java Socket技术应用到另一个(不同的移动设备即是)的一个实例,通过wifi我目前正在发送数据,并能正常工作。我想添加一些加密,所以数据不是以纯文本的形式发送的。Android和SSL证书加载
我用
SSLServerSocketFactory factory = (SSLServerSocketFactory)
SSLServerSocketFactory.getDefault();
server = (SSLServerSocket) factory.createServerSocket(incomingConnectionPort);
while(!Thread.interrupted()) {
SSLSocket incoming = (SSLSocket) server.accept();
.......
}
要上的另一点一个点,
SocketAddress sockAddress = new InetSocketAddress(address.getIP(), address.getPort());
SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
connectionSocket = (SSLSocket) factory.createSocket();
connectionSocket.connect(sockAddress, 6000);
创建SSLServer连接到服务器。 一些搜索后我还创建了一个东西自签名证书一样
keytool -keystore mykeystore -storepass mypass -genkey -keyalg RSA -alias mycert
,并在我的代码
System.setProperty("javax.net.ssl.keyStore", "mykeystore");
System.setProperty("javax.net.ssl.keyStorePassword","mypass");
//add cert as trusted
System.setProperty("javax.net.ssl.trustStore","mykeystore");
System.setProperty("javax.net.ssl.trustStorePassword","mypass");
添加了这个但这显然没有在Android的,因为我在这里找到了工作的原因http://groups.google.com/group/android-developers/browse_thread/thread/16c7eb8e65451d27/26edb971d390e2a3?pli=1。
我检查的代码(解决方案?)这里https://github.com/k9mail/k-9/blob/master/src/com/fsck/k9/mail/store/TrustManagerFactory.java但我不能想出解决问题的导入证书到底是什么。
能给我如何正确导入证书密钥库一些指导?
我还希望也许的另一种方法的数据在Java中的TCP套接字安全地传送(未机器人特异性的,因为我正在做该应用将连接到非移动设备以及)。
谢谢,请原谅我犯的错误。我还在学习。 :)
答
SSL是客户端到客户端连接一个不错的选择。 SSL要求服务器具有静态DNS(或IP)名称,在这种情况下情况并非如此。
你应该使用常规插座连接,并开发自己的加密协议。细节取决于您想要传输的数据以及这意味着什么安全性要求。