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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline yurm  
#1 Оставлено : 23 мая 2025 г. 9:55:52(UTC)
yurm

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

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

Добрый день.
На нашем предприятии используется прокси с авторизацией negotiate. КриптоПро 5.0.1.13. При проверке подписи, cptools правильно определяет прокси, но авторизацию не использует. Вроде в составе дистрибутива есть curl, но попытки подсунуть .curlrc не помогли. Можно как-то заставить его авторизоваться текущим пользователем или хотя бы каким-то фиксированным, но только для cptools?
Offline Зубов Иван  
#2 Оставлено : 23 мая 2025 г. 20:42:30(UTC)
Зубов Иван

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

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

Сказал «Спасибо»: 12 раз
Поблагодарили: 28 раз в 25 постах
Здравствуйте.

Отвечу по порядку.

Правка .curlrc не поможет и не должна была помочь. Следует разделять две сущности: утилиту curl и библиотеку libcurl. Утилита использует библиотеку, поэтому если что-то влияет на библиотеку, то оно как правило влияет и на утилиту. Обратное неверно: в утилите есть масса своих наворотов, и насколько я нагуглил, это как раз такой случай. Файл .curlrc – это про утилиту, а не про библиотеку. Один пользователь в апстриме curl попросил сделать подобное для библиотеки, но сейчас это не сделано.
Техническую поддержку оказываем тут
Наша база знаний
Offline Зубов Иван  
#3 Оставлено : 23 мая 2025 г. 20:55:17(UTC)
Зубов Иван

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

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

Сказал «Спасибо»: 12 раз
Поблагодарили: 28 раз в 25 постах
Наш код под капотом использует libcurl для многих сетевых обменов, в т.ч. вероятнее всего для тех, на которые вы хотели повлиять -- на сетевые обмены при построении и проверке цепочек сертификатов. Я же верно предположил?

На libcurl можно повлиять, выставив переменные окружения (http_proxy, https_proxy и подобное). Там можно указать адрес прокси, порт, имя пользователя и пароль. Это ведь именно те параметры, которые вас интересовали?

Это можно сделать в консоли перед запуском cptools или другой утилиты, возможно можно как-то вписать в ярлык для запуска cptools. Не очень удобно, действительно. Но дело в том, что обычно пользователям если и нужно задавать прокси, то сразу для всего профиля пользователя ОС. А если так, то выставление этих переменных можно вписать в системный файл инициализации сессии, как графической, так и консольной, чтобы у пользователя всегда была задана переменная с параметрами про прокси. И прокси будет прозрачно работать в CSP, curl и много где ещё -- на *nix в эти переменные окружения много кто смотрит. Если мне память не изменяет, я на Ubuntu даже где-то в графических настройках системы видел возможность задания глобального прокси для пользователя -- полагаю, именно через это оно и сделано.

Или вы хотите только для CSP задать опцию? Замечу, что не только для cptools -- cptools сам по себе вообще не делает сетевых обменов, насколько я понимаю. Сетевые обмены делают низлежащие библиотеки CSP. У вас есть потребность именно на них повлиять, чтобы у них прокси был задан где-то, а у всех остальных программ нет?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Зубов Иван за этот пост.
Санчир Момолдаев оставлено 22.07.2025(UTC)
Offline Зубов Иван  
#4 Оставлено : 22 июля 2025 г. 18:33:06(UTC)
Зубов Иван

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

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

Сказал «Спасибо»: 12 раз
Поблагодарили: 28 раз в 25 постах
В будущих версиях добавим параметры в конфиг:

Цитата:
[Parameters]
# строка с параметрами прокси
CurlProxy="abc.ru:3128"
# битовая маска настроек авторизации на прокси
CurlProxyAuth=127


Задать можно через cpconfig:
/opt/cprocsp/sbin/amd64/cpconfig -ini '\config\Parameters' -add string CurlProxy 'a'
/opt/cprocsp/sbin/amd64/cpconfig -ini '\config\Parameters' -add long CurlProxyAuth 1

Подробнее о параметрах:
https://curl.se/libcurl/c/CURLOPT_PROXY.html
https://curl.se/libcurl/c/CURLOPT_PROXYAUTH.html
https://curl.se/libcurl/c/CURLOPT_HTTPAUTH.html

Значения констант:
Цитата:
#define CURLAUTH_NONE ((unsigned long)0)
#define CURLAUTH_BASIC (((unsigned long)1)<<0)
#define CURLAUTH_DIGEST (((unsigned long)1)<<1)
#define CURLAUTH_NEGOTIATE (((unsigned long)1)<<2)
/* Deprecated since the advent of CURLAUTH_NEGOTIATE */
#define CURLAUTH_GSSNEGOTIATE CURLAUTH_NEGOTIATE
/* Used for CURLOPT_SOCKS5_AUTH to stay terminologically correct */
#define CURLAUTH_GSSAPI CURLAUTH_NEGOTIATE
#define CURLAUTH_NTLM (((unsigned long)1)<<3)
#define CURLAUTH_DIGEST_IE (((unsigned long)1)<<4)
#ifndef CURL_NO_OLDIES
/* functionality removed since 8.8.0 */
#define CURLAUTH_NTLM_WB (((unsigned long)1)<<5)
#endif
#define CURLAUTH_BEARER (((unsigned long)1)<<6)
#define CURLAUTH_AWS_SIGV4 (((unsigned long)1)<<7)
#define CURLAUTH_ONLY (((unsigned long)1)<<31)
#define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE)
#define CURLAUTH_ANYSAFE (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE))


Тикет для отслеживания: CPCSP-14702. Спасибо за жалобу!
Техническую поддержку оказываем тут
Наша база знаний
thanks 2 пользователей поблагодарили Зубов Иван за этот пост.
nickm оставлено 22.07.2025(UTC), Санчир Момолдаев оставлено 22.07.2025(UTC)
Offline Sid111  
#5 Оставлено : 3 сентября 2025 г. 12:15:28(UTC)
Sid111

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

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

похожая ситуация, КриптоПро последняя из доступных

curl -v http:// ... .cer --proxy-negotiate --proxy-user :

* Uses proxy env variable no_proxy = ...
* Connected to ... port ... (#0)

* Proxy auth using Negotiate with user ''
> GET http://... .cer HTTP/1.1
> Host: ....
> Proxy-Authorization: Negotiate YIIKb...
> User-Agent: curl/7.88.1
> Accept: */*
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 OK
< Proxy-Authentication-Info: Negotiate oYGz...
....
< Content-Type: application/x-x509-ca-cert
...
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.
* Failure writing output to destination
* Closing connection 0

/opt/cprocsp/bin/amd64/curl -V
curl 8.11.1-DEV (x86_64-pc-linux-gnu) libcurl/8.11.1-DEV Schannel zlib/1.2.13

/opt/cprocsp/bin/amd64/curl -v http:// ... .cer --proxy-negotiate --proxy-user :
* Uses proxy env variable no_proxy == ...
* Uses proxy env variable http_proxy == ...
* Host .... was resolved.
* IPv6: (none)
* IPv4: ...
* Trying ...
* Connected to ... port ...
* using HTTP/1.x
> GET http:// ... .cer HTTP/1.1
> Host: gisca.ru
> User-Agent: curl/8.11.1-DEV
> Accept: */*
> Proxy-Connection: Keep-Alive
>
* Request completely sent off
< HTTP/1.1 407 Proxy Authentication Required
< Proxy-Authenticate: Negotiate
< Content-Length: 29
<
* Connection #0 to host ... left intact

в итоге

chrome[ ]: <capi20>LogUrlRetrieverError!() UrlRetriever failed (CURLcode: 407 URL: http:// .... .cer ).
chrome[]: <capi20>CryptRetrieveObjectByUrlAImpl!DownloadFromNetwork failed: LastError = 0x80092004, Url = http://... .cer, ObjectOid = 0x1, Flags = 0x00000005, Timeout = 15000, Object = 0x701af43fa398, AuxInfo = 0x701af43fa3c0



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