Статус: Участник
Группы: Участники
Зарегистрирован: 07.12.2020(UTC) Сообщений: 13 Сказал(а) «Спасибо»: 3 раз
|
Добрый день, столкнулся с проблемой при реализации двусторонней авторизации на айос. В документе "ЖТЯИ.00101-02 95 01. Правила пользования" использовать опцию CURLOPT_SSLCERT при настройке курла для задания сертификата. Проблема, что не могу найти информацию о том, как указать адрес сертификата TLS-клиента в системном хранилище сертификатов. Пытался передать просто путь до файла с сертификатом, но получаю только ошибки. Можете кто-нибудь рассказать, что конкретно надо передавать? Желательно с примерчиком бы.
|
|
|
|
Статус: Администратор
Группы: Участники
Зарегистрирован: 01.03.2017(UTC) Сообщений: 101 Откуда: Москва Сказал(а) «Спасибо»: 6 раз Поблагодарили: 33 раз в 24 постах
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 07.12.2020(UTC) Сообщений: 13 Сказал(а) «Спасибо»: 3 раз
|
Спасибо за ссылку, но это немного не то. В этом примере нету подключения сертификата через CURLOPT_SSLCERT для двусторонней авторизации.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 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
Может кто-нибудь подсказать, в чем возможна проблема и куда копать дальше? Сертификат на прошлой версии проекта с другим фреймворков работает нормально.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,390 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 714 раз в 619 постах
|
Сертификат нужно установить в хранилище вместе со ссылкой на закрытый ключ. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 07.12.2020(UTC) Сообщений: 13 Сказал(а) «Спасибо»: 3 раз
|
Спасибо, я поизучал немного. Ключ тоже надо подключать, но все примеры которые я находил - везде в CURLOPT_SSLKEY указывается путь до файла. А можете, пожалуйста, дать пример можно ли сделать также - закинуть ключ в хранилище и передать в курл ссылку на него каким-то идентификатором?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,396
Сказал(а) «Спасибо»: 32 раз Поблагодарили: 551 раз в 386 постах
|
Так как консольный 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. |
|
1 пользователь поблагодарил Русев Андрей за этот пост.
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close