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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline asd09  
#1 Оставлено : 8 апреля 2013 г. 13:02:32(UTC)
asd09

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

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

Сказал(а) «Спасибо»: 2 раз
Добрый день.
Пытаюсь вызвать cryptcp для расшифровки файлов программно (java).

Код:

Runtime rt = Runtime.getRuntime();
String command = "/opt/cprocsp/bin/amd64/./cryptcp -decr -dn \"E=test@mail.ru\" -nochain /temp/123.pem /temp/decr.txt"
try {
    Process proc = rt.exec(command);
    String line;
    BufferedReader in = new BufferedReader( new InputStreamReader(proc.getInputStream()));
    while ((line = in.readLine()) != null) {
        System.out.println(line);
        log.info(line);
    }
} catch (Exception e) {
    throw new RuntimeException(e);
}


Но при таком вызове, cryptcp почему-то не находит сертификат.

Цитата:

CryptCP 3.33 (c) "Crypto-Pro", 2002-2010.
Command prompt Utility for data protection.
-decr - Decrypts data from a message.
Error: No certificates found. (0x2000012D)
[ErrorCode: 0x2000012d]


Если я же выполняю эту команду в консоли - все работает на ура. Запускается все под одним и тем же пользователем в centos 6.

Заранее спасибо за помощь.

Отредактировано пользователем 8 апреля 2013 г. 13:06:56(UTC)  | Причина: Не указана

Offline cross  
#2 Оставлено : 9 апреля 2013 г. 15:37:41(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
cryptcp и java процесс в котором зовется cryptcp под одинаковыми пользователями запускается?
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline asd09  
#3 Оставлено : 9 апреля 2013 г. 15:43:50(UTC)
asd09

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

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

Сказал(а) «Спасибо»: 2 раз
да, я написал это выше.
Это и вводит в ступор. Может быть переменные окружения какие-то нужно еще передавать, типа пути до хранилища?

выполнил в консоли: env | grep csp
Ничего полезного не нашел

NLSPATH=/opt/cprocsp/share/locale/%L/LC_MESSAGES/%N
PWD=/opt/cprocsp/bin/amd64

Отредактировано пользователем 9 апреля 2013 г. 15:46:11(UTC)  | Причина: Не указана

Offline cross  
#4 Оставлено : 9 апреля 2013 г. 15:59:21(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
выполните /opt/cprocsp/bin/<arch>/certmgr -list из консоли и из java процесса рядом с cryptcp и приложите вывод обоих команд.
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline asd09  
#5 Оставлено : 10 апреля 2013 г. 12:24:27(UTC)
asd09

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

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

Сказал(а) «Спасибо»: 2 раз
Из консоли:

[root@comp1 ~]# /opt/cprocsp/bin/amd64/certmgr -list
Certmgr 0.9 prerelease (c) "CryptoPro", 2007-2010.
program for managing certificate(CRL) and stores

=============================================================================
1-------
Issuer : E=cpca@cryptopro.ru, C=RU, L=������, O=��� ������-���, CN=�� KP��TO-�PO
Subject : E=OMikhalchenko@migcredit.ru, C=RU, L=������, O="��� ""���������""", CN=����������� ����� ������������, T=������� ���������
Serial : 0x140701000B0001F5E915
PrivateKey Link: Yes. Container: HDIMAGE\\RaUser-c.000\8F2F
=============================================================================

[ErrorCode: 0x00000000]
[root@migc-reesters ~]#


Из java:

/opt/cprocsp/bin/amd64/./certmgr -list
Certmgr 0.9 prerelease (c) "CryptoPro", 2007-2010.
program for managing certificate(CRL) and stores

=============================================================================
1-------
Issuer : E=cpca@cryptopro.ru, C=RU, L=������, O=��� ������-���, CN=�� KP��TO-�PO
Subject : E=OMikhalchenko@migcredit.ru, C=RU, L=������, O="��� ""���������""", CN=����������� ����� ������������, T=������� ���������
Serial : 0x140701000B0001F5E915
PrivateKey Link: Yes. Container: HDIMAGE\\RaUser-c.000\8F2F
=============================================================================

