2012-03-12 161 views
1

我正在为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套接字安全地传送(未机器人特异性的,因为我正在做该应用将连接到非移动设备以及)。

谢谢,请原谅我犯的错误。我还在学习。 :)

回答

2

SSL是客户端到客户端连接一个不错的选择。 SSL要求服务器具有静态DNS(或IP)名称,在这种情况下情况并非如此。

你应该使用常规插座连接,并开发自己的加密协议。细节取决于您想要传输的数据以及这意味着什么安全性要求。