Статус: Новичок
Группы: Участники
Зарегистрирован: 01.03.2010(UTC) Сообщений: 9
|
Здравствуйте! Не получается создать цепочку из сертификатов, делаю все по аналогии с данными примерами, только не делаю запросы центру сертификации на создание сертификата. падая, выдает:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
вероятно это связано с тем, что я ни как не передаю серетный ключ корневого сертификата, а как это сделать - ума не приложу Подскажите, пожалуйста, как можно от этого избавиться
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.10.2008(UTC) Сообщений: 181
|
Секретный ключ для построения цепочки сертификатов не нужен. Присылайте сертификаты на support@cryptopro.ru
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.03.2010(UTC) Сообщений: 9
|
Из вашего ответа могу сделать вывод, что построение цепочки сертификатов и создание несамоподписанного сертификата - разные вещи. тогда как создать такой сертификат имея корневой?
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.10.2008(UTC) Сообщений: 181
|
Абсолютно разные вещи. Построение цепочки CertPathBuilder сертификатов не создает, а ищет для пользовательского сертификата в хранилище сертификат центра, которым он подписан, а для центра ищет сертификат его центра и так до корневого. Потом эту цепочку можно проверить классом CertPathValidator. Для создания сертификата можно использовать класс GostCertificateRequest.
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.03.2010(UTC) Сообщений: 9
|
Тогда такой вопрос - как следует инициализировать класс GostCertificateRequest, чтобы он сгенерировал сертификат, подписанный имеющимся самоподписанным?
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.10.2008(UTC) Сообщений: 181
|
Инициализация обычная Код:/**
* Инициализация основных полей создаваемого запроса.
*
* @param keyAlgName строкое представление алгоритма закрытого ключа,
* соответствующего открытому
* @param isServer если true, то будет создан сертификат аутентификации сервера,
* иначе - клиента
* @throws IOException ошибка инициализации.
*/
public void init(String keyAlgName, boolean isServer) throws IOException {
Потом вызываете Код:/**
* Генерация сертификата открытого ключа субъекта с именем subject, подписанного
* закрытым ключом издателя issuer.
*
* @param privKey закрытый ключ издателя, на котором осуществляется подпись
* сертификата (ключ должен являться закрытым ключом подписи или обмена
* алгоритма ГОСТ Р 34.10-2001).
* @param pubKey открытый ключ субъекта, для которого генерится сертификат (ключ
* должен соответствовать закрытому ключу подписи или обмена алгоритма ГОСТ Р
* 34.10-2001).
* @param subject имя субъекта в виде строки, соответвующей стандарту X.500
* (например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").
* @param issuer имя издателя в виде строки, соответвующей стандарту X.500
* (например, "CN=Ivanov, OU=Security, O=CryptoPro, C=RU").
* @param algorithm имя алгоритма подписи. Если null то
* "GOST3411withGOST3410EL"
* @return сертификат возвращается в DER-кодировке в виде байтового массива.
* @throws IOException исключение возникает в случае ошибки при кодировании
* имени субъекта (возможно, строковое представление имени не соответвует
* стандарту X.500).
* @throws InvalidKeyException исключение возникает в случае, когда открытый
* ключ не соответствует закрытому ключу подписи или обмена алгоритма ГОСТ Р
* 34.10-2001.
* @throws SignatureException исключение возникает в случае ошибки при создании
* подписи.
* @throws NoSuchAlgorithmException неверное имя алгоритма в privKey
*/
public byte[] generateCert(PrivateKey privKey, PublicKey pubKey, String subject,
String issuer, String algorithm) throws
InvalidKeyException, IOException, SignatureException,
NoSuchAlgorithmException {
Использовать только для тестирования.
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.03.2010(UTC) Сообщений: 9
|
Большое Вам спасибо!!!!!!!
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.03.2010(UTC) Сообщений: 9
|
Относительно моего первого вопроса ситуация осталась не решенной: использую ваш пример из класса Certificate и функцию certificateChain. сертификаты генерирую сама подписывая их друг дружкой последовательно.
Падает на строке // построение цепочки сертификатов final PKIXCertPathBuilderResult res = (PKIXCertPathBuilderResult) cpb.build(params);
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.10.2008(UTC) Сообщений: 181
|
Какой Exception? Где проявляется? Стек распечатайте.
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.03.2010(UTC) Сообщений: 9
|
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174) at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238) at ru.CryptoPro.reprov.CPCertPathBuilder.engineBuild(Unknown Source) at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238) ...
падает на final PKIXCertPathBuilderResult res = (PKIXCertPathBuilderResult) cpb.build(params);
код из вашего примера взят. другой ваши пример из класса OCSPValidateCert также не срабатывает на генерируемых мной сертификатах.
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close