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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline KrillI  
#1 Оставлено : 9 ноября 2022 г. 13:45:01(UTC)
KrillI

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

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

Добрый день.

Долгое время пользовались 1 REST сервисом. Авторизация осуществлялась с использованием сертификата (закрытый ключ). До недавнего времени сертификаты были стандартными RSA, но в скором времени они переходят на стандарт ГОСТ в части сертификатов, используемых при HTTPS взаимодействии.

Клиент для сервиса написан на JAVA, точнее appache-http-client. C RSA сертами проблем с запросами не было. Однако с ГОСТовскими появились. Я попробовал несколько вариантов реализаций, которые смог найти положительного результата добиться не вышло.

Сразу оговорюсь, что не являюсь специалистом в вопросах работы с сертификатами, поэтому могу не понимать каких то базовых вещей. В связи с этим есть ряд вопросов.

У меня от сервиса на данный момент есть ключевое хранилище (формат pfx) внутри которого лежит цепочка сертификатов, которой по идее должно быть достаточно для авторизации. + Дополнительно есть та же ключевая информация, но в виде КриптоПРОшного формата (папка xxxx.000) c 6 файлами *.key.


Будет ли достаточно этого хранилища (pfx) для реализации HTTPS запроса с авторизацией по серту? Нужно ли доставлять дополнительное ПО (КриптоПРО JCP) и может ли он работать с таким форматом хранилища?

В общем хотелось бы понять какой мне нужен минимальный набор зависимостей для реализации этой задачи.

Приведу на всякий случай пример кода который тестировал:

Код:

String keyStoreFPath = "d:\\keyStore.pfx";
String keyStorePassword = "123";

KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(new FileInputStream(keyStoreFPath), keyStorePassword.toCharArray());

SSLContext sslContext = new SSLContextBuilder()
		.loadTrustMaterial(new TrustAllStrategy())
		.loadKeyMaterial(keyStore, keyStorePassword.toCharArray())
		.build();

SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext);
CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build();

String jsonStr = "{\"username\":\"admin\",\"password\":\"123\"}";
String jsonUrl = "https://someservice.ru/api/auth/get";

HttpPost post = new HttpPost(jsonUrl);
post.addHeader("Content-Type", "application/json");
StringEntity se = new StringEntity(jsonStr);
post.setEntity(se);
HttpResponse response = httpClient.execute(post);
String responseString = IOUtils.toString(response.getEntity().getContent(), "UTF-8");

System.out.println(responseString);


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

Спасибо!
Offline Евгений Афанасьев  
#2 Оставлено : 16 ноября 2022 г. 22:17:51(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.
PFX необходимо сконвертировать/пересохранить, как HDImageStore (ключевой контейнер вида xxxxxxxx.000 на диске) с сертификатом (лучше - полной цепочкой сертификатов) внутри, чтобы ключевой контейнер стал доступен в JCP.
Естественно, требуется установленный JCP с модулем cpSSL (TLS) (см. рук-во разработчика JTLS).
SSLContext должен быть создан на алгоритме "GostTLSv1.2" (TLS v.1.2) с передачей ему trust store (с корневым сертификатом цепочки сертификатов сервера) и key store (HDImageStore). Примеры есть в архиве samples-sources.jar.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.