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