Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline irina-chebakova  
#1 Оставлено : 16 июля 2025 г. 17:07:58(UTC)
irina-chebakova

Статус: Активный участник

Группы: Участники
Зарегистрирован: 16.08.2011(UTC)
Сообщений: 96

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 2 раз в 2 постах
Здравствуйте!

Код выполняется под Linux, используется JCP:

String keyName = "test1";
String container = "\\\\.\\HDIMAGE\\" + keyName;
JCP jcp = new JCP();
Security.addProvider(jcp);
JCPInit.initProviders(true);
KeyPairGenerator keyGen = KeyPairGenerator.getInstance(JCP.GOST_EL_2012_256_NAME, JCP.PROVIDER_NAME);
AlgIdSpec params = new NameAlgIdSpec(AlgIdSpec.OID_PARAMS_SIG_2012_256, container);
keyGen.initialize(params);
KeyPair keyPair = keyGen.generateKeyPair();

Не могу найти закрытый ключ в каталоге /var/opt/cprocsp/<user>
В руководстве программиста указано, что если не указывать контейнер, то создаётся эфемерный ключ.
Контейнер указан, но его не найти на диске.
Также прочитано про keyStore.setKeyEntry(keyName, privateKey, null, new Certificate[] {certificate}); но сертификата ещё нет, его получение занимает время, программа будет закрыта, ключ утерян.
Как правильно указать, куда писать закрытый ключ, чтобы потом его найти и поместить с сертификатом в хранилище?
Offline Евгений Афанасьев  
#2 Оставлено : 16 июля 2025 г. 19:47:50(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,032
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 729 раз в 687 постах
Здравствуйте.
Этот код создает ключ в памяти, его надо сохранить с помощью KeyStore#setKeyEntry.
Функционал, где ключ может быть создан в контейнере при генерации, поддерживается только в Java CSP.
При сохранении нужен сертификат, подойдет самоподписанный, пример его создания примерно
Код:

GostCertificateRequest req = new GostCertificateRequest();
req.init(JCP.GOST_DH_2012_256_NAME, false); // алгоритм ключа из KeyPairGenerator
byte[] encodedSelfSignedCert = req.getEncodedSelfCert(keyPair, "CN=" + name, null); // ключевая пара KeyPair и имя
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate selfSigedCert = cf.generateCertificate(new ByteArrayInputStream(encodedSelfSignedCert));
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
irina-chebakova оставлено 18.07.2025(UTC)
Offline irina-chebakova  
#3 Оставлено : 17 июля 2025 г. 9:58:22(UTC)
irina-chebakova

Статус: Активный участник

Группы: Участники
Зарегистрирован: 16.08.2011(UTC)
Сообщений: 96

Сказал(а) «Спасибо»: 7 раз
Поблагодарили: 2 раз в 2 постах
Спасибо!

Ещё не могли бы подсказать, как осуществляется лицензирование?
Например есть программа генерации запроса, в ней в classpath включены библиотеки JCP.
Сейчас, пока пробный период использования JCP не истёк, программа работает.
Но, например:
- период истёк
- или программа запущена на компьютере без JCP, но библиотеки при сборке включены в jar.
Как в этом случае распознаётся лицензия JCP?
В руководстве указано, что JCP не требует установки.
С JCSP, использующем CSP под Win понятно, что используется установленная версия CSP, используются библиотеки из Win и они видят, что есть лицензия. А вот в описанном выше сценарии, непонятно, как обеспечить видимость лицензии.
Offline Евгений Афанасьев  
#4 Оставлено : 17 июля 2025 г. 17:14:54(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,032
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 729 раз в 687 постах
Если используется версия JCP для Java 11+, где лицензия вводится под тем пользователем, под которым работает приложение, то можно в коде написать
Код:

License license = new License(null, null, “XXXXX-….”); // лицензия без имени компании
int result = license.verifyLicense(); // можно проверить
license.store();
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
irina-chebakova оставлено 18.07.2025(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.