![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
pompei |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: нет Всего: 6 |
Когда используем URLConnection то переход на https с http будет прозрачным, просто меняем урл на урл с https-протоколом, и ВСЁ! (не нужно никаких System.setProperty и прочей ерунды) Казалось бы просто, но у некоторых это не работает - возникает ошибка.... На самом деле всё работает, просто эта ошибка предусмотрена разработчиками, верней самой концепцией безопасности. Протокол HTTPS подразумевает, что вы будете работать только с заранее зарегистрированными сертификатами, т.е. с теми сертификаторами, которым вы доверяете. Ну а так как вы ещё ни чего не говорили по поводу того, кому вы доверяете, а кому нет, то система думает, что вы никому ни чего не доверяете, и все обрубает при работе с HTTPS. Короче нужно зарегистрировать, те сертификаты к кому вы обращаетесь. На заметку: когда происходит коннект по протоколу HTTPS, то вначале клиент и сервер обмениваются сертификатами, потом проверяют эти сертификаты, и только потом уже обмениваются данными. Как получить сертификат у сервера? Как его зарегистрировать? - это хорошие вопросы... я в них сейчас разбираюсь. Когда разберусь напишу сюда... а ещё лучше если кто-нибудь напишет а я прочитаю...... ![]() --------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
|||
|
||||
pompei |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: нет Всего: 6 |
Для того чтобы зарегистрировать новый сертификат для работы с https протоколом в java необходимо выполнить команду: keytool -import -alias <алиас сертификата в keystore> \ -file <файл сертификата> \ -keystore <файл keystore> где <файл keystore> - файл в котором хранятся сетификаты по алиасам (хранилище сертификатов) <алиас сертификата в keystore> - это уникальный идентификатор сертификата на уровне хранилища - я ввел абру-кадабру (и всё работало замечательно) По умолчанию JVM держит своё хранилище сертификатов в файле: $JAVA_HOME/jre/lib/security/cacerts (Его можно поменять с помощью какой-то System.setProperty... но это делать вредно) Когда я натравил keytool на этот файл, у меня ничего не получилось (он потребовал пароль, который я не знаю) Поэтому я стёр этот файл и запустил команду ещё раз (которая указывала на только что стёртый файл) Он потребовал уже не ввести пароль, а выбрать новый (и подтветдить его) Дальше я запустил свою программу и всё заработало, так же как и раньше по http, но уже по https!!!! * * * Для плучения сертификата можно, например, воспользоваться FireFox-ом: Edit -> Preferences -> Advanced -> Encryption -> View Certificates -> Servers -> AddException Здесь вводим домен с https Нажимаем Get Certificate Потом View -> Details -> Export... сохраняем в файл - это и будет <файл сертификата> --------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
|||
|
||||
Anatret |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 18.9.2007 Репутация: нет Всего: нет |
Подскажите плиз. Я не пойму где лежит ClientKeyStore раз его подгружают как фаил. Если делать как указанно выше в примере,
то выдает ошибку
а вот что лежит у меня в ClientKeyStore
|
||||||
|
|||||||
Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: нет Всего: 39 |
FileInputStream fis = new FileInputStream("/billing/www/cbadmin_ora/ClientKeyStore");
|
|||
|
||||
ReFLeXive |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 30.3.2009 Где: г. Уфа Репутация: нет Всего: 1 |
ДОброго времени суток!
У меня проблема в следующем. Есть https сервер, я ему посылаю POST запрос с определенными параметрами, он мне в ответ должен прислать url-encoded строку вида param=value. Так вот, как мне получить эту самую строку от него? Делаю вот так:
Пытался получить https-заголовки, но там ниче нету; пытался получить через con.getInputStream() - там вроде возвращаются какие то числа, но их что то маловато для ответа... Или может я неверно посылаю запрос на сервер? т.е. может сперва нужно установить коннект с сервером (https://serverurl/), затем установить метод POST и уже потом тока отправлять запрос на этот url? каким тогда образом отправить запрос после url.openConnection()? |
|||
|
||||
Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 4 Всего: 16 |
Вы данные посылаете не POST-ом.
Вам надо: 1. Получить URLConnection 2. Вызвать setDoOutput(true) 3. Получить output stream 4. Записать туда то, что Вы хотите передать 5. Вызвать connect и getInputStream - только в этот момент запрос пойдет на сервер. |
|||
|
||||
ReFLeXive |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 30.3.2009 Где: г. Уфа Репутация: нет Всего: 1 |
Спасибо за отклик! Сейчас попробую!!! |
|||
|
||||
ReFLeXive |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 30.3.2009 Где: г. Уфа Репутация: нет Всего: 1 |
Видимо я по прежнему не до конца все понимаю и делаю не так.
Вот что я переделал:
Сервер мне постоянно выдает, что ему не хватает обязательных параметров. Получается, что мои значения из urlString до сервера не доходят. Как правильно посылать параметры запроса к серверу? Может быть, нужно делать какой-нибудь URLEncoder.encode() c каждым параметров в отдельности или для запроса в целом? Добавлено через 6 минут и 12 секунд Все кажется разобрался с этим! Я забыл, что надо делать
для BufferedWriter |
||||
|
|||||
Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 4 Всего: 16 |
А почему у Вас первый параметр с вопросом? Вы же не query string создаете.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |