Статус: Участник
Группы: Участники
Зарегистрирован: 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: Как сгенерировать ключ на сервере на котором нет иксов?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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)
| Причина: закрыл тему
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close