На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Дополнения к правилам (только для данного раздела)
- Используйте подсветку синтаксиса при выделении исходного кода;
- В описании темы обязательно укажите язык программирования;
- Прежде чем задать вопрос, обязательно воспользуйтесь поиском и загляните в FAQ раздела.
- Если вопрос касается серверного ПО, указывайте ОС.
- Если вопрос касается ASP.NET то лучше будет задать его в соответствующем разделе. Там вы сможете получить ответ намного быстрее.

Модераторы: Serafim, fatalist
  
> Проблемы с запросами из nginx с сертификатом
Доброго времени. Такая проблема и не знаю, где копать. Суть проблемы:
Есть БД (oracle), есть переадресующие сервера новый nginx на centos7, старый - apache на SunOS. Т.к. версия oracle некорректно работает с сертификатами (11) и пропатчить её до нужной версии не представляется возможным,то для переадресации xml-запросов из oracle был развёрнут сервер сначала apache (ещё до начала времён), а ныне на замену nginx. Oracle обращается к переадресующему серверу, дёргает .php-скрипт, где прописан curl с опциями и далее в биллинг контрагента. Это общая схема работы, ничего такого военного. Но тут с столкнулся проблемой:
Взял .php скрипты с apache и скопировал на nginx. Есть сервисы, работающие без сертификата, а есть с сертификатом (прописываются в curl_setopt). Допустим синтаксис такой:
ExpandedWrap disabled
    curl_setopt($ch, CURLOPT_URL,            $url);
    curl_setopt($ch, CURLOPT_HTTPGET,        1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT,      'User-Agent=Mozilla/5.0 Firefox/1.0.7');
    curl_setopt($ch, CURLOPT_HTTPAUTH,       CURLAUTH_BASIC);
    curl_setopt($ch, CURLOPT_HEADER,         $head);
    curl_setopt($ch, CURLOPT_POST,           1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,     http_build_query($params));
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSLCERT,        '*полный путь к сертификату*');
    .....
    $result=curl_exec($ch);
    .....
    echo $result;

Соответственно $result возвращается в oracle и его там обрабатываю. Схема 156% рабочая, пашет на apache не первый год с результатом "отлично".
С nginx столкнулся с проблемой (я не настраивал сервер, ибо не входит в мои обязанности и знания, я им только пользуюсь), что over 15% $result приходит null, пусто, ни error_log, ни connect_log nginx-а не показывают никаких ошибок. сначала пытался грешить не сертификат, но та же схема на apache работает шикарно. Но другие схемы на nginx без сертификатов так же работают без отказов и null в $result. Понимаю, что скорее всего где-то проблема в каких-то настройках nginx, но не могу допереть - где. Обращения к сотрудникам, кто поднимал сервер nginx не дало никаких результатов, т.к. мне пытались доказать (на основе логов nginx), что сервер работает как часики и проблема в моей базе. никакие аргументы типа "на apache ни одного пустого возвращаемого $result по тому же алгоритму нет" не вразумили.
upd
Включил расширенный лог в .php
все неудачные запросы ложатся так:
ExpandedWrap disabled
    *   Trying (***.***.***.***)...
    * TCP_NODELAY set
    * Connected to бла-бла-бла-сайт.ru (***.***.***.***) port 443 (#0)
    *   CAfile: none
      CApath: none
    * Unable to load client key: Incorrect password
    * NSS error -8177 (SEC_ERROR_BAD_PASSWORD)
    * The security password entered is incorrect.
    * Closing connection 0


следом этот же запрос, но уже удачный

ExpandedWrap disabled
    *   Trying (***.***.***.***)...
    * TCP_NODELAY set
    * Connected to бла-бла-бла-сайт.ru (***.***.***.***) port 443 (#0)
    *   CAfile: none
      CApath: none
    * skipping SSL peer certificate verification
    * NSS: client certificate from file


PS. Сертификат без пароля
Сообщение отредактировано: Archelon -
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,0723 ]   [ 19 queries used ]   [ Generated: 20.06.19, 06:08 GMT ]