Статус: Новичок
Группы: Участники
Зарегистрирован: 23.05.2025(UTC) Сообщений: 2 
|
Добрый день. На нашем предприятии используется прокси с авторизацией negotiate. КриптоПро 5.0.1.13. При проверке подписи, cptools правильно определяет прокси, но авторизацию не использует. Вроде в составе дистрибутива есть curl, но попытки подсунуть .curlrc не помогли. Можно как-то заставить его авторизоваться текущим пользователем или хотя бы каким-то фиксированным, но только для cptools?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 02.11.2017(UTC) Сообщений: 73  Сказал «Спасибо»: 14 раз Поблагодарили: 32 раз в 29 постах
|
Здравствуйте.
Отвечу по порядку.
Правка .curlrc не поможет и не должна была помочь. Следует разделять две сущности: утилиту curl и библиотеку libcurl. Утилита использует библиотеку, поэтому если что-то влияет на библиотеку, то оно как правило влияет и на утилиту. Обратное неверно: в утилите есть масса своих наворотов, и насколько я нагуглил, это как раз такой случай. Файл .curlrc – это про утилиту, а не про библиотеку. Один пользователь в апстриме curl попросил сделать подобное для библиотеки, но сейчас это не сделано. |
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 02.11.2017(UTC) Сообщений: 73  Сказал «Спасибо»: 14 раз Поблагодарили: 32 раз в 29 постах
|
Наш код под капотом использует libcurl для многих сетевых обменов, в т.ч. вероятнее всего для тех, на которые вы хотели повлиять -- на сетевые обмены при построении и проверке цепочек сертификатов. Я же верно предположил? На libcurl можно повлиять, выставив переменные окружения (http_proxy, https_proxy и подобное). Там можно указать адрес прокси, порт, имя пользователя и пароль. Это ведь именно те параметры, которые вас интересовали? Это можно сделать в консоли перед запуском cptools или другой утилиты, возможно можно как-то вписать в ярлык для запуска cptools. Не очень удобно, действительно. Но дело в том, что обычно пользователям если и нужно задавать прокси, то сразу для всего профиля пользователя ОС. А если так, то выставление этих переменных можно вписать в системный файл инициализации сессии, как графической, так и консольной, чтобы у пользователя всегда была задана переменная с параметрами про прокси. И прокси будет прозрачно работать в CSP, curl и много где ещё -- на *nix в эти переменные окружения много кто смотрит. Если мне память не изменяет, я на Ubuntu даже где-то в графических настройках системы видел возможность задания глобального прокси для пользователя -- полагаю, именно через это оно и сделано. Или вы хотите только для CSP задать опцию? Замечу, что не только для cptools -- cptools сам по себе вообще не делает сетевых обменов, насколько я понимаю. Сетевые обмены делают низлежащие библиотеки CSP. У вас есть потребность именно на них повлиять, чтобы у них прокси был задан где-то, а у всех остальных программ нет? |
|
 1 пользователь поблагодарил Зубов Иван за этот пост.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 02.11.2017(UTC) Сообщений: 73  Сказал «Спасибо»: 14 раз Поблагодарили: 32 раз в 29 постах
|
В будущих версиях добавим параметры в конфиг: Цитата:[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.htmlhttps://curl.se/libcurl/c/CURLOPT_PROXYAUTH.htmlhttps://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. Спасибо за жалобу! |
|
 2 пользователей поблагодарили Зубов Иван за этот пост.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.01.2026(UTC) Сообщений: 3  Сказал(а) «Спасибо»: 3 раз Поблагодарили: 1 раз в 1 постах
|
Автор: Зубов Иван  В будущих версиях добавим параметры в конфиг: Задать можно через 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.htmlhttps://curl.se/libcurl/c/CURLOPT_PROXYAUTH.htmlhttps://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)) Скажите, пожалуйста, когда планируется реализовать автоматическую проверку цепочки сертификатов в cptools? Сейчас скачиваю crl вручную и добавляю в хранилище пользователя. Отредактировано пользователем 16 января 2026 г. 11:25:13(UTC)
| Причина: curl работает с прокси по kerberos. Проверено в версии 5.0.13000 и 5.0.13600
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,643
Сказал(а) «Спасибо»: 49 раз Поблагодарили: 704 раз в 486 постах
|
Автор: GIT_180  Скажите, пожалуйста, когда планируется реализовать использование параметров прокси в конфиге и авторизация на прокси по kerberos? Поддержка появилась в 2025-08-03 КриптоПро CSP 5.0.13600 Wyvern: Цитата: capilite: В секции Parameters конфигурационного файла можно задать CURLOPT_PROXY через параметр CurlProxy и CURLOPT_PROXYAUTH через параметр CurlProxyAuth (CPCSP-14702). curl: Добавлена поддержка Kerberos аутентификации на Linux (CPCSP-15282). |
|
 2 пользователей поблагодарили Русев Андрей за этот пост.
|
nickm оставлено 16.01.2026(UTC), GIT_180 оставлено 16.01.2026(UTC)
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 02.11.2017(UTC) Сообщений: 73  Сказал «Спасибо»: 14 раз Поблагодарили: 32 раз в 29 постах
|
Скажите, пожалуйста, когда планируется реализовать автоматическую проверку цепочки сертификатов в cptools? Сейчас скачиваю crl вручную и добавляю в хранилище пользователя. В cptools можно выбрать сертификат, нажать "Свойства сертификата", и в появившемся окне будет информация в т.ч. о цепочке сертификата, которая как раз будет построена и проверена на отзыв. При отсутствии нужных CRL в хранилищах и в кэше они будут скачаны из сети и помещены в кэш, который будет использован (если это не будет явно запрещено в коде) при последующих проверках цепочки. Возможно, это то, что вам нужно. |
|
 1 пользователь поблагодарил Зубов Иван за этот пост.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.11.2019(UTC) Сообщений: 2
|
Автор: Русев Андрей  Автор: GIT_180  Скажите, пожалуйста, когда планируется реализовать использование параметров прокси в конфиге и авторизация на прокси по kerberos? Поддержка появилась в 2025-08-03 КриптоПро CSP 5.0.13600 Wyvern: Цитата: capilite: В секции Parameters конфигурационного файла можно задать CURLOPT_PROXY через параметр CurlProxy и CURLOPT_PROXYAUTH через параметр CurlProxyAuth (CPCSP-14702). curl: Добавлена поддержка Kerberos аутентификации на Linux (CPCSP-15282). Добрый день! Скажите, пожалуйста, возможна ли реализация автоматического поиска прокси через wpad, а не задание в явном виде?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,643
Сказал(а) «Спасибо»: 49 раз Поблагодарили: 704 раз в 486 постах
|
Автор: Михаил Балыков  Скажите, пожалуйста, возможна ли реализация автоматического поиска прокси через wpad, а не задание в явном виде? Здравствуйте. На текущий момент curl не поддерживает WPAD / PAC: Цитата:Since curl has no JavaScript capabilities, curl does not support PAC files. If your browser and network use PAC files, the easiest route forward is usually to read the PAC file manually and figure out the proxy you need to specify to run curl successfully. Тем не менее в списке рассылки curl 10 лет назад обсуждалось, что на Linux можно настроить глобальный autoproxy: документация Clear Linux. |
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close