【发布时间】:2011-09-20 10:25:14
【问题描述】:
我开始学习一个没有针对 Android 的教程并得到了这个:
System.setProperty("javax.net.ssl.trustStore", "truststore");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
SSLSocketFactory ssf = (SSLSocketFactory) SSLSocketFactory.getDefault();
try {
Socket s = ssf.createSocket("192.168.2.11", 6543);
PrintWriter out = new PrintWriter(s.getOutputStream());
while (true){
out.println("SSL TEST");
Log.d("DATA", "DATA SENT");
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我想这可以归结为几个问题:
我没有创建自己的信任库,但是在网上搜索教程和东西时,我不知道如何创建一个。有没有办法可以创建或修改信任库以在其中包含我需要的证书? (如果这有什么不同,我使用的是自签名证书)
-
如何使 SSL 握手顺利进行?现在,我得到的错误是:
javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。老实说,我真的不明白这是什么意思。
我需要在我的 Android 设备上修改哪些设置或文件以确保可以进行此连接?
【问题讨论】:
-
您可能应该从 Android 的方式开始,而不是尝试修改非 Android 技术。
-
我还尝试将我的服务器上的密钥库文件放在我的 jdk/jre/lib/security 文件夹中,然后更改信任库位置和密码以匹配它,我得到了相同的例外。
-
等等!什么是“Android 方式”?
-
如果我大声呼救,是否意味着人们会更快地回答我的问题?此外,我目前的方法是尝试从 SSLContext 中获取 SSLSocketFactory,我正在尝试使用我的密钥库对其进行初始化。仍然在这里解决问题,但它可能很有希望。
标签: java android sockets ssl ssl-certificate