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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline coldplay  
#1 Оставлено : 24 февраля 2016 г. 13:35:10(UTC)
coldplay

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

Группы: Участники
Зарегистрирован: 16.02.2016(UTC)
Сообщений: 60

Сказал(а) «Спасибо»: 18 раз
Поблагодарили: 2 раз в 2 постах
Здравствуйте. Проблема похожая с описанной в теме https://www.cryptopro.ru....aspx?g=posts&t=7701
Но там так к решению и не пришли. Имеем код :

Код:


    public void callSSLConnection() throws Exception {
        SSLSocketFactory sslFactory = createSSLSocketFactory();
        System.out.println(sslFactory);

        URL url = new URL("https://ssl.test.url");
        HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
        connection.setSSLSocketFactory(sslFactory);
         ....
       }

    private static SSLSocketFactory createSSLSocketFactory() {
        SSLSocketFactory sslFactory;
        try {
            KeyStore trustSt = KeyStore.getInstance("HDImageStore", "JCP");
            trustSt.load(new FileInputStream(new File("/test_crypto_store")),
                    "password".toCharArray());
            if (!trustSt.aliases().hasMoreElements()) {
                throw new RuntimeException("Empty keystore");
            } else {
                Enumeration<String> enumalias = trustSt.aliases();
                while (enumalias.hasMoreElements()) {
                    System.out.println(enumalias.nextElement());
                }
            }
            TrustManagerFactory tmf =
                    TrustManagerFactory.getInstance("GostX509");
            tmf.init(trustSt);
            SSLContext ctx = SSLContext.getInstance("GostTLS");
            ctx.init(null, tmf.getTrustManagers(), null);
            sslFactory = ctx.getSocketFactory();
        } catch (Exception e) {
            throw new RuntimeException("During prepare ssl factory ", e);
        }
        return sslFactory;
    }



На connection.getOutputStream() получаем ошибку :

javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at ru.CryptoPro.ssl.C.a(Unknown Source)
at ru.CryptoPro.ssl.am.a(Unknown Source)
at ru.CryptoPro.ssl.am.a(Unknown Source)
at ru.CryptoPro.ssl.am.a(Unknown Source)
at ru.CryptoPro.ssl.am.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)[:1.7.0_72]
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)[:1.7.0_72]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091)[:1.7.0_72]
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)[:1.7.0_72]
at ru.test.RouteHelper.callSSLConnection(RouteHelper.java:43)[213:ru.citc.test.cronos-test:1.0.0.SNAPSHOT]
at sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_72]
at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_72]
at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:407)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:278)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:251)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:166)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:105)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:67)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:103)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:71)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:113)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:157)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:68)[172:org.apache.camel.camel-core:2.13.2]
at java.util.TimerThread.mainLoop(Timer.java:555)[:1.7.0_72]
at java.util.TimerThread.run(Timer.java:505)[:1.7.0_72]
Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at ru.CryptoPro.ssl.w.<init>(Unknown Source)
at ru.CryptoPro.ssl.g.b(Unknown Source)
at ru.CryptoPro.ssl.g.checkServerTrusted(Unknown Source)
at ru.CryptoPro.ssl.x.checkServerTrusted(Unknown Source)
at ru.CryptoPro.ssl.ao.a(Unknown Source)
at ru.CryptoPro.ssl.ao.a(Unknown Source)
at ru.CryptoPro.ssl.f.o(Unknown Source)
at ru.CryptoPro.ssl.f.a(Unknown Source)
at ru.CryptoPro.ssl.am.a(Unknown Source)
at ru.CryptoPro.ssl.am.i(Unknown Source)
... 27 more
Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200)[:1.7.0_72]
at java.security.cert.PKIXParameters.<init>(PKIXParameters.java:120)[:1.7.0_72]
at java.security.cert.PKIXBuilderParameters.<init>(PKIXBuilderParameters.java:104)[:1.7.0_72]
... 37 more

Этот код работает на jcp 1.0 и java 1.6.
На тестовой машинке (jcp 2.0.38481 , jdk1.7.0_72) получаем такую ошибку. SelfTestersTests показывает что все ОК. cpSSL установлен , экспортные ограничения сняты. Кейстор скопирован с рабочей машины, алиасы видны, права есть. Урла коннекта та же что и в рабочем варианте.
Что может быть не так ?
Заранее спасибо !

Offline Евгений Афанасьев  
#2 Оставлено : 24 февраля 2016 г. 14:30:31(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Здравствуйте.
Что лежит в test_crypto_store? Сертификаты УЦ (самоподписанные)?
Offline coldplay  
#3 Оставлено : 24 февраля 2016 г. 14:34:43(UTC)
coldplay

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

Группы: Участники
Зарегистрирован: 16.02.2016(UTC)
Сообщений: 60

Сказал(а) «Спасибо»: 18 раз
Поблагодарили: 2 раз в 2 постах
Да там сертификат. Скопирован с рабочей машины (jcp 1.0 jdk 1.6), где этот код работает. Может такое быть что нам дали не тот кейстор ?
Offline Евгений Афанасьев  
#4 Оставлено : 24 февраля 2016 г. 15:29:47(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Автор: afev Перейти к цитате
Сертификаты УЦ (самоподписанные)?

В trsut store должны быть только самоподписанные сертификаты.
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
coldplay оставлено 24.02.2016(UTC)
Offline coldplay  
#5 Оставлено : 24 февраля 2016 г. 16:32:01(UTC)
coldplay

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

