![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| regen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 5.7.2006 Репутация: нет Всего: нет |
Добрый день.
Пытаюсь сейчас разобраться как работать из под Java с сертификатами. Интересуют следующий аспекты: 1) как генерировать сертификаты 2) как подписывать с помощью сертификата 3) как создавать списки отзыва сертификатов Не поможете? Был бы очень благодарен за примеры. Заранее благодарю. Это сообщение отредактировал(а) regen - 26.4.2007, 14:46 |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
читай доку по утилите keytool. там все описано.
|
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 9 Всего: 39 |
думаю, человек имел ввиду несколько другое, а именно, как программно работать с сертификатами. На сколько мне известно, встроенных решений нет, необходимо использовать сторонние библиотеки. Например в библиотеке bouncycastle, есть такая возможность. http://www.bouncycastle.org/docs/docs1.5/o...eGenerator.html Cоветую посмотреть весь пакет org.bouncycastle.x509 C помощью сертификата ничего подписать нельзя, с помощью сертификат можно только проверить подпись. Подпись вырабатывается используя закрытый(прайвит) ключ ключевой пары, сертификат содержит только открытый. В составе j2se, есть классы для формирования подписи для байтовых массивов. Сморите класс java.security.Signature и другие классы данного пакета. Опять таки стандартных средств я не знаю, но все в тойже библиотеке bouncycastle, все в тоже пакете org.bouncycastle.x509 есть класс для формирования списков отзыва. |
|||
|
||||
| regen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 5.7.2006 Репутация: нет Всего: нет |
Не подкините ли ссылки на примеры использования bouncycastle для работы с сертификатами ?
|
|||
|
||||
| Alexandr87 |
|
||||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 9 Всего: 39 |
Вверху была ссылка на javadoc, имена функций говорят сами за себя. Вот небольшой примерчик набросал. В конструкторе генерируется пара ключей и самоподписанный сертификат на эту ключевую пару. (Своего рода корневой сертификат) Далее с помощью метода generateCertificate, вы можете пользуясь сгенерированной в конструкторе ключевой парой, создать новые сертификаты на передаваемый паблик кей. В методе main также есть код, демонстрирующий, как выработать подпись для массива байтов. Будут вопросы задавайте.
Это сообщение отредактировал(а) Alexandr87 - 27.4.2007, 20:05 |
||||
|
|||||
| regen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 5.7.2006 Репутация: нет Всего: нет |
Alexandr87, спасибо большое за пример. Всё работает замечательно.
Однако появился вопрос: сгенерированный сертификат находится в памяти. Как можно его экспортировать в файл? (стандартный файл сертификата, *.crt)? Пробовал через FileWriter записать - не получилось. //------------------------- Только что сам нашёл ответ на свой вопрос. Необходимо использовать PEMWriter. =) Кстати, в Вашем коде закралась ошибка. Информацию о субъекте надо писать через запятую, т.е.
А так, всё замечательно. Теперь только осталось разобраться мне с CRL и всё вообще хорошо будет. Спасибо вам! //------------------------- Это сообщение отредактировал(а) regen - 3.5.2007, 11:44 |
|||
|
||||
| cube |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 11.4.2007 Репутация: 2 Всего: 3 |
Я только-только разбираюсь в сертификатах, поэтому может говорю глупости, но просто не понимаю
У меня программа читает сертификат с файла например certificate.crt, мне нужно удостоверится что это мой сертификати дальше делать какие нибудь дейтсвия, например если не мой то выходить из программы, если мой - то работать дальше... или что-то вроде этого... Т.е. меня интересует проверка на подлинность... как? |
|||
|
||||
| regen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 5.7.2006 Репутация: нет Всего: нет |
Да. Проверка на подлинность. Методов как это делать много, так что выбор большой =)
|
|||
|
||||
| cube |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 11.4.2007 Репутация: 2 Всего: 3 |
Покажи пример, если нетрудно... |
|||
|
||||
| YuG |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 20.2.2006 Репутация: нет Всего: 4 |
2Alexandr87
Большое спасибо за библиотечку и за пример. |
|||
|
||||
| regen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 5.7.2006 Репутация: нет Всего: нет |
2 cube
Если есть секретный ключ (а он должен быть для проверки на подлинность сертификата), то можно подписать массив байтов этим ключом и проверить открытым, если подпись верна, то и открытый ключ верен (см. пример Alexandr87-а, там всё есть) |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 9 Всего: 39 |
YuG, пожалста.
cube, опишите задачи более конкретно, не совсем понятно, что вкладывается в определение проверка на подлинность. Аутентификация? |
|||
|
||||
| regen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 5.7.2006 Репутация: нет Всего: нет |
Alexandr87, я так понял что в словосочетание "проверка на подлинность" в данном контексте вкладывается что-то такое:
1) сертификат ведь как правило размещается в репозитории центра сертификации 2) владелец сертификата зачем-то берёт экземпляр сертификата не со своего носителя, а именно из репозитория ЦС 3) затем дабы быть уверенным что не была проведена атака "man in the midle" он проверяет на соответствие открытого ключа и закрытого Такое в принципе возможно, но странно и непонятно... Если хранится закрытый ключ (а он должен хранится), то сертификат и подавно должен. Иначе всё теряет смысл. Вообщем как-то так... Это сообщение отредактировал(а) regen - 31.7.2007, 09:31 |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 9 Всего: 39 |
regen, вобсчем, как-то вы это не так поняли
Э, не совсем понятно, как в данном случае может быть проведена атака "man in the midle" - сертификат с подписью доверенного CA (а это значит, что открытый ключ этого CA должен хранится у вас) и есть гарант того, что сертификат валиден. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |