Я начал следовать учебнику, который не был обложен вокруг 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: Trust anchor for certification path not found.
Честно говоря, я действительно не понимаю, что это значит.
-
Какие настройки или файлы необходимо изменить на моем устройстве Android, чтобы убедиться, что это соединение может случиться?