Группы: Участники
Зарегистрирован: 16.02.2016(UTC)
Сообщений: 60

Сказал(а) «Спасибо»: 18 раз
Поблагодарили: 2 раз в 2 постах
Подложили самоподписанный сертификат с прода. Ошибка пропала теперь получаем другую :
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: [PKIX] a failure during build of the certificate chain
at ru.CryptoPro.ssl.C.a(Unknown Source)
at ru.CryptoPro.ssl.am.a(Unknown Source)
at ru.CryptoPro.ssl.f.a(Unknown Source)
at ru.CryptoPro.ssl.f.a(Unknown Source)
at ru.CryptoPro.ssl.ao.a(Unknown Source)
at ru.CryptoPro.ssl.ao.a(Unknown Source)
at ru.CryptoPro.ssl.f.o(Unknown Source)
at ru.CryptoPro.ssl.f.a(Unknown Source)
at ru.CryptoPro.ssl.am.a(Unknown Source)
at ru.CryptoPro.ssl.am.i(Unknown Source)
at ru.CryptoPro.ssl.am.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)[:1.7.0_72]
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)[:1.7.0_72]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091)[:1.7.0_72]
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)[:1.7.0_72]
at ru.test.RouteHelper.callSSLConnection(RouteHelper.java:41)[213:ru.citc.test.cronos-test:1.0.0.SNAPSHOT]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_72]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_72]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_72]
at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_72]
at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:407)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:278)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:251)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:166)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:105)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:67)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:103)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:71)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:113)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:157)[172:org.apache.camel.camel-core:2.13.2]
at org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:68)[172:org.apache.camel.camel-core:2.13.2]
at java.util.TimerThread.mainLoop(Timer.java:555)[:1.7.0_72]
at java.util.TimerThread.run(Timer.java:505)[:1.7.0_72]
Caused by: java.security.cert.CertificateException: [PKIX] a failure during build of the certificate chain
at ru.CryptoPro.ssl.w.a(Unknown Source)
at ru.CryptoPro.ssl.w.a(Unknown Source)
at ru.CryptoPro.ssl.g.checkServerTrusted(Unknown Source)
at ru.CryptoPro.ssl.x.checkServerTrusted(Unknown Source)
... 34 more
Caused by: ru.CryptoPro.reprov.certpath.JCPCertPathBuilderException: unable to find valid certification path to requested target
at ru.CryptoPro.reprov.certpath.u.engineBuild(Unknown Source)
at ru.CryptoPro.reprov.CPCertPathBuilder.engineBuild(Unknown Source)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)[:1.7.0_72]
... 38 more
Offline Евгений Афанасьев  
#6 Оставлено : 24 февраля 2016 г. 17:32:44(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Не строится цепочка серверного сертификата.
Offline coldplay  
#7 Оставлено : 25 февраля 2016 г. 15:34:30(UTC)
coldplay

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

Группы: Участники
Зарегистрирован: 16.02.2016(UTC)
Сообщений: 60

Сказал(а) «Спасибо»: 18 раз
Поблагодарили: 2 раз в 2 постах
Автор: afev Перейти к цитате
Не строится цепочка серверного сертификата.

Это понятно из ошибки. Непонятно почему работает\неработает зависит от версий jdk-jcp ?
Машина (jdk 1.6 jcp 1.0.52), запускаем пример. Соединение работает, все ОК.
Машина (jdk 1.6 jcp 2.0.38), этот же пример. Ошибка цепочки сертификатов.
Мащина (jdk 1.7 jcp 2.0.38), этот же пример. Ошибка цепочки сертификатов.
Кейстор один и тот же.


Offline Евгений Афанасьев  
#8 Оставлено : 25 февраля 2016 г. 16:53:19(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Потому что в версии 2.0 были изменения: 1) изменен алгоритм проверки цепочки сертификатов, и проверка цепочки включена по умолчанию; 2) из trust store извлекаются только корневые сертификаты (именно они там должны быть) и помещаются в trustAnchors.
JCPCertPathBuilderException: unable to find valid certification path to requested target - вероятно, не строится цепочка сертификатов сервера на клиентской стороне: не добавлен сертификат издателя сертификата сервера в trust store, какие-то нарушения при построении (нужно включить логирование).

Отредактировано пользователем 25 февраля 2016 г. 16:55:08(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
coldplay оставлено 25.02.2016(UTC)
Offline coldplay  
#9 Оставлено : 25 февраля 2016 г. 17:16:11(UTC)
coldplay

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

Группы: Участники
Зарегистрирован: 16.02.2016(UTC)
Сообщений: 60

Сказал(а) «Спасибо»: 18 раз
Поблагодарили: 2 раз в 2 постах
А есть тестовая url для проверки ssl-соединения по госту, где точно можно получить валидную цепочку сертификатов и отладить код ?
Offline Евгений Афанасьев  
#10 Оставлено : 25 февраля 2016 г. 17:39:30(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,003
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 714 раз в 674 постах
Вот тут есть тестовые страницы. В trust store надо добавить сертификат издателя сертификата сервера, т.е. для https://cpca.cryptopro.ru/ (без аут. клиента) это какой-то сертификат из http://cpca.cryptopro.ru/cacer.p7b, а для https://www.cryptopro.ru:4444/test/tls-cli.asp (с аут. клиента) - корневой http://www.cryptopro.ru/ra/cdp/cacer3.crt

Отредактировано пользователем 25 февраля 2016 г. 17:40:39(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
coldplay оставлено 25.02.2016(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.