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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline RKM  
#11 Оставлено : 23 марта 2016 г. 14:53:25(UTC)
RKM

Статус: Участник

Группы: Участники
Зарегистрирован: 14.03.2016(UTC)
Сообщений: 11
Российская Федерация
Откуда: Уфа

Сказал(а) «Спасибо»: 2 раз
Спасибо за ответы.
Но: miser - совет не помог, хотя казалось... вот оно простое и красивое решение всех проблем)
afev: я не совсем понимаю какие корневые сертификаты поместить в CertStore, ведь в этом тестовом примере нет соединения с использованием SSL или https. Тестовая программа (код, что приведен в посте №1, является практически полным) обращается к сайту http://ya.ru, который находится за прокси, и печатает его в stdout.
Возможно авторизация на прокси порождает SSL, но я этого не знаю и соотвественно сертикатом не владею..
Offline Евгений Афанасьев  
#12 Оставлено : 23 марта 2016 г. 15:17:21(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
RKM оставлено 24.03.2016(UTC)
Offline miser  
#13 Оставлено : 23 марта 2016 г. 16:17:13(UTC)
miser

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

thanks 1 пользователь поблагодарил miser за этот пост.
RKM оставлено 24.03.2016(UTC)
Offline RKM  
#14 Оставлено : 24 марта 2016 г. 8:42:56(UTC)
RKM

Статус: Участник

Группы: Участники
Зарегистрирован: 14.03.2016(UTC)
Сообщений: 11
Российская Федерация
Откуда: Уфа

Сказал(а) «Спасибо»: 2 раз
всем спасибо, понимание решения проблемы появилось.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.