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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline chur  
#1 Оставлено : 17 января 2014 г. 21:22:00(UTC)
chur

Статус: Участник

Группы: Участники
Зарегистрирован: 17.01.2014(UTC)
Сообщений: 19
Российская Федерация
Откуда: Saint-Petersburg

Есть задача: необходимо сгенерировать ключевую пару и запрос на подпись на Linux-сервере, где нет UI.

Исполняю следующий код:
Код:

        KeyPairGenerator kg = KeyPairGenerator.getInstance("GOST3410", "JCP");
        SecureRandom random = SecureRandom.getInstance("CPRandom");
        kg.initialize(null, random);
        pair = kg.generateKeyPair();


Получаю ошибку:
Цитата:

2014-01-17 17:10:42.681 [ERROR] (main:KeyGenerator)
java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
at javax.swing.JFrame.<init>(JFrame.java:224)
at ru.CryptoPro.JCP.Random.BioRandomFrame.<init>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at java.lang.Class.newInstance(Class.java:374)
at ru.CryptoPro.JCP.Random.AbstractBioRandom.a(Unknown Source)
at ru.CryptoPro.JCP.Random.AbstractBioRandom.getBioRandomObject(Unknown Source)
at ru.CryptoPro.JCP.Key.GostKeyPairGenerator.generateKeyPair(Unknown Source)
....


Могучая документация подсказывает:
Цитата:

Для переключения между типами датчика (консольный, графический) необходимо запустить соответствующий класс:

ru.CryptoPro.JCP.Random.BioRandomConsole - консольный биодатчик
ru.CryptoPro.JCP.Random.BioRandomFrame - графический биодатчик


Вопрос 1: Что значит "запустить" класс?
Вопрос 2: Как сгенерировать ключ на сервере на котором нет иксов?
Offline chur  
#2 Оставлено : 17 января 2014 г. 21:37:13(UTC)
chur

Статус: Участник

Группы: Участники
Зарегистрирован: 17.01.2014(UTC)
Сообщений: 19
Российская Федерация
Откуда: Saint-Petersburg

Прикольно - запустить у вас означает выполнить команду
java ru.CryptoPro.JCP.Random.BioRandomConsole

Только вот работает эта команда исключительно для рута, а под регулярным пользователем не работает.

UPDATE:
Не правильно написал: команду надо выполнять под пользователем, под которым ставили JCP или под пользователем имеющим право на запись в системный реестр (windows), в /etc (*NIX) или в каталог указанный через java.util.prefs.systemRoot при установке.

Ну ок, после выполнения под рутом, ваш "код" пытается что-то писать в системные Java Prefs:
Цитата:

янв 17, 2014 5:27:48 PM java.util.prefs.FileSystemPreferences syncWorld
WARNING: Couldn't flush system prefs: java.util.prefs.BackingStoreException: /etc/.java/.systemPrefs/ru/CryptoPro/JCP/tools/CPVerify create failed.


UPDATE:
Если ставить JCP на *NIX-сервер, то лучше пакет ставить так, чтобы системные свойства JVM сохранялись бы в какое-то явно определенное место, которое будет доступно на запись+чтение пользователю под которым работает JVM:
1. Ставим JCP установив Java system property в java.util.prefs.systemRoot=my_path
2. Стартуем любой Java-процесс который использует функционал JCP установив переменную в java.util.prefs.systemRoot=my_path

Отредактировано пользователем 20 января 2014 г. 17:03:08(UTC)  | Причина: закрыл тему

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.