Статус: Новичок
Группы: Участники
Зарегистрирован: 16.04.2020(UTC) Сообщений: 1
Сказал(а) «Спасибо»: 1 раз
|
Добрый день. Работаю над сервисом для шифрования данных с использованием крипто про. Застрял на самом начальном этапе - авторизации. В моем случае используется сценарий авторизации с аутентификацией по сертификату. Сертификат в формате pfx. Делаю все по данной доке: https://dss.cryptopro.ru...ationcode-flow-cert.html Что было сделано c сертификатом и настройками CSP/JCP по пунктам:
- Установил сертификат в certmgr(OS Windows 10) -> Сертификаты -> Личное -> Сертификаты
- Поставил Java CSP в каталог с jre
- Добавил с помощью CSP Control Pane мой pfx сертификат в хранилища контейнеров-> HDImageStore, добавился только сам ключ в -> "Ключи обмена и сертификат", поэтому потом отдельно экспортировал сертификат с помощью КриптоПро CSP и добавил его туда же в контйнер к ключу.
- Тем же CSP Control Pane создал хранилище сертификатов и добавил туда всю цепочку доверенных сертификатов к моему сертификату, который в контейнере с ключом
 JCP1.JPG (82kb) загружен 11 раз(а).
Проект на джаве в спринг буте с использованием Apache Camel, перечитал уже половину форума, после чего как мне казалось вроде бы настроил SSLContextParameters. Код выглядит примерно вот так:
Код:System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");
System.setProperty("javax.net.ssl.supportGVO", "true");
System.setProperty("javax.net.ssl.trustStoreType", "CertStore");
System.setProperty("javax.net.ssl.trustStore", "test.store"); //путь к хранилищу сертификатов, которое создал с помощью JCP
System.setProperty("javax.net.ssl.trustStorePassword", "password");
Security.setProperty("ssl.TrustManagerFactory.algorithm", "GostX509");
Security.setProperty("ssl.KeyManagerFactory.algorithm", "GostX509");
Security.setProperty("ssl.SocketFactory.provider", "ru.CryptoPro.ssl.SSLSocketFactoryImpl");
Security.setProperty("ssl.ServerSocketFactory.provider", "ru.CryptoPro.ssl.SSLServerSocketFactoryImpl");
KeyStoreParameters ksp = new KeyStoreParameters();
ksp.setResource("test.store"); //путь к хранилищу сертификатов, которое создал с помощью JCP
ksp.setPassword("password");
ksp.setProvider("JCP");
ksp.setType("CertStore");
KeyManagersParameters kmp = new KeyManagersParameters();
kmp.setKeyStore(ksp);
kmp.setKeyPassword("password");
kmp.setAlgorithm("GostX509");
TrustManagersParameters trustManagers = new TrustManagersParameters();
trustManagers.setKeyStore(ksp);
trustManagers.setAlgorithm("GostX509");
trustManagers.setProvider("JTLS");
SSLContextParameters scp = new SSLContextParameters();
scp.setTrustManagers(trustManagers);
scp.setKeyManagers(kmp);
scp.setProvider("JTLS");
scp.setSecureSocketProtocol("GostTLS");
Но после этого всего при отправке запроса с моими параметрами SSL: https4{{oauthUrl}}authorize/certificate?sslContextParameters=sslContextParameter&bridgeEndpoint=trueя получаю статус код 403. При этом тот же самый запрос из браузера типа GET https://{{hostname}}/{{stsappname}/oauth/authorize/certificate?client_id=sample&response_type=code&scope=dss&redirect_uri=urn:ietf:wg:oauth:2.0:oob:auto&resource=urn:cryptopro:dss:signserver:signserver у меня запрашивает сертификат, открывается окно выбора ключевого носителя КриптоПро CSP и после чего нормально перенаправляет на страничку. Уже пару дней сижу над этой проблемой, может кто-то подскажет что не так и в какую сторону рыться? Может упустил ещё какие то шаги по добавлению и настройке сертификатов? Отредактировано пользователем 16 апреля 2020 г. 19:53:58(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,215  Сказал(а) «Спасибо»: 101 раз Поблагодарили: 285 раз в 265 постах
|
Добрый день! не совсем то, но идею можно посмотреть тутдля аутентификации по сертификату нужен закрытый ключ этого сертификата. в приведенном выше примере передаю keystore с закрытыми ключами Код:KeyStore keyStore = KeyStore.getInstance(JCP.HD_STORE_NAME);
keyStore.load(null);
doConnect(urlToConnectGost, dir+saveFileFromUrlGost,true,keyStore,PASS);
в вашем же keystore только одни сертификаты |
|
 1 пользователь поблагодарил Санчир Момолдаев за этот пост.
|
Gvdm оставлено 22.04.2020(UTC)
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close