Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[44.192.95.161] |
|
Сообщ.
#1
,
|
|
|
Доброго времени. Такая проблема и не знаю, где копать. Суть проблемы:
Есть БД (oracle), есть переадресующие сервера новый nginx на centos7, старый - apache на SunOS. Т.к. версия oracle некорректно работает с сертификатами (11) и пропатчить её до нужной версии не представляется возможным,то для переадресации xml-запросов из oracle был развёрнут сервер сначала apache (ещё до начала времён), а ныне на замену nginx. Oracle обращается к переадресующему серверу, дёргает .php-скрипт, где прописан curl с опциями и далее в биллинг контрагента. Это общая схема работы, ничего такого военного. Но тут с столкнулся проблемой: Взял .php скрипты с apache и скопировал на nginx. Есть сервисы, работающие без сертификата, а есть с сертификатом (прописываются в curl_setopt). Допустим синтаксис такой: 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 по тому же алгоритму нет" не вразумили. |
Сообщ.
#2
,
|
|
|
upd
Включил расширенный лог в .php все неудачные запросы ложатся так: * 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 следом этот же запрос, но уже удачный * 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. Сертификат без пароля |
Сообщ.
#3
,
|
|
|
Вопрос закрыт. Проблема была в 2-х кривых потоках nginx. Их закрытие и открытие заново решило проблему, но вопрос - почему эти два потока не подхватывали сертификат остался открытым.
|