Статус: Участник
Группы: Участники
Зарегистрирован: 18.07.2018(UTC) Сообщений: 12 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Москва
|
Если судить по дебагу, у меня при поиске пустое хранилище (причём это в последней версии JCP). ![](/forum2/Themes/soclean/icon_file.gif) 2018-07-24_13-29-40.png (90kb) загружен 3 раз(а).![](/forum2/Themes/soclean/icon_file.gif) 2018-07-24_13-34-39.png (85kb) загружен 3 раз(а).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
У вас используется последняя версия jcp, keyStore - как HDImageStore и для контейнеров, и для хранилища сертификатов, выполняются операции как с сертификатами в хранилище, так и ключами. Какие-то действия после load выполняются, прежде чем перечислить алиасы? В отладке видно именно перед перечислением (aliases()), что список entries пустой (цепочка вызовов: load -> отладка -> aliases)? Инициализация в одном потоке? Ошибка, видимо, присутствует, но воспроизвести ее не удается. Если нет возможности передать хранилище сертификатов (может, проявилась какая-то ошибка с одним из сертификатов), то не могли бы попробовать воспроизвести с другим, которое можно передать (с кодом)? Отредактировано пользователем 24 июля 2018 г. 16:22:57(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 18.07.2018(UTC) Сообщений: 12 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Москва
|
afev, добрый день. Если честно, я хотел бы вернуться на старую версию JCP. Возможно, мне всё равно придётся обновиться до последней, но моя изначальная проблема была в том, что у нас есть метод, который шифрует отчёты для трёх КБ. Этот метод перестал работать для НБКИ, после того как нам прислали сертификат 2012 ГОСТа шифрования. Мы сделали предположение, что дело в OID или в каком-то другом параметре, который надо просто подправить для 2012 года. Я бы хотел продолжить двигаться в этом направлении.
Сейчас, после обновления JCP на локальном компьютере, мне кажется, я никуда не продвинулся. Так как на старой версии, я хотя бы формировал и отправлял отчёты, которые НБКИ, пока, не может расшифровать, но я их хотя бы отправлял)
Тем более, я уверен, что получу непредсказуемое поведения для других КБ, если обновлю JCP на сервере.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 18.07.2018(UTC) Сообщений: 12 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Москва
|
afev, подскажите, пожалуйста, как можно проверить наш метод с помощью тестового контейнера?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Автор: Kirill1499 ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) afev, подскажите, пожалуйста, как можно проверить наш метод с помощью тестового контейнера? Создайте тестовый контейнер в jcp или csp (https://cryptopro.ru/certsrv/) с теми параметрами, что, видимо, у сертификата nbki (вы шифруете в их адрес?), зашифруйте своим способом сообщение размером более 1Кб, приложите в архиве исходное сообщение, контейнер, зашифрованное сообщение, я попробую расшифровать с помощью csp/jcp. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.07.2018(UTC) Сообщений: 17 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Москва
|
Добрый день! Я создал тестовый пример, который в 2.038 работает, в 2.039 нет. Сертификаты перестают выгружаться из хранилища, когда мы инициализируем keyFactory. Такое ощущение, что в 2.039 по другому надо делать. Код:
package org.occ.rugateway.jcp;
import java.io.File;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.cert.X509Certificate;
import java.util.Enumeration;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.TrustManagerFactory;
import ru.CryptoPro.JCP.JCP;
public class TestCrypto {
public static void main(String[] args) throws Exception {
new TestCrypto().testRun();
}
private KeyManagerFactory gostKeyManagerFactory = null;
private TrustManagerFactory gostTrustManagerFactory = null;
private KeyStore gostCertStore;
String gostCertPath = "C:/tst_nbki_39";
public void testRun() throws Exception {
initGostCertStore();
initGostKeyFactory();
Thread.sleep(1000);
X509Certificate cert = getCertificate("butylkinnbki.cer");
System.out.println("Cert is " + cert);
}
private void initGostCertStore() throws Exception {
gostCertStore = KeyStore.getInstance(JCP.HD_STORE_NAME, JCP.PROVIDER_NAME);
logDebug("---gost cert store path (in directory): " + gostCertPath);
logDebug("---gost cert store certificates----");
gostCertStore.load(new FileInputStream(new File(gostCertPath)), "aa".toCharArray());
Enumeration<String> en = gostCertStore.aliases();
while (en.hasMoreElements()) {
logDebug("---alias: " + en.nextElement());
}
logDebug("------------------------------------");
}
private void initGostKeyFactory() throws Exception {
gostTrustManagerFactory = TrustManagerFactory.getInstance("GostX509");
gostTrustManagerFactory.init(gostCertStore);
gostKeyManagerFactory = KeyManagerFactory.getInstance("GostX509");
gostKeyManagerFactory.init(gostCertStore, null);
}
private X509Certificate getCertificate(String alias) throws Exception {
return (X509Certificate) gostCertStore.getCertificate(alias);
}
private void logDebug(String message) {
System.out.println(message);
}
}
Когда я комментарю initGostKeyFactory(); - то сертификат я вижу, если нет то такой ответ: Код:
---gost cert store path (in directory): C:/tst_nbki_39
---gost cert store certificates----
июл 26, 2018 4:21:13 PM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 2.0.39738
июл 26, 2018 4:21:13 PM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
---alias: le-13e5010d-8428-4e2f-88eb-df14b3f3bb8a
---alias: butylkinnbki.cer
---alias: оператор нбки - 2018.cer
---alias: cpcacer5
---alias: cpcacer4
---alias: cpcacer3
---alias: cpcacer2
---alias: cpcacer1
---alias: cpcacer0
------------------------------------
июл 26, 2018 4:21:13 PM ru.CryptoPro.ssl.cl_38 <init>
INFO: %% adding as private keys %%
Cert is null
Вот сейчас у нас в этом проблема, не можем получить сертификат из хранилища при переходе с 2.038 на 2.039, что можете подсказать?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Предполагаю, что это из-за keyStore.load(null, null), выполняемого в коде менеджера ключей при инициализации (непреднамеренно очишается список сертификатов, поскольку keyStore не HDImageStore, но еще и CertStore). Этот код был добавлен в связи с вводом подсчета попыток ввода неправильного пароля на контейнер. Проверю приведенный пример в связи с этим обстоятельством. Отредактировано пользователем 26 июля 2018 г. 18:48:36(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.07.2018(UTC) Сообщений: 17 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Москва
|
Автор: afev ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) Предполагаю, что это из-за keyStore.load(null, null), выполняемого в коде менеджера ключей при инициализации (непреднамеренно очишается список сертификатов, поскольку keyStore не HDImageStore, но еще и CertStore). Этот код был добавлен в связи с вводом подсчета попыток ввода неправильного пароля на контейнер. Проверю приведенный пример в связи с этим обстоятельством. А у меня keyStore.load(null, null) нет, я там явно файл стрим указываю на хранилище.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,005 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Это в модуле cpSSL, в менеджере ключей, создаваемом по алгоритму GostX509. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.07.2018(UTC) Сообщений: 17 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Москва
|
Проблема, что без инициализации 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)
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close