Использование самоподписанного сертификата в java

Я хочу подключиться к смс-шлюзу. Я нашел следующий код.

public void smsSender(String username, String password, String to,
        String text) throws IOException {

    try {
        String data = "username=" + username + "&password=" + password
                + "&to=" + to + "&text=" + text;

        URL url = new URL("https://sendsms.abc.com:1010/sms.php");

        HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
        urlc.setRequestMethod("POST");
        urlc.setDoOutput(true);
        urlc.setRequestProperty("Content-type",
                "application/x-www-form-urlencoded");

        BufferedWriter br = new BufferedWriter(new OutputStreamWriter(
                urlc.getOutputStream()));

        br.write(data);
        br.flush();

        BufferedReader rd = new BufferedReader(new InputStreamReader(
                urlc.getInputStream()));
        String line;
        while (null != ((line = rd.readLine()))) {
            output = line;
            System.out.println(output);
        }

        rd.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Когда я пытаюсь подключиться с помощью этого метода, Eclipse отправляет сообщение об ошибке.

невозможно найти действительный путь сертификации к запрошенной цели

Сервер, к которому я пытаюсь получить доступ, использует самоподписанный сертификат. Я новичок в этой области. Как я могу решить эту проблему. Заранее спасибо :)


person Chamath    schedule 22.10.2012    source источник
comment
Может быть, это полезно: stackoverflow.com/questions/859111/   -  person Werner Kvalem Vesterås    schedule 22.10.2012


Ответы (1)


Чтобы вызывать удаленные методы через SSL, клиент должен доверять сертификату сервера. Как вы сказали, у сервера есть самозаверяющий сертификат, ваш клиент должен быть явно настроен на доверие сертификату, иначе соединение не удастся. Чтобы создать доверительные отношения между самозаверяющим сертификатом клиента и сервера, выполните шаги, указанные ниже.

  1. Сначала вы должны получить сертификат сервера на своей стороне клиента.
    Для этого я знаю, что это, т. Е. Нажмите URL-адрес сервера в браузере, получите сертификат сервера и импортируйте его в браузер. Могут быть и другие способы получения сертификата сервера, но вам придется изучить их.

  2. Теперь экспортируйте открытый ключ в виде сертификата из браузера в клиент. пусть будет server.cer.

  3. # P4 #
    # P5 #
  4. # P6 #
    # P7 #
  5. # P8 #
    # P9 #
  6. теперь загрузите клиентское хранилище ключей, как указано в комментарии Эриксона в ссылка, предоставленная Вернером.

Дайте мне знать, если что-то по-прежнему не ясно. Но я предлагаю вам прочитать некоторую документацию в Google, касающуюся установления связи SSL между клиентом и сервером.

person Arham    schedule 22.10.2012
comment
Было бы полезно, если бы вы могли предоставить несколько ссылок для этих шагов, поскольку я здесь новичок. :) - person Chamath; 22.10.2012
comment
Обновил свой ответ. Посмотри. - person Arham; 22.10.2012
comment
Все еще та же проблема. невозможно найти действительный путь сертификации для запрошенной цели - person Chamath; 23.10.2012