Статус: Новичок
Группы: Участники
Зарегистрирован: 12.10.2022(UTC) Сообщений: 5
|
Здравствуйте. Пытаюсь отправить тестовое сообщение в СМЭВ через messagetool-3.1.8 В качестве провйдера использую Криптопро JCP2 Создал контейнер, в нем ключ и сертификат, как на скриншоте: Snimok ehkrana 2022-10-12 v 14.11.18.png (177kb) загружен 14 раз(а).В конфигурационном файле config.properties необходимо указать алиас сертификата, алиас приватного ключа и пароль приватного ключа: Цитата:signer.certificate.alias=Alias signer.private.key.alias=Cont signer.private.key.password=password При попытке отправить сообщение получаю ошибку Цитата:окт 12, 2022 2:22:50 PM ru.CryptoPro.JCP.pref.JCPPref a INFO: user: 501 окт 12, 2022 2:22:50 PM ru.CryptoPro.JCP.tools.Starter <init> INFO: Loading JCP 2.0.41789 окт 12, 2022 2:22:50 PM ru.CryptoPro.JCP.tools.Starter <init> INFO: JCP has been loaded. [12.10.2022 14:22:51.349] WARN [main] - private key with alias: "Cont" not found [12.10.2022 14:22:51.353] DEBUG [main] - Инициализируем шаблон загрузки больших файлов [12.10.2022 14:22:51.462] INFO [main] - Создаем messageId [12.10.2022 14:22:51.463] DEBUG [main] - Добавляем MTOM приложения (0) [12.10.2022 14:22:51.463] DEBUG [main] - Подписываем файлы [12.10.2022 14:22:51.463] DEBUG [main] - Создаем приложения [12.10.2022 14:22:51.463] DEBUG [main] - Добавляем ftp приложения (0) [12.10.2022 14:22:51.464] DEBUG [main] - Генерируем дайджесты для приложений [12.10.2022 14:22:51.464] DEBUG [main] - Генерируем подписи для приложений [12.10.2022 14:22:51.464] DEBUG [main] - Генерируем приложения [12.10.2022 14:22:51.464] DEBUG [main] - Добавляем mtom приложения для реестрового запроса (0) [12.10.2022 14:22:51.464] DEBUG [main] - Генерируем приложения [12.10.2022 14:22:51.464] DEBUG [main] - Добавляем ftp приложения для реестрового запроса (0) [12.10.2022 14:22:51.464] DEBUG [main] - Генерируем приложения [12.10.2022 14:22:51.464] DEBUG [main] - Добавляем routing [12.10.2022 14:22:51.464] DEBUG [main] - Создаем сообщение [12.10.2022 14:22:51.465] DEBUG [main] - Посылаем сообщение [12.10.2022 14:22:51.601] ERROR [main] - Ошибка утилиты ru.voskhod.smev.client.api.types.exception.SMEVRuntimeException: private key or certificate not set at ru.voskhod.smev.client.api.signature.impl.SignerImpl.check(SignerImpl.java:158) at ru.voskhod.smev.client.api.signature.impl.SignerImpl.signXMLDSigDetached(SignerImpl.java:138) at ru.voskhod.smev.client.api.template.impl.v1_3.WSTemplateImpl.sign(WSTemplateImpl.java:710) at ru.voskhod.smev.client.api.template.impl.v1_3.WSTemplateImpl.sendRequest(WSTemplateImpl.java:534) at ru.voskhod.smev.client.api.template.impl.v1_3.WSTemplateImpl.send(WSTemplateImpl.java:512) at ru.voskhod.smev.client.api.template.impl.TemplateImpl.sendRequestMessage(TemplateImpl.java:213) at ru.voskhod.smev.client.toolset.message.Main.execute(Main.java:277) at ru.voskhod.smev.client.toolset.message.Main.main(Main.java:196) at ExampleSendMessage.main(ExampleSendMessage.java:24) Подскажите, как правильно указывать алиас приватного ключа и алиас сертификата?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Здравствуйте. В панели алиас ключевого контейнера (в коде обычно alias) - Cont. Что такое алиас сертификата - затрудняюсь сказать, т.к. обычно из ключевого контейнера с одним алиасом получают и ключ, и сертификат. Попробуйте создать тестовый ключевой контейнер, например, test, в тестовом УЦ и проверить с ним, будет ли сообщение вида "WARN [main] - private key with alias: "test" not found". P.S. Ключевой контейнер находится в ключевой папке того пользователя, под которым запускается приложение, пользователь имеет доступ к ключевому контейнеру? В примере ExampleSendMessage вы сами можете сделать и проверить, есть ли ключевой контейнер в наличии: Цитата: KeyStore keyStore = KeyStore.getInstance("HDImageStore"); keyStore.load(null, null); Enumeration<String> aliases = keyStore.aliases(); // печать aliases
Отредактировано пользователем 12 октября 2022 г. 12:40:19(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 12.10.2022(UTC) Сообщений: 5
|
Автор: Евгений Афанасьев P.S. Ключевой контейнер находится в ключевой папке того пользователя, под которым запускается приложение, пользователь имеет доступ к ключевому контейнеру? Действительно, запускал ControlPane.sh под root и в папку с ключами у меня доступа не было. Перезашел под собой, создал снова контейнер, в нем сертификат и ключ Snimok ehkrana 2022-10-12 v 15.40.55.png (196kb) загружен 10 раз(а).В папке /private/var/opt/cprocsp/keys/vasilijmoiseenko/Cont.000 ключи появились В настройках указал так Цитата:signer.provider=JCP2 signer.certificate.alias=Alias signer.private.key.alias=Cont signer.private.key.password=password signer.smev.certificate.store= Предыдущий WARN ушел, но исключение все равно бросается Цитата:окт 12, 2022 3:37:05 PM ru.CryptoPro.JCP.pref.JCPPref a INFO: user: 501 окт 12, 2022 3:37:05 PM ru.CryptoPro.JCP.tools.Starter <init> INFO: Loading JCP 2.0.41789 окт 12, 2022 3:37:05 PM ru.CryptoPro.JCP.tools.Starter <init> INFO: JCP has been loaded. [12.10.2022 15:37:06.106] DEBUG [main] - Инициализируем шаблон загрузки больших файлов [12.10.2022 15:37:06.217] INFO [main] - Создаем messageId [12.10.2022 15:37:06.218] DEBUG [main] - Добавляем MTOM приложения (0) [12.10.2022 15:37:06.219] DEBUG [main] - Подписываем файлы [12.10.2022 15:37:06.219] DEBUG [main] - Создаем приложения [12.10.2022 15:37:06.219] DEBUG [main] - Добавляем ftp приложения (0) [12.10.2022 15:37:06.219] DEBUG [main] - Генерируем дайджесты для приложений [12.10.2022 15:37:06.219] DEBUG [main] - Генерируем подписи для приложений [12.10.2022 15:37:06.219] DEBUG [main] - Генерируем приложения [12.10.2022 15:37:06.219] DEBUG [main] - Добавляем mtom приложения для реестрового запроса (0) [12.10.2022 15:37:06.219] DEBUG [main] - Генерируем приложения [12.10.2022 15:37:06.219] DEBUG [main] - Добавляем ftp приложения для реестрового запроса (0) [12.10.2022 15:37:06.219] DEBUG [main] - Генерируем приложения [12.10.2022 15:37:06.219] DEBUG [main] - Добавляем routing [12.10.2022 15:37:06.220] DEBUG [main] - Создаем сообщение [12.10.2022 15:37:06.220] DEBUG [main] - Посылаем сообщение [12.10.2022 15:37:06.351] ERROR [main] - Ошибка утилиты ru.voskhod.smev.client.api.types.exception.SMEVRuntimeException: private key or certificate not set at ru.voskhod.smev.client.api.signature.impl.SignerImpl.check(SignerImpl.java:158) at ru.voskhod.smev.client.api.signature.impl.SignerImpl.signXMLDSigDetached(SignerImpl.java:138) at ru.voskhod.smev.client.api.template.impl.v1_3.WSTemplateImpl.sign(WSTemplateImpl.java:710) at ru.voskhod.smev.client.api.template.impl.v1_3.WSTemplateImpl.sendRequest(WSTemplateImpl.java:534) at ru.voskhod.smev.client.api.template.impl.v1_3.WSTemplateImpl.send(WSTemplateImpl.java:512) at ru.voskhod.smev.client.api.template.impl.TemplateImpl.sendRequestMessage(TemplateImpl.java:213) at ru.voskhod.smev.client.toolset.message.Main.execute(Main.java:277) at ru.voskhod.smev.client.toolset.message.Main.main(Main.java:196) at ExampleSendMessage.main(ExampleSendMessage.java:26)
Process finished with exit code 1 Правильно ли я понимаю, что сейчас дело в сертификате? Что с ним не так? UPDATE! Действительно не находит сертификат по алиасу, возвращается null в этой строчке X509Certificate certificate = (X509Certificate)this.ks.getCertificate(alias); Но почему он его не может найти в HDImageStore по алиасу не понимаю пока. Может у кого то есть мысли? Отредактировано пользователем 12 октября 2022 г. 15:44:21(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Автор: vasiliymoiseenko Действительно не находит сертификат по алиасу, возвращается null в этой строчке X509Certificate certificate = (X509Certificate)this.ks.getCertificate(alias);
А PrivateKey находит с помощью getKey? В панели на картинке у вас контейнер с сертификатом. Контейнер без сертификата можно создать, но только с помощью, например, csptest. В панели у него будет только "Ключ". |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 12.10.2022(UTC) Сообщений: 5
|
Решил проблему следующим образом, почти как тут: https://www.cryptopro.ru....aspx?g=posts&t=93621. Создал новый контрейнер с ключами и сертификатом через ComLine, сертификат сразу экспортировал в файл в формате base64 2. Удостоверил сертификат в https://www.cryptopro.ru/certsrv/, сохранил цепочку в p7b 3. Импортировал сертификат обратно в контейнер через keytool Не знаю как, но это помогло, уже другое исключение выскакивает) Отсюда вопрос, обязательно ли сертификат должен быть удовстоверен в УЦ? Или с тем что я сгенерировал тоже можно работать? P.S. Пока еще плохо все понимаю, повторно изучаю документацию, извините если глупые вопросы задаю) Отредактировано пользователем 14 октября 2022 г. 7:29:42(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
1. Проблема с getCertificate(alias) не ясна, т.к. метод вернет null, только если А) контейнера с таким алиасом не существует, Б) в контейнере нет сертификата (например, контейнер без сертификата можно создать в csptest) или для данного типа ключа нет сертификата. В случае, если сертификат/цепочка в контейнере есть, getCertificate вернет сертификат подписи. 2. Контейнеры, созданные с помощью JCA, например, с использованием ComLine, всегда содержат как минимум один сертификат (самоподисанный). Если установить в контейнер p7b, то в нем уже будет цепочка сертификатов. В каких-то случаях требуется именно она (например, keytool может установить в контейнер только p7b). 3. Стороннее ПО всегда имеет свои особенности. "обязательно ли сертификат должен быть удовстоверен в УЦ?" - вряд ли это имеет значение, но может быть важно при операциях с цепочкой сертификатов (например, в ПО возможна проверка цепочки сертификатов). К getCertificate(alias) отношения не имеет, т.к. если в контейнере есть хотя бы один сертификат, он будет извлечен. Но для СМЭВ в дальнейшем может быть важно, что у вас за сертификат и каким УЦ он выпущен. Отредактировано пользователем 14 октября 2022 г. 9:39:11(UTC)
| Причина: Не указана |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close