Статус: Участник
Группы: Участники
Зарегистрирован: 14.03.2016(UTC) Сообщений: 11 Откуда: Уфа Сказал(а) «Спасибо»: 2 раз
|
Спасибо за ответы. Но: miser - совет не помог, хотя казалось... вот оно простое и красивое решение всех проблем) afev: я не совсем понимаю какие корневые сертификаты поместить в CertStore, ведь в этом тестовом примере нет соединения с использованием SSL или https. Тестовая программа (код, что приведен в посте №1, является практически полным) обращается к сайту http://ya.ru, который находится за прокси, и печатает его в stdout. Возможно авторизация на прокси порождает SSL, но я этого не знаю и соотвественно сертикатом не владею..
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Автор: RKM afev: я не совсем понимаю какие корневые сертификаты поместить в CertStore, ведь в этом тестовом примере нет соединения с использованием SSL или https. Тестовая программа (код, что приведен в посте №1, является практически полным) обращается к сайту http://ya.ru, который находится за прокси, и печатает его в stdout. Возможно авторизация на прокси порождает SSL, но я этого не знаю и соотвественно сертикатом не владею.. at ru.CryptoPro.ssl.g.checkServerTrusted(Unknown Source) at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:922) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) at sun.security.ssl.Handshaker.process_record(Handshaker.java:914) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) Видимо, вызывается реализация GostX509 от JTLS, заданная в java.security, а список корневых сертификатов при этом пуст (он в вашем случае и не нужен). Пока вы ее не изменили на значение по умолчанию. Отредактировано пользователем 23 марта 2016 г. 15:22:02(UTC)
| Причина: Не указана |
|
1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
RKM оставлено 24.03.2016(UTC)
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 14.03.2011(UTC) Сообщений: 153 Откуда: Санкт-Петербург Сказал «Спасибо»: 1 раз Поблагодарили: 7 раз в 5 постах
|
Это, конечно, не относится к TLS. Используем Apache HTTP4 Client. Берем в качестве примера из Apache Camel класс ProxyHttpClientConfigurer. Код:
public void configureHttpClient(HttpClientBuilder clientBuilder) {
clientBuilder.setProxy(new HttpHost(host, port, scheme));
if (username != null && password != null) {
Credentials defaultcreds;
if (domain != null) {
defaultcreds = new NTCredentials(username, password, ntHost, domain);
} else {
defaultcreds = new UsernamePasswordCredentials(username, password);
}
BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, defaultcreds);
clientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
}
Этот код проверен и работает. Далее, в файле jre/lib/security/java.security комментируем строки Цитата: # ssl.SocketFactory.provider=ru.CryptoPro.ssl.SSLSocketFactoryImpl # ssl.ServerSocketFactory.provider=ru.CryptoPro.ssl.SSLServerSocketFactoryImpl
Зачем? Очень просто - они мешают maven и другим системам нормально ходить на https сервера. Использую дальше Apache Camel. Класс SSLContextParameters. Код:
SSLContextParameters params = new SSLContextParameters();
params.setProvider("JTLS");
params.setSecureSocketProtocol("GostTLS");
KeyStoreParameters trustKeyStoreParameters = new KeyStoreParameters();
trustKeyStoreParameters.setProvider("JCP");
trustKeyStoreParameters.setType("CertStore");
trustKeyStoreParameters.setResource("jcp-trust-store"); // файл хранилища из ControlPanel
trustKeyStoreParameters.setPassword(password);
TrustManagersParameters trustManagers = new TrustManagersParameters();
trustManagers.setAlgorithm("GostX509");
trustManagers.setProvider("JTLS");
trustManagers.setKeyStore(trustKeyStoreParameters);
params.setTrustManagers(trustManagers);
SSLContext sslContext = params.createSSLContext();
SSLSocketFactory socketFactory = sslContext.getSocketFactory();
И далее, устанавливаем полученный socketFactory. Отредактировано пользователем 23 марта 2016 г. 16:24:01(UTC)
| Причина: Не указана
|
1 пользователь поблагодарил miser за этот пост.
|
RKM оставлено 24.03.2016(UTC)
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 14.03.2016(UTC) Сообщений: 11 Откуда: Уфа Сказал(а) «Спасибо»: 2 раз
|
всем спасибо, понимание решения проблемы появилось.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close