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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Илья Кожевников  
#1 Оставлено : 2 февраля 2021 г. 18:03:35(UTC)
Илья Кожевников

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

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

Сказал(а) «Спасибо»: 3 раз
Добрый день, столкнулся с проблемой при реализации двусторонней авторизации на айос.
В документе "ЖТЯИ.00101-02 95 01. Правила пользования" использовать опцию CURLOPT_SSLCERT при настройке курла для задания сертификата. Проблема, что не могу найти информацию о том, как указать адрес сертификата TLS-клиента в системном хранилище сертификатов. Пытался передать просто путь до файла с сертификатом, но получаю только ошибки. Можете кто-нибудь рассказать, что конкретно надо передавать? Желательно с примерчиком бы.
Offline Ситдиков Денис  
#2 Оставлено : 2 февраля 2021 г. 18:53:19(UTC)
Ситдиков Денис

Статус: Администратор

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 29 раз в 20 постах
Добрый день!
Есть такой пример использования ГОСТ TLS на iOS .
Offline Илья Кожевников  
#3 Оставлено : 2 февраля 2021 г. 22:56:36(UTC)
Илья Кожевников

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

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

Сказал(а) «Спасибо»: 3 раз
Спасибо за ссылку, но это немного не то. В этом примере нету подключения сертификата через CURLOPT_SSLCERT для двусторонней авторизации.
Offline Илья Кожевников  
#4 Оставлено : 4 февраля 2021 г. 0:30:57(UTC)
Илья Кожевников

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

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

Сказал(а) «Спасибо»: 3 раз
Нашел, что сертификат надо добавить в хранилище, а надо в CURLOPT_SSLCERT указывать fingerprint сертификата. Получилось вот так

curl_easy_setopt(curlHandle, CURLOPT_SSLCERTTYPE, "CERT_SHA1_HASH_PROP_ID:CERT_SYSTEM_STORE_LOCAL_MACHINE:MY");
curl_easy_setopt(curlHandle, CURLOPT_SSLCERT, "727C1E1EA2B397CBC5D00712E2EF2CE2C876BD7E"));

Но при отправке запроса в логи выводятся ошибки
<capi20>0x7000012fd000:CryptAcquireCertificatePrivateKey!() CertGetCertificateContextPropertyWithLock(CERT_KEY_PROV_INFO_PROP_ID) failed! (:294)
<capi20>0x7000012fd000:CryptAcquireCertificatePrivateKey!(failed: LastError = 0x8009200b) (:312)
<ssp>0x7000012fd000:SSPCPAcquireProvider! AcquireCryptUserData() failed! (:720)
<ssp>0x7000012fd000:AddToMessageLog!CryptoPro TLS. Error 0x8009200b calling CSP: unknown error (:5491)
<ssp>0x7000012fd000:CPSSPCreateCredentials! failed to acquire provider! (:4624)
<ssp>0x7000012fd000:CPAcquireCredentialsHandleA!failed: LastError = 0x80090304 (:1222)
* schannel: AcquireCredentialsHandle failed: SEC_E_INTERNAL_ERROR (0x80090304)
* Closing connection 0
* schannel: shutting down SSL/TLS connection with my.site.net

Может кто-нибудь подсказать, в чем возможна проблема и куда копать дальше? Сертификат на прошлой версии проекта с другим фреймворков работает нормально.
Offline Максим Коллегин  
#5 Оставлено : 4 февраля 2021 г. 14:50:24(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Сертификат нужно установить в хранилище вместе со ссылкой на закрытый ключ.
Знания в базе знаний, поддержка в техподдержке
Offline Илья Кожевников  
#6 Оставлено : 11 февраля 2021 г. 20:15:33(UTC)
Илья Кожевников

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

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

Сказал(а) «Спасибо»: 3 раз
Спасибо, я поизучал немного. Ключ тоже надо подключать, но все примеры которые я находил - везде в CURLOPT_SSLKEY указывается путь до файла. А можете, пожалуйста, дать пример можно ли сделать также - закинуть ключ в хранилище и передать в курл ссылку на него каким-то идентификатором?
Offline Андрей Русев  
#7 Оставлено : 12 февраля 2021 г. 13:13:34(UTC)
Русев Андрей

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,260

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 442 раз в 322 постах
Так как консольный curl почти тождественно отображает свой интерфейс, то предлагаю начинать разбираться с него.
Выведем сертификат, на котором клиент будет аутентифицироваться:
Код:
u1@test-x64-astra:/$ /opt/cprocsp/bin/amd64/certmgr -list -store umy -dn 'E=cln512e@cryptopro.ru, CN=cln512e'
Certmgr 1.1 (c) "КРИПТО-ПРО", 2007-2021.
Программа для работы с сертификатами, CRL и хранилищами.
=============================================================================
1-------
Издатель            : DC=ru, DC=cp, CN=test-ca
Субъект             : CN=cln512e, E=cln512e@cryptopro.ru
Серийный номер      : 0x1E8E40B0000000984EF5
SHA1 отпечаток      : b678ede9713307cba440107f182547047351d8ae
Идентификатор ключа : e256d693da712d963c8619ce92350258e5125998
Алгоритм подписи    : ГОСТ Р 34.11/34.10-2001
Алгоритм откр. кл.  : ГОСТ Р 34.10-2012 256 бит (512 бит)
Выдан               : 10/02/2021  23:00:05 UTC
Истекает            : 11/02/2031  05:40:05 UTC
Ссылка на ключ      : Есть                
Контейнер           : HDIMAGE\\cln512LM.000\6F36
Имя провайдера      : Crypto-Pro GOST R 34.10-2012 KC1 CSP
Инфо о провайдере   : Тип провайдера: 80, тип ключа: 1, флаги: 0x0
URL сертификата УЦ  : http://vm-test-ca.cp.ru/CertEnroll/vm-test-ca.cp.ru_test-ca.crt
URL сертификата УЦ  : file://\\vm-test-ca.cp.ru\CertEnroll\vm-test-ca.cp.ru_test-ca.crt
URL списка отзыва   : http://vm-test-ca.cp.ru/CertEnroll/test-ca.crl
Назначение/EKU      : 1.3.6.1.5.5.7.3.2 Проверка подлинности клиента
=============================================================================

Видно, что у сертификата есть ссылка на закрытый ключ. И его отпечаток - b678ede9713307cba440107f182547047351d8ae. Используем его для подключения:
Код:
u1@test-x64-astra:/$ /opt/cprocsp/bin/amd64/curl https://tls-server:443/auth.htm --output /tmp/auth.htm --cert-type CERT_SHA1_HASH_PROP_ID:CERT_SYSTEM_STORE_CURRENT_USER:My --pass 1234567890 --cert b678ede9713307cba440107f182547047351d8ae
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100   334  100   334    0     0   3670      0 --:--:-- --:--:-- --:--:--  3630

Обращаю внимание, что CERT_SYSTEM_STORE_LOCAL_MACHINE надо использовать для личного хранилища компьютера - mmy, а CERT_SYSTEM_STORE_CURRENT_USER - для личного хранилища пользователя - umy.
Официальная техподдержка. Официальная база знаний.
thanks 1 пользователь поблагодарил Русев Андрей за этот пост.
Санчир Момолдаев оставлено 12.02.2021(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.