Статус: Новичок
Группы: Участники
Зарегистрирован: 25.12.2019(UTC) Сообщений: 9
|
Здравствуйте. Прошу помочь разобраться с причиной ошибки handshake. Сделал по аналогии с вашим примером. Код:
HttpPost httpPost = new HttpPost("https://api.sb.mdlp.crpt.ru/api/v1/documents/income");
httpPost.setEntity(new StringEntity(body.toString(), ContentType.APPLICATION_JSON));
httpPost.setHeader("Authorization", "token " + token.getToken());
httpPost.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");
//noinspection resource,IOResourceOpenedButNotSafelyClosed
PoolingHttpClientConnectionManager poolingConnectionManager = new PoolingHttpClientConnectionManager();
poolingConnectionManager.setDefaultSocketConfig(
SocketConfig
.custom()
.setTcpNoDelay(true)
.setSoTimeout(900000)
.build());
SSLConfiguration sslConfig = new SSLConfiguration(
"HDImageStore",
"C:\\uc_cert",
"123456".toCharArray(),
false,//auth,
"HDImageStore",
"null", // keyStoreAlias,
"123456".toCharArray()
);
SSLConnector connector = new SSLConnector(sslConfig);
connector.prepare(false);
SSLContext sslContext = connector.create("TLSv1");
HttpClient httpsClient = HttpClients.custom()
.setConnectionManager(poolingConnectionManager)
.disableAutomaticRetries()
.setDefaultRequestConfig(
RequestConfig
.custom()
.setCircularRedirectsAllowed(true)
.setSocketTimeout(900000)
.setExpectContinueEnabled(false)
.setConnectTimeout(60000)
.setConnectionRequestTimeout(900000)
.build())
.setRequestExecutor(new HttpRequestExecutor())
.setRedirectStrategy(new DefaultRedirectStrategy())
.setSSLContext(sslContext)
.build();
HttpResponse response;
String content;
try {
response = httpsClient.execute(httpPost);
content = readInputStream(response.getEntity().getContent());
} catch (IOException e) {
throw new InternalErrorException(e);
}
Получаю ошибку handshake_failure, прилогаю файл с логом log.txt (30kb) загружен 3 раз(а).Отредактировано пользователем 15 февраля 2020 г. 21:06:57(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,924 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 690 раз в 651 постах
|
Здравствуйте. В стеке ошибки нет упоминания JCP или cpSSL: пакет ru.CryptoPro.ssl. Возможно, в конфигурации надо где-то указать протокол "GostTLS", алгоритмы менеджеров ключей и хранилища сертификатов - "GostX509" (см. рук-во разработчика JTLS). В логе используются стандартные, sun алгоритмы и протоколы, в отправляемом клиентом ClientHello нет ГОСТ алгоритмов, сервер его не понимает и дает ошибку. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 25.12.2019(UTC) Сообщений: 9
|
Вопрос решился когда я заменил .setSSLContext(sslContext) на .setSSLSocketFactory(new SSLConnectionSocketFactory(sslContext)) и убрал .setConnectionManager(poolingConnectionManager) Получается крипто про не может работать с многопоточными запросами? Работающий код после изменений: Код:httpsClient = HttpClients.custom()
.disableAutomaticRetries()
.setDefaultRequestConfig(
RequestConfig
.custom()
.setCircularRedirectsAllowed(true)
.setSocketTimeout(SOCKET_TIMEOUT)
.setExpectContinueEnabled(false)
.setConnectTimeout(CONNECTION_TIMEOUT_MS)
.setConnectionRequestTimeout(SOCKET_TIMEOUT)
.build())
.setDefaultHeaders(DEFAULT_HEADERS)
.setSSLSocketFactory(new SSLConnectionSocketFactory(sslContext))
.build();
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,924 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 690 раз в 651 постах
|
Cpssl реализует только ГОСТ алгоритмы в tls соединении и предоставляет ssl контекст (с фабрикой сокетов), который позволяет использовать данные ГОСТ алгоритмы, более он ничего не делает (пулы, многопоточность, работа с сокетами - это уже другой уровень, не связанный с cpssl или tls, и он зависит уже от реализации работы с сокетами и т.п. внутри той библиотеки, что вы используете). Cpssl работает с любыми запросами, они просто шифруются и передаются по назначению, параллельно это делать или нет - задача http библиотеки. Отредактировано пользователем 16 февраля 2020 г. 13:04:19(UTC)
| Причина: Не указана |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close