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

Уведомление

Icon
Error

3 Страницы<123
Опции
К последнему сообщению К первому непрочитанному
Offline Евгений Афанасьев  
#21 Оставлено : 28 января 2020 г. 20:22:06(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Здравствуйте.
С сервера приходит список доверенных корневых:
Код:

Cert Types: Type-21, Type-22
Cert Authorities:
<CN=УЦ ОАО АТС, OU=УЦ, O=ОАО АТС, L=Москва, C=RU, T=Уполномоченное лицо, EMAILADDRESS=atsca@atsenergo.ru>
<CN=АО АТС root, O=АО АТС, STREET=Краснопресненская набережная 12, L=г. Москва, ST=77 г. Москва, C=RU, OID.1.2.643.3.131.1.1=#120C303037373033363531373932, OID.1.2.643.100.1=#120D31303737373633383138343530>
<CN="АО  \"АТС\"", O="АО  \"АТС\"", OU=УЦ, STREET=" Краснопресненская наб.12 подъезд 7 этаж 8", L=Москва, ST=77 г.Москва, C=RU, OID.1.2.643.3.131.1.1=#120C303037373033363531373932, OID.1.2.643.100.1=#120D31303737373633383138343530>
<CN=Головной удостоверяющий центр, OID.1.2.643.3.131.1.1=#120C303037373130343734333735, OID.1.2.643.100.1=#120D31303437373032303236373031, O=Минкомсвязь России, STREET="125375 г. Москва, ул. Тверская, д. 7", L=Москва, ST=77 г. Москва, C=RU, EMAILADDRESS=dit@minsvyaz.ru>
<CN="АО \"АТС\"", OU=УЦ, O="АО \"АТС\"", L=Москва, ST=77 г.Москва, C=RU, EMAILADDRESS=atsca@rosenergo.com, STREET=Краснопресненская наб.12 подъезд 7 этаж 8, T=Уполномоченное Лицо, OID.1.2.643.3.131.1.1=#120C303037373033363531373932, OID.1.2.643.100.1=#120D31303737373633383138343530>
<CN=УЦ ОАО АТС, OU=УЦ, O=ОАО АТС, L=Москва, ST=77 г.Москва, C=RU, EMAILADDRESS=atsca@rosenergo.com, STREET=Краснопресненская наб.12 подъезд 7 этаж 8, T=Уполномоченное Лицо, OID.1.2.643.3.131.1.1=#120C303037373033363531373932, OID.1.2.643.100.1=#120D31303737373633383138343530>
<CN=Минкомсвязь России, OID.1.2.643.3.131.1.1=#120C303037373130343734333735, OID.1.2.643.100.1=#120D31303437373032303236373031, O=Минкомсвязь России, STREET="улица Тверская, дом 7", L=г. Москва, ST=77 Москва, C=RU, EMAILADDRESS=dit@minsvyaz.ru>

На клиенте происходит подбор контейнера.
Код:

2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - *** ServerHelloDone
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - Certificate request received...
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - Search for client containers with GOST algorithms...
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - Search for client containers with any GOST algorithm...
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - %% getting aliases for Client
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - %% checking alias: Name_1
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - %% check public key algorithm ignored.
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - %% check extended key usage of Client, size: 11...
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - %% check credential issuers...
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - %% checking alias: Name_2_*
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - %% check public key algorithm ignored.
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - %% check extended key usage of Client, size: 14...
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - %% check credential issuers...
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.error - %% No alias is match
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - Appropriate client aliases not found.
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - Containers not found.
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - No appropriate cert was found.
2020-01-28 18:22:59 r.C.JCP.tools.logger.BasicLogger.subTrace - *** Certificate message
***


Найдены как будто два контейнера, но ни один сертификат не прошел проверку на вхождение в приведенный список доверенных (check credential issuers...). Может, у вас ключевой контейнер обновился и вы всю цепочку сертификатов клиента в него не поставили? (если в цепочке клиента 3 сертификата: client -> ca1 -> root, а в контейнере только client и сервер шлет только root, то при подборе client издан неизвестным серверу центром ca1, а не root).

