LINUX.ORG.RU

Прокси для curl

 , ,


0

1

Добрый день вам знатоки! Являюсь начинающим познавателем ОС LINUX поэтому просьба сильно не удивляться моим вопросам )

Ситуация: Есть web-сервис, который работает на tomcat. Данный сервис пользуется КриптоПро CSP 4,0. Ввиду окончания действия сертификатов, крипта пытается напрямую их скачать. И все бы ничего, но в организации прямой доступ в инет закрыт и приходится рассматривать вариант пройти через прокси. Здесь стоит уточнить, что крипта пытается скачать серты посредством curl, вивду чего была добавлена переменная окружения для соответствующего пользователя. Результат: посредством curl из командной строки, сертификат качается (разумеется, под нужным пользователем), но вот беда: когда tomcat пытается инициализировать крипту (под данным пользователем все качается) и та начинает качать серты, то в логах крипты видно ошибки вида «UrlRetriever failed (CURLcode: 12029 URL:…», т.е. скачать не получается ввиду отсутствия доступа к сертификату. Т.е. если говорить проще, то все качается нормально черзе curl, а через tomcat/криптопро - нет. Как предположение: прописаная прокся в переменной окружения пользователя, работает только из консоли (интерактивного сеанса пользователя). Вопрос: насколько верно данное утверждение и что в таком случае делать? Если вариант - бред, то какое возможно решение?



Последнее исправление: Mr_OS (всего исправлений: 2)

крипта пытается скачать серты посредством curl

Уверены? Она может это делать через библиотеку libcurl, а может через что-то ещё. UrlRetriever failed похоже на что-то питоновское.

pinus_nigra
()
Ответ на: комментарий от pinus_nigra

Она может это делать через библиотеку libcurl, а может через что-то ещё.

И как быть в таком случае?

Mr_OS
() автор топика
Ответ на: комментарий от Mr_OS

В общем случае - никак, если работа через прокси не предусмотрена, то легко не будет. Поднимите прозрачный прокси, тогда крипта будет думать что коннектится напрямую. Но для этого скорее всего понадобится кто-то поопытнее «начинающего познавателя», там в iptables или что там сейчас вместо него лезть надо будет.

pinus_nigra
()
Ответ на: комментарий от Mr_OS

с чего бы?
только приложения умеющие работать с прокси и понимающие эту переменную будут лезть на прокси

Minona ★★☆
()
Ответ на: комментарий от iljuase

https://stackoverflow.com/a/35815181/4788605 не подойдёт так?

Именно так и был добавлен прокси для curl. Но, к сожалению, это не сработало при инициализации крипты через tomcat.

пропиши переменную прокси в /etc/environment ребутнись может быть прокатит

А не получится ли так, что будет работать для всех программ запущенных только из терминала? Насколько это полезно для приложения которое работает через сервисapi?

Mr_OS
() автор топика
Ответ на: комментарий от cocucka

А вручную добавить скачанные сертификаты в хранилище никак?

Можно, но придется это делать с определенной переодичностью. Но даже это не страшно. Другое дело, что серверов 10 штук. И для каждого, с той же периодичностью, нужно будет качать и вкладывать эти серты.

Mr_OS
() автор топика
Ответ на: комментарий от Mr_OS

А не получится ли так, что будет работать для всех программ запущенных только из терминала

Можно заодно с переменными http(s)_proxy задать и no_proxy в которой указать локальные адреса/хосты доступные без прокси.

Ещё стоит проверить, что протоколы совпадают или задать прокси и для http и для https. Может так быть, что вручную вы качаете через http, а скрипт криптопро качает по https.

cocucka ★★★★☆
()
Ответ на: комментарий от cocucka

пропиши переменную прокси в /etc/environment

Результат: не работает Причина: системная настройка считывается один раз из /etc/environment и если tomcat работал по своему направлению, прописть на работает.

https://www.ibm.com/docs/ja/rtw/8.7.0?topic=setup-configuring-apache-tomcat-u... не подходит?

Результат: не работает Причина: я хз, но факт остается фактом, что в логах по-прежнему ошибка скачки. Возможно прописать неверный формат, но при загрузке, томкат не ругался. Разумеется, после прописи, проводилась перезагрузка томката.

Можно заодно с переменными http(s)_proxy задать и no_proxy в которой указать локальные адреса/хосты доступные без прокси.

Результат: не работает Причина: причина та же что и в первом кейсе: переменная считывается только один раз.

Остается 2 варианта: 1. прозрачный прокси, ранееописанный; 2. подложить серты вручную.

Mr_OS
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.