[ErrorCode: 0x00000000]
/opt/cprocsp/bin/amd64/./cryptcp -decr -dn "E=OMikhalchenko@migcredit.ru" -nochain /opt/apache-karaf-2.3.1/10032013.txt.pem.pem /opt/apache-karaf-2.3.1/10032013.txt.pem.pem.sig
CryptCP 3.33 (c) "Crypto-Pro", 2002-2010.
Command prompt Utility for data protection.
-decr - Decrypts data from a message.
Error: No certificates found. (0x2000012D)
[ErrorCode: 0x2000012d]

код:

Код:

        String dir = System.getProperty("user.dir");
        String filenameDecrypted = decrFile.getName() + ".sig";
        Runtime rt = Runtime.getRuntime();
        String comm2="/opt/cprocsp/bin/amd64/./certmgr -list";
        System.out.println(comm2);
        log.info(comm2);
        try {
            Process proc = rt.exec(comm2);
            String line;
            BufferedReader in = new BufferedReader( new InputStreamReader(proc.getInputStream()));
            while ((line = in.readLine()) != null) {
                System.out.println(line);
                log.info(line);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        String command = "/opt/cprocsp/bin/amd64/./cryptcp -decr -dn \"E=OMikhalchenko@migcredit.ru\" -nochain " + decrFile.getAbsolutePath() + " " + dir + "/" + filenameDecrypted;
        System.out.println(command);
        log.info(command);
        try {
            Process proc = rt.exec(command);
            String line;
            BufferedReader in = new BufferedReader( new InputStreamReader(proc.getInputStream()));
            while ((line = in.readLine()) != null) {
                System.out.println(line);
                log.info(line);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

Offline asd09  
#6 Оставлено : 10 апреля 2013 г. 12:37:53(UTC)
asd09

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

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

Сказал(а) «Спасибо»: 2 раз
Как-то совсем странно, что первая команда показывает нам сертификат, а вторая - уже его не видит.
Offline cross  
#7 Оставлено : 10 апреля 2013 г. 13:13:55(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Тут скорее всего тонкости в передачи аргументов. Попробуйте вместо -dn "E=..." -dn "C=RU".
Еще как вариант, можно звать не напрямую cryptcp а bash скрипт который сначало распечатает переданные параметры + env и потом позовет cryptcp.

Отредактировано пользователем 10 апреля 2013 г. 13:17:31(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline asd09  
#8 Оставлено : 10 апреля 2013 г. 13:33:03(UTC)
asd09

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

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

Сказал(а) «Спасибо»: 2 раз
попробовал, но результат тот же. Хотя этот вариант и не подходит, т.к. в хранилище будет несколько различных сертификатов с С=RU
/opt/cprocsp/bin/amd64/./cryptcp -decr -dn "C=RU" -nochain /tmp/10032013.txt.pem.pem /tmp/10032013.txt.pem.pem.sig
CryptCP 3.33 (c) "Crypto-Pro", 2002-2010.
Command prompt Utility for data protection.
-decr - Decrypts data from a message.
Error: No certificates found. (0x2000012D)
[ErrorCode: 0x2000012d]
Offline cross  
#9 Оставлено : 10 апреля 2013 г. 15:37:24(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Я оказался прав. Все дело в передаче параметров. А точнее в передаче ковычек.
В вашем примере не работает ибо кавычки передадутся напрямую в cryptcp и нет shell что бы их обработать.
А вот так следует передавать параметры для вызова cryptcp что бы работало.

Код:

String[] cmd = {"/opt/cprocsp/bin/amd64/cryptcp", "-decr", "-dn", "CN=CadesTest Gost User", "-nochain", "/tmp/out", "/tmp/out1"};
Process proc = rt.exec(cmd);
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
thanks 1 пользователь поблагодарил Анатолий Беляев за этот пост.
asd09 оставлено 11.04.2013(UTC)
Offline asd09  
#10 Оставлено : 11 апреля 2013 г. 8:17:59(UTC)
asd09

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

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

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