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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Илья Кожевников  
#1 Оставлено : 10 декабря 2020 г. 23:37:59(UTC)
Илья Кожевников

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

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

Сказал(а) «Спасибо»: 3 раз
Необходимо установить соединение с сервером с авторизацией клиента через сертификат. Проблема - никак не могу найти инфу где нужно устанавливать сертификат для авторизации клиента. Пробовал добавлять в хранилище ROOT, но получаю при запросе ошибку - schannel: SNI or certificate check failed: SEC_E_WRONG_PRINCIPAL
Как я понял, сертификат установил я неправильно. Помогите, люди добрые.
Online Александр Лавник  
#2 Оставлено : 11 декабря 2020 г. 14:48:06(UTC)
Александр Лавник

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

Группы: Участники
Зарегистрирован: 30.06.2016(UTC)
Сообщений: 2,674
Мужчина
Российская Федерация

Сказал «Спасибо»: 44 раз
Поблагодарили: 602 раз в 567 постах
Автор: Илья Кожевников Перейти к цитате
Необходимо установить соединение с сервером с авторизацией клиента через сертификат. Проблема - никак не могу найти инфу где нужно устанавливать сертификат для авторизации клиента. Пробовал добавлять в хранилище ROOT, но получаю при запросе ошибку - schannel: SNI or certificate check failed: SEC_E_WRONG_PRINCIPAL
Как я понял, сертификат установил я неправильно. Помогите, люди добрые.

Здравствуйте.

Уточните, пожалуйста:
  • версию используемой операционной системы
  • какие сборки наших программных продуктов используете
  • последовательность шагов, которая приводит к ошибке
  • конечную цель

Также при возможности приложите имеющиеся скриншоты/логи.
Техническую поддержку оказываем тут
Наша база знаний
Offline Илья Кожевников  
#3 Оставлено : 13 декабря 2020 г. 22:31:15(UTC)
Илья Кожевников

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

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

Сказал(а) «Спасибо»: 3 раз
Использую Xcode 12.2, iOS 14.2, КриптоПро CSP v5.0
Моя задача сделать tls соединение, при хэндшейке сервер запрашивает клиентский сертификат для подтверждения клиента. Соединение tls без подтверждения клиента у меня работают.
Вначале я добавляю ca сертификат в хранилище
CertAddEncodedCertificateToStore(hStoreMy, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, cert, lSize, CERT_STORE_ADD_REPLACE_EXISTING, &pCertCtx);
После курлом делаю запрос и получаю вот такой лог.

2020-12-13 22:24:32.106178+0300 CreateFile[12509:455799] suid2 22:24:32.105975 support_n_getpwuid_r:61 p:12509 t:0x0x7fff5e739311 support_n_getpwuid_r(502, 0x0x7000029d20c8, 0x0x7000029d21a0, 1024, 0x0x7000029d2198) = 0 fail Unknown error: -1(-1)
<ssp>0x7000029d5000:AddToMessageLog!CryptoPro TLS. Error 0x800b0109 validating server secretsite.ru certificate: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider. (:5491)
<ssp>0x7000029d5000:InitializeSecurityContextW!(failed: 0x80090325) (:2614)
* schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.
* Closing connection 0
* schannel: shutting down SSL/TLS connection with secretsite.ru

После добавления клиентского сертификата в хранилище сертификатов, в логах меняется ошибка
2020-12-13 22:21:57.304022+0300 CreateFile[12439:453848] suid2 22:21:57.303861 support_n_getpwuid_r:61 p:12439 t:0x0x7fff5e739311 support_n_getpwuid_r(502, 0x0x70000031b728, 0x0x70000031b800, 1024, 0x0x70000031b7f8) = 0 fail Unknown error: -1(-1)
<ssp>0x70000031f000:AddToMessageLog!CryptoPro TLS. Error 0x800b010f validating server secretsite.ru certificate: The certificate's CN name does not match the passed value. (:5491)
<ssp>0x70000031f000:InitializeSecurityContextW!(failed: 0x80090322) (:2614)
* schannel: SNI or certificate check failed: SEC_E_WRONG_PRINCIPAL (0x80090322) - The target principal name is incorrect.
* Closing connection 0
* schannel: shutting down SSL/TLS connection with secretsite.ru

Предполагаю, что тут возможно важен вот этот текст - The certificate's CN name does not match the passed value. Но не могу понять, сертификат подходит по каким-то параметрам, но не подходит по доменному имени? Просто сейчас мы меняем библиотеку на криптопро и наше предыдущее решение вполне нормально соединяется с этим сертификатом.
Offline Илья Кожевников  
#4 Оставлено : 14 декабря 2020 г. 11:24:22(UTC)
Илья Кожевников

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

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

Сказал(а) «Спасибо»: 3 раз
Ну похоже, и вправду проблема в этом. Это обязательное поле, а в сертификате указано вовсе не то, что надо. Тогда вопрос в другом. Сейчас переделать сертификат немного затруднительно, можно ли как-то заставить криптопро игнорировать сравнение доменного имени в клиентском сертификате хотя бы чисто для теста, чтоб проверить что в остальном все работает?
Offline pd  
#5 Оставлено : 14 декабря 2020 г. 13:59:49(UTC)
pd

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

Группы: Администраторы
Зарегистрирован: 16.09.2010(UTC)
Сообщений: 1,192
Откуда: КРИПТО-ПРО

Сказал(а) «Спасибо»: 27 раз
Поблагодарили: 206 раз в 177 постах
Автор: Илья Кожевников Перейти к цитате
Ну похоже, и вправду проблема в этом. Это обязательное поле, а в сертификате указано вовсе не то, что надо. Тогда вопрос в другом. Сейчас переделать сертификат немного затруднительно, можно ли как-то заставить криптопро игнорировать сравнение доменного имени в клиентском сертификате хотя бы чисто для теста, чтоб проверить что в остальном все работает?

При вызове AcquireCredentialsHandle() в структуре SCHANNEL_CRED::dwFlags есть возможность выставить SCH_CRED_MANUAL_CRED_VALIDATION, тогда проверка сертификата в рамках TLS производиться не будет.

В случае curl, смотрите в сторону CURLOPT_SSL_VERIFYPEER = FALSE.
Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил pd за этот пост.
Илья Кожевников оставлено 11.02.2021(UTC)
Offline Илья Кожевников  
#6 Оставлено : 12 февраля 2021 г. 17:34:29(UTC)
Илья Кожевников

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

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

Сказал(а) «Спасибо»: 3 раз
Использую курл. Мне помогла опция CURLOPT_SSL_VERIFYHOST - false, CURLOPT_SSL_VERIFYPEER как я понял совсем отключает проверку сертификата. Все хорошо, но смутило вот такой момент: в ЖТЯИ.00101-02 95 01, в таблице со списком команд указано что CURLOPT_SSL_VERIFYHOST и CURLOPT_SSL_VERIFYPEER использовать нельзя. То есть релизное приложение с этими опциями не пройдет сертификацию? Все же нужно будет переделывать сертификат с корректным именем хоста?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.