Отредактировано пользователем 28 января 2020 г. 20:22:49(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
what_the оставлено 05.02.2020(UTC)
Offline what_the  
#22 Оставлено : 5 февраля 2020 г. 12:00:59(UTC)
what_the

Статус: Новичок

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

Сказал(а) «Спасибо»: 19 раз
Здравствуйте.
Ключевой контейнер изменился. Но с ним же работает через IE. Так же есть еще один сервис, к которому происходит успешное обращение. Лог брсо brso.log (98kb) загружен 2 раз(а)..
Изменив код удалось прочитать сертификаты в контейнере(аналогично брсо), но от сервера все равно приходит ответ unknown_ca. Лог атс с добавленным чтением сертификатов контейнера ats_read_cert.log (62kb) загружен 2 раз(а)..
Так же есть хранилище сертификатов на клиенте, которое состоит из директорий: для каждого сервиса - своя. При инициализации ssl контекстов сервисов считываются сертификаты из этих директорий.
Положил сертификат из папки брсо в атс.
Итого - одинаковые ssl контексты, один носитель, одинаково выстроенная цепочка сертификатов. Один сервис работает, другой - нет. Серверу атс необходима другая цепочка сертификатов? Как понять - каких? Список Cert Authorities в вашем ответе не дает мне понимания, какие именно сертификаты и в какой последовательности выстраивать: в логе нет их серийного номера, а таких сертов атс несколько.
Подскажите, куда посмотреть, чтобы разобраться с правильной цепочкой.
Спасибо!

Отредактировано пользователем 5 февраля 2020 г. 12:02:04(UTC)  | Причина: Не указана

Offline what_the  
#23 Оставлено : 6 февраля 2020 г. 12:24:39(UTC)
what_the

Статус: Новичок

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

Сказал(а) «Спасибо»: 19 раз
Автор: what_the Перейти к цитате
Здравствуйте.
Ключевой контейнер изменился. Но с ним же работает через IE. Так же есть еще один сервис, к которому происходит успешное обращение. Лог брсо brso.log (98kb) загружен 2 раз(а)..
Изменив код удалось прочитать сертификаты в контейнере(аналогично брсо), но от сервера все равно приходит ответ unknown_ca. Лог атс с добавленным чтением сертификатов контейнера ats_read_cert.log (62kb) загружен 2 раз(а)..
Так же есть хранилище сертификатов на клиенте, которое состоит из директорий: для каждого сервиса - своя. При инициализации ssl контекстов сервисов считываются сертификаты из этих директорий.
Положил сертификат из папки брсо в атс.
Итого - одинаковые ssl контексты, один носитель, одинаково выстроенная цепочка сертификатов. Один сервис работает, другой - нет. Серверу атс необходима другая цепочка сертификатов? Как понять - каких? Список Cert Authorities в вашем ответе не дает мне понимания, какие именно сертификаты и в какой последовательности выстраивать: в логе нет их серийного номера, а таких сертов атс несколько.
Подскажите, куда посмотреть, чтобы разобраться с правильной цепочкой.
Спасибо!

Добавлю еще, что на атс однажды авторизовался и без кода считывания сертификатов.
Решилось после
1) добавления сертификата из хранилища клиента в директории приложения.
2) перезапись личного сертификата с закрытым ключом с носителя в хранилище клиента.
Но после нескольких дней проверил - ошибка 403 снова имеет место быть.

И код инициализации контекста атс
до
Код:
KeyStore keyStore = KeyStore.getInstance(keyStoreType, keyStoreProvider);
keyStore.load(null, keyStorePassword.toCharArray());
System.setProperty("tls_prohibit_disabled_validation", "false");

KeyManagerFactory kmf = KeyManagerFactory.getInstance("GostX509");
kmf.init(keyStore, keyStorePassword.toCharArray()); // Пароль к контейнеру сервера или клиента

SSLContext sslCtx = SSLContext.getInstance("GostTLS"); // Защищенный контекст
sslCtx.init(kmf.getKeyManagers(), new TrustManager[]{tasTrustManager}, null);    // Custom TAS certificate trust manager

return sslCtx;


и со считыванием сертификатов с носителя (аналогично брсо)
Код:

        KeyStore keyStore = KeyStore.getInstance(keyStoreType, keyStoreProvider);
        keyStore.load(null, keyStorePassword.toCharArray());
        System.setProperty("tls_prohibit_disabled_validation", "false");

        //читаем сертификат с носителя
        Enumeration<String> enumeration = keyStore.aliases();
        String alias = null;
        if (enumeration.hasMoreElements())                    // One certificate per USB key
            alias = (String) enumeration.nextElement();
        if (alias == null && developmentWithoutKey == 0)
            throw new Exception("No alias found in the key container");

        logger.warn("Found certificate and key with alias "+alias+" in key store container (USB key); attempting to initialize SSL Context");

        X509Certificate cert = (X509Certificate) keyStore.getCertificate(alias);

        //читаем корневой и промежуточные сертификаты
        String folderPath = keysCertificateFolder;
        List<X509Certificate> certificates = getCertificatesFromFolder(folderPath);
        X509Certificate[] chain = new X509Certificate[certificates.size() + 1];
        chain[0] = cert;
        for (int j = 1; j < certificates.size() + 1; j++) {
            chain[j] = certificates.get(j - 1);
        }
        KeyStore memoryStore = KeyStore.getInstance("MemoryStore");
        memoryStore.load(null, keyStorePassword.toCharArray());

        //копируем в хранилище
        memoryStore.setKeyEntry(alias, keyStore.getKey(alias, keyStorePassword.toCharArray()),
                keyStorePassword.toCharArray(), chain);

        KeyManagerFactory kmf = KeyManagerFactory.getInstance("GostX509");
        kmf.init(memoryStore, keyStorePassword.toCharArray()); // Пароль к контейнеру сервера или клиента

        SSLContext sslCtx = SSLContext.getInstance("GostTLS"); // Защищенный контекст
        sslCtx.init(kmf.getKeyManagers(), new TrustManager[]{tasTrustManager}, null);    // Custom TAS certificate trust manager

        return sslCtx;
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы<123
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.