Этот код Java все еще безопасен? HTTPS-соединения с использованием класса URL - PullRequest
2 голосов
/ 29 августа 2011

Я пишу Java-оболочку для API, и у меня есть фундаментальный вопрос о соединениях SSL и HTTPS.Я знаю, когда HTTPS-соединения выполняются В БРАУЗЕРЕ, информация зашифровывается между браузером и сервером, поэтому информация не может быть прочитана, если она перехвачена.Насколько я знаю, это фундаментальное SSL-соединение.

Однако существует ли такой же уровень безопасности между вызовом метода Java и сервером?Например, если я создаю класс URL с адресом "https://server.com/",, будет ли зашифрована информация между кодом Java и сервером?

Другими словами, возвращается ли информация в этом типе кодаsecure (прямо из моего API возвращает строку JSON):

public static String getJSON() {
    String url = "https://nxtpass.com/create/?" +
                "apiKey=" + apiKey // so on, building up the query
        return IOUtils.toString(new URL(url).openStream());
}

Если бы я набрал этот адрес в браузере, возвращенная строка JSON была бы защищена соединением HTTPS (я полагаю, что этоtrue). Та же самая защита сохраняется в моем коде выше? Если нет, как бы я поступил так?

Ответы [ 4 ]

3 голосов
/ 29 августа 2011

Да. Линия

new URL(url).openStream()

эквивалентно

new URL(url).openConnection().getInputStream()

и вызов openConnection() возвращает соответствующее соединение для указанного протокола.

В этом случае это будет HttpsURLConnection, который закодирован для фактического выполнения HTTPS.

3 голосов
/ 29 августа 2011

Если я правильно понял ваш вопрос, в дистрибутив Java встроена поддержка JSSE , в которой есть обработчики протоколов для SSL (HTTP через SSL). Так что да, соединение, установленное через класс java.net.URL, безопасно для URL-адреса HTTPS, к которому осуществляется доступ.

2 голосов
/ 29 августа 2011

Да, это защищено, как в случае с браузером.Все параметры, которые вы передаете в URL, будут защищены с помощью SSL.

Примечание: в случае, если сертификат конца сервера не является доверенным [если это самозаверяющий сертификат], необходимо установить следующие два системных свойстваперед звонком - там нужно импортировать соответствующий публичный сертификат в локальное хранилище ключей [путь / к / хранилище].

System.setProperty("javax.net.ssl.trustStore","path/to/trutstore");
System.setProperty("javax.net.ssl.trustStorePassword", "password");
0 голосов
/ 29 августа 2011

HTTPS - это HTTP поверх SSL, независимо от того, является ли клиент браузером, Java, VB, Smalltalk, Snobol, Fortran, ...

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