Как я могу получить доступ к SSL-соединению через Android?

Я начал следовать руководству, которое не было ориентировано на 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();
    }

Я думаю, это сводится к нескольким вопросам:

  1. Я у меня нет собственного хранилища доверенных сертификатов, но, просматривая учебные пособия и прочее в Интернете, я не знаю, как его создать. Есть ли способ создать или изменить хранилище доверенных сертификатов, чтобы в нем были сертификаты, которые мне нужны? (Я используя самоподписанный сертификат, если это имеет какое-то значение)

  2. Как сделать так, чтобы квитирование SSL прошло гладко? Прямо сейчас я получаю следующую ошибку:

     javax.net.ssl.SSLHandshakeException: java.  security.cert.CertPathValidatorException: якорь доверия для пути сертификации не найден.
     

    Честно говоря, я не совсем понимаю, что это значит.

  3. Какие настройки или файлы мне нужно изменить на моем Android-устройстве, чтобы убедиться, что это соединение может произойти?

12
задан Joachim Sauer 22 June 2011 в 14:26
поделиться