Невозможно вызвать HTTPS ненадежный URL из Java-клиента - PullRequest
0 голосов
/ 09 января 2012

Я хочу позвонить по URL-адресу https из java, и он не является доверенным, а также у него нет доменного имени, кроме ip (публичного или частного).Когда я вызываю URL, который имеет доменное имя с ненадежным сертификатом, это работает.Но с IP-адресом это не работает.Это ошибка, которую я получил и исходный код.Подскажите, в чем проблема и как ее решить.

Спасибо!

Ошибка:

java.io.IOException: HTTPS hostname wrong:  should be <xxx.xxx.xxx.xxx>

Источник:

public static void main(String args[]){

        StringBuffer param = new StringBuffer();
        param.append("https://xxx.xxx.xxx.xxx/insert.php");
        param.append("?a=a");
        param.append("&b=c");
        param.append("&c=c");   
        System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol");
        Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());

        try{
            URL url =new URL(param.toString());
            URLConnection con = url.openConnection();
            con.setAllowUserInteraction(true);
            con.getInputStream();
            BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer result = new StringBuffer();

            while ((inputLine = in.readLine()) != null){
                result.append(inputLine);
                            }
            in.close();

            System.out.println("Result=" + result.toString());
        }catch(Exception ee){
            System.out.print(ee);
        }

}

1 Ответ

1 голос
/ 09 января 2012

В отличие от некоторых браузеров, Java-реализация верификатора имени хоста следует RFC 2818 (спецификация HTTPS) строго при использовании IP-адресов (в отличие от имен хостов). В частности, ДОЛЖНА быть запись IP в расширении альтернативного имени субъекта.

Подробнее в этом ответе .

Обратите внимание, что код, связанный с комментарием, просто отключает любую проверку сертификата, что делает его потенциально открытым для атак "Человек в середине": не используйте его!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...