![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
olegrolik |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 25.1.2006 Репутация: нет Всего: нет |
Отличный фак. Есть один вопрос по настройке клиента не через браузер. Т.е. я хочу программно устанавливать связь со своим сервлетом, используя апачевский HTTP-client. Например, используя клиентский сертификат, приконнектится к сервлету? В какую сторону копать (т.е. какие api использовать) ? |
|||
|
||||
Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 6 Всего: 39 |
попробуй посмотреть здесь http://jakarta.apache.org/httpcomponents/h...x/sslguide.html и здесь http://svn.apache.org/viewvc/jakarta/httpc...ava?view=markup Это сообщение отредактировал(а) Alexandr87 - 15.10.2007, 14:20 |
|||
|
||||
olegrolik |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 25.1.2006 Репутация: нет Всего: нет |
С my.truststore всё понятно - работает. А вот с my.keystore - проблема. Я так понимаю, что в my.keystore должен храниться пользовательский сертификат + приватный ключ пользователя. Создаю my.keystore вот так:
Но при выполнении кода, вылетает ошибка:
Есть предложения ? |
||||||
|
|||||||
Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 6 Всего: 39 |
Есть - набрать в гугле p12 to jks
|
|||
|
||||
olegrolik |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 25.1.2006 Репутация: нет Всего: нет |
А почему бы вместо my.keystore не использовать .truststore ? Это ведь одно и тоже. Но при использовании выдаёт ту же ошибку : Exception in thread "main" java.security.KeyStoreException: No private keys found in keystore! |
|||
|
||||
Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 6 Всего: 39 |
Truststore - это хранилище доверенных сертификатов - сертификатов различных центров эмисси сертификатов (т.е. только сертификаты - без ключей), которым вы доверяете Т.е. сертификаты подписанные соответствующим данному сертификату секретным ключом - будут считаться валидными. В mykeystore - хранятся личный прайвит ключ и сертификат. Собственно поэтому. Я бы, все-таки, реккомендовал ознакомиться с концепцией PKI. А, что с гуглем? |
|||
|
||||
olegrolik |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 25.1.2006 Репутация: нет Всего: нет |
Я запутался.
Последовательность такая (если нет, то поправьте, пожалуйста): у меня есть сертификат clientCert.pfx. Мне надо его перевести из формата pkcs12 в формат jks, т.е. получить clientCert.crt Затем, добавить этот сертификат в хранилище my.keystore. Теперь о самом переводе из одного формата в другой: нашёл вот что: keytool -export -keystore test3_fromie.pfx -storetype PKCS12 -alias adcc1680792a -file exp2 Но какой alias у моего пользовательского сертификата? ![]() Может у кого-то есть готовый скрипт? Поделитесь, пожалуйста. ![]() |
|||
|
||||
Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 6 Всего: 39 |
тут вроде одной командой можно keytool -importkeystore -srcstoretype pkcs12 -srckeystore client.p12 -destkeystore .mystore Собственно да, у вас есть сертификат и ключ в формате pkcs#12, вам нужно перевести их в JKS - формат хранилища сертификатов и ключей, ипользуемый в большинстве Java приложений. crt - тут вообще не при чем. Ну и добавлять соотвественно никуда ничего не нужно, вы просто конвертируете из одного формата в другой. |
|||
|
||||
olegrolik |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 25.1.2006 Репутация: нет Всего: нет |
Alexandr87, я делал вот так:
keytool -importkeystore -srcstoretype pkcs12 -srckeystore clientCert.pfx -destkeystore .mystore Получил .mystore
Та же ошибка: No private keys found in keystore! ![]() Можно конечно забить на создание клиента и использовать браузер, но этот вариант меня не устраивает :( Это сообщение отредактировал(а) olegrolik - 16.10.2007, 15:17 |
|||
|
||||
Alexandr87 |
|
||||||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 6 Всего: 39 |
Тока что попробовал, у мну все заработало
![]() Вот шаги, которые я сделал после того, как заканчивается фак. 1. Конвертируем p12 криптоконтейнер в формат JKS
При этом, очень важно, чтобы для доступа к JKS контейнеру исполозовался точно такой же пароль, который использовался для p12 контейнера.(Потому, как в комментариях к конструктору класса org.apache.commons.httpclient.contrib.ssl.AuthSSLProtocolSocketFactory явно указывается, что пароль на private ключ и на весь контейнер должен быть одним и тем же. Если мы укажем другой пароль для JKS контейнера, то на сам контейнер пароль сменится, а доступ к Private ключу должен будет осуществлятся по старому паролю). Это мне кажется наиболее веротяной причиной, почему у вас на данный момент выдает ошибку No private keys found in keystore! 2. Подготовил непосредственно код, который будет использовать http-client (при этом добавил следующие классы из org.apache.commons.httpclient.contrib.ssl :AuthSSLInitializationError, AuthSSLProtocolSocketFactory, AuthSSLX509TrustManager. Может еще какие нужны, но у меня заработало и на этом).
Получил :
Это сообщение отредактировал(а) Alexandr87 - 16.10.2007, 18:15 |
||||||
|
|||||||
olegrolik |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 25.1.2006 Репутация: нет Всего: нет |
Сделал всё заново. Ошибка таже
Не мог бы ты выложить jar с этими классами? Может в них дело. А вообще почему .keystore должен быть именно в формате jks? Вот ещё: java -cp not-yet-commons-ssl-0.3.8.jar org.apache.commons.ssl.KeyStoreBuilder mypass c:/clientCert.pfx получил файл client.jks Использую его вместо .mystore Эффект тот же. Это сообщение отредактировал(а) olegrolik - 17.10.2007, 11:02 |
|||
|
||||
Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 6 Всего: 39 |
Вот тут сертификаты, с которыми у меня все работает. Пароли от всех контейнеров 123456 http://avarlamov.net/files/art.tar.gz для сервера .truststore, tomcatCert.pfx для клиента .trussttore, .mystore Не забудьте заменить соответствующие файлы на сервере. Здесь три апачевских класса, но уверен, что проблемма не в них. http://avarlamov.net/files/apache-contrib.tar.gz Если ничего не поможет, выложите не просто наименование ошибки, а полный стэк-трейс. |
|||
|
||||
olegrolik |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 25.1.2006 Репутация: нет Всего: нет |
Всё это очень странно. Я делаю следующее: Взял файлы .trustore и .mystore из архива твоего. Сервер даже не настраивал.
Код программы:
Т.е. код вообще такой-же, как у тебя. Используемая библиотека для ssl - not-yet-commons-ssl-0.3.8.jar Ошибка:
Спасибо за помощь! ![]() |
||||
|
|||||
Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 6 Всего: 39 |
хм, а я вообще никакую отдельную библиотеку не использую. У меня в CLASSPATH только commons-codec-1.3.jar, commons-httpclient-3.1.jar, commons-logging-1.1.jar + jar с тремя файлами из org.apache.commons.httpclient.contrib.ssl и все работает. Т.е. org.apache.commons.ssl.KeyMaterial у меня вообще нет. Попробуйте убрать эту библиотеку. |
|||
|
||||
olegrolik |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 25.1.2006 Репутация: нет Всего: нет |
Огромное спасибо. Ключи найдены.
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |