logo
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

3 Страницы<123
Опции
К последнему сообщению К первому непрочитанному
Offline Евгений Афанасьев  
#41 Оставлено : 27 июля 2018 г. 8:13:14(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 12 раз
Поблагодарили: 299 раз в 296 постах
Автор: Denis1499 Перейти к цитате
Проблема, что без инициализации gostKeyManagerFactory я не могу ходить во внешний сервис по https, тк мне нужен sslContext.

Если вначале поднимать кей менеджер, напр.

initGostKeyFactory();
initGostCertStore();

то сертификат я вижу, но не могу создать sslContext.

Если, все таки вначале инициализировать gostCertStore и вытянуть из него сертификаты и сохранить отдельно (напр. в Map),
то я могу шифровать, но подключиться к внешнему ресурсу не могу.
Получаю исключение:

Цитата:

javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException: ru.CryptoPro.ssl.pc_4.cl_5: PKIX path validation failed: java.security.GeneralSecurityException: Online certificate verification enabled but com.sun.security.enableCRLDP = false (Sun), com.ibm.security.enableCRLDP = false (Ibm)

Да, KeyManager не проинициализируется без keyStore (с пустым).
На счет ошибки "Online certificate verification enabled" - необходимо либо задать -Dcom.sun.security.enableCRLDP=true, либо отключить проверку цепочки в панели JCP на вкладке "Настройки сервера" - "Проверять сертификаты цепочки на отзыв".

С текущей сборкой JCP, к сожалению, без изменений в коде (разделения на HDImageStore и CertStore) не обойтись, или придется сделать свой менеджер ключей (чтобы избежать keyStore.load()). Постараемся это исправить в следующей сборке (изменения делались в связи с добавлением счетчика ввода пароля).

Отредактировано пользователем 27 июля 2018 г. 8:15:26(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Denis1499  
#42 Оставлено : 27 июля 2018 г. 8:34:46(UTC)
Denis1499

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

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

Отбой пока, я снял галочку в jcp панели.
Удалось зашифровать в новой версии и отправить.

Позже отпишу, какой результат шифрования.
Offline Denis1499  
#43 Оставлено : 31 июля 2018 г. 13:54:59(UTC)
Denis1499

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

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

Добрый день!

Создал я у вас тестовый контейнер, взял в нем сертификат, зашифровал файл,
потом утилитой csptest удалось успешно расшифровать.

Не могли бы вы глянуть верно ли мы все сделали, напр. выпустили сертификат и ключ дл 2012 ГОСТа?

test_cont.zip (7kb) загружен 2 раз(а).

В файле зашифрованый файл *.enc, сернтификат и хранилище с private key.
Offline Евгений Афанасьев  
#44 Оставлено : 3 августа 2018 г. 8:52:03(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 12 раз
Поблагодарили: 299 раз в 296 постах
Добрый день.
1. С помощью EnvelopedSignature (из CAdES.jar) расшифровался архив успешно (последний 2.0) - 2 файла:
Код:

byte[] bin = Array.readFile("licuha.txt.zip.enc");
KeyStore keyStore = KeyStore.getInstance(JCP.HD_STORE_NAME, JCP.PROVIDER_NAME);

keyStore.load(null, null);
PrivateKey prk = (PrivateKey) keyStore.getKey("8c3c5e39-2a09-4602-b405-2e58eb18a604", null);

509Certificate cert = (X509Certificate) keyStore.getCertificate("8c3c5e39-2a09-4602-b405-2e58eb18a604");

EnvelopedSignature envelopedSignature = new EnvelopedSignature(new ByteArrayInputStream(bin));
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

envelopedSignature.decrypt(cert, prk, outputStream);
utputStream.close();

byte[] decrypted = outputStream.toByteArray();
Array.writeFile("licuha.txt.zip", decrypted);

Код:

licuha.txt.zip ->  licuha.txt licuha.txt.sig

Поверю еще иначе.

2. Методом DecryptPKCS7 в PKCS7EnvEphTransport (samples-sources.jar, пакет CMS_samples) тоже расшифровалось сообщение - получил архив.

3. Установил сертификат Denis с привязкой к ключу в My, выполнил команду:
Код:

>"C:\Program Files\Crypto Pro\CSP\csptest" -lowenc -decrypt -in licuha.txt.zip.enc -out out.zip -my Denis

Получил архив.

По поводу load() в cpSSL, "очищающего" список сертификатов в HDImageStore в связи с тем, что тот используется и как хранилище сертификатов, и хранилище контейнеров и передается в spSSL, после чего продолжает использоваться (выполняются операции с сертификатами): в cpSSL сделали load только для контейнеров, даже если HDImageStore используется, в том числе, для сертификатов. Изменение будет в следующем релизе.

Отредактировано пользователем 3 августа 2018 г. 9:21:38(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline Denis1499  
#45 Оставлено : 3 августа 2018 г. 12:34:05(UTC)
Denis1499

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

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

Спасибо!!

Для реализации мы использовали пример из CMSSignAndEncrypt

попробую переписать все на PKCS7EnvEphTransport
Offline Евгений Афанасьев  
#46 Оставлено : 3 августа 2018 г. 14:38:01(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 12 раз
Поблагодарили: 299 раз в 296 постах
Напишите, с какой версией jcp проверить, проверю с другой аналогично.
Техническую поддержку оказываем тут
Наша база знаний
Offline Denis1499  
#47 Оставлено : 3 августа 2018 г. 15:12:32(UTC)
Denis1499

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

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

Тестовый контейнер я создавал в 2.039
Offline BaalPr  
#48 Оставлено : 9 октября 2018 г. 11:09:21(UTC)
BaalPr

Статус: Новичок

Группы: Участники
Зарегистрирован: 03.10.2018(UTC)
Сообщений: 3
Российская Федерация

Добрый день
Возникла такая же проблема, как и у создателя данной темы.
Отправляем зашифрованное сообщение в НБКИ, в ответ приходит, что не могут расшифровать.
Поскольку проблематично все время отправлять на боевой сервер данные сообщения, решили проверить криптоАРМ, но файлы, которые мы шифруем алгоритмом из примеров, криптоАРМ не может расшифровать так же.
Для шифрования и дешифрования нашим кодом использовали пример jcp 2.0.39014 из samples-sources\CMS_samples\PKCS7EnvEphTransport.java практически полный копи-паст.
При расшифровании нашим кодом все отрабатывает корректно. И наш зашифрованный файл и файл зашифрованный АРМом расшифровываются правильно.
Долго рылся в примерах, пришел к выводу, что в методе wrap нужно вместо этого
// Генерация эфемерной пары.
KeyPairGenerator kgp = KeyPairGenerator.getInstance(
JCP.GOST_EL_DH_EPH_NAME,
CRYPT_PROVIDER_NAME
);
передавать алгоритм соответствующий ключу recipientKey
т.е. вот так
final String keyAlgName = recipientKey.getAlgorithm();
String keyPairAlgName;
if (keyAlgName.equalsIgnoreCase(KEY_ALG_NAME_2012_256) ||
keyAlgName.equalsIgnoreCase(KEY_EL_ALG_NAME_2012_256)) {
keyPairAlgName = JCP.GOST_EPH_DH_2012_256_NAME;
} else if (keyAlgName.equalsIgnoreCase(KEY_ALG_NAME_2012_512) ||
keyAlgName.equalsIgnoreCase(KEY_EL_ALG_NAME_2012_512)) {
keyPairAlgName = JCP.GOST_EPH_DH_2012_512_NAME;
} else {
keyPairAlgName = JCP.GOST_EL_DH_EPH_NAME;
}

// Генерация эфемерной пары.
KeyPairGenerator kgp = KeyPairGenerator.getInstance(keyPairAlgName);

Правильно ли это?

Тем не менее, это не помогло, расшифровка криптоАРМом так же дает ошибку.

Error.jpg (67kb) загружен 2 раз(а).

Шифровали криптоАРМом так:
Encode1.jpg (69kb) загружен 0 раз(а). Encode2.jpg (53kb) загружен 0 раз(а).


Мне нужно понять, в чем разница между шифрованием, представленным в примере, и АРМом? Т.к. очевидно, что разница есть.
Версия используемого jcp 2.0.39014
Как корректно зашифровать на сертифкате ГОСТ 2012? На 2001-м госте работает, на 2012-ом нет.


Offline Евгений Афанасьев  
#49 Оставлено : 9 октября 2018 г. 11:36:27(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 12 раз
Поблагодарили: 299 раз в 296 постах
Здравствуйте.
Попробуйте использовать последнюю сборку jcp, скорее всего, проблема была в передаче параметров шифрования и она исправлена (для сообщений размером > 1Кб).
Техническую поддержку оказываем тут
Наша база знаний
Offline BaalPr  
#50 Оставлено : 10 октября 2018 г. 9:19:57(UTC)
BaalPr

Статус: Новичок

Группы: Участники
Зарегистрирован: 03.10.2018(UTC)
Сообщений: 3
Российская Федерация

Добрый день
Обновил версию jcp до 2.0.39893.
Взял пример из samples-sources\CMS_samples\PKCS7EnvEphTransport.java
Там немного изменился код, по сравнению с сертифицированной версией.
Но это так же не помогло АРМу расшифровать сообщение.
Можете попробовать у себя, используя данный код, зашифровать сообщение, а расшифровать его АРМом?
Offline Евгений Афанасьев  
#51 Оставлено : 10 октября 2018 г. 9:31:22(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 12 раз
Поблагодарили: 299 раз в 296 постах
Здравствуйте.
Параметры шифрования - CryptParamsSpec.OID_Gost28147_89_Rosstandart_TC26_Z_ParamSet?
Приведите, пожалуйста, свой пример для анализа и, если не трудно, создайте с помощью тестового ключевого контейнера (выпустить его можно тут - http://cryptopro.ru/certsrv/) сообщение и прикрепите архив с ним и ключевым контейнером для расшифровки, для воспроизведения проблемы.
Схожие проблемы:
https://www.cryptopro.ru...aspx?g=posts&t=13422
https://www.cryptopro.ru...aspx?g=posts&t=13409

Отредактировано пользователем 10 октября 2018 г. 9:32:40(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
Offline BaalPr  
#52 Оставлено : 12 октября 2018 г. 12:13:00(UTC)
BaalPr

Статус: Новичок

Группы: Участники
Зарегистрирован: 03.10.2018(UTC)
Сообщений: 3
Российская Федерация

Добрый день
Действительно помогло.
В примерах samples-sources\CMS_samples\PKCS7EnvEphTransport.java есть метод wrap
там строки:

IvParameterSpec iv = new IvParameterSpec(syncro);
OID oid = CryptParamsSpec.OID_Crypt_VerbaO;

// Выработка ключа согласования.

Мы заменили этот параметр на OID oid = CryptParamsSpec.OID_Gost28147_89_Rosstandart_TC26_Z_ParamSet;

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