@kzk8888

Веб сокет fsockopen возвращает false по ssl при корректно работающем https, почему?

Имею Битрикс сайт, который крутится на ubuntu в docker контейнерах
стек nginx + php-fpm + percona mysql + memcached + elastic search

сеть также не простая. Сервер находится во внутреннем NAT пространстве и все запросы из внешки проксируются на сервер с docker контейнерами

https сертификат повесил на nginx proxy - все ок
этот же сертификат повесил на nginx docker контейнер - все ок

из локалки NAT https работает и из внешки тоже https работает
SSL сертификат новый от lets encrypt
на двух машинах (№1 проксирование, №2 машина с докер контейнерами) также корневые сертификаты тоже обновлены (ошибка с 29 сентября 2021 года)
машины также новые и свежо развернутые ubuntu 20.x

Но, проблема при прохождении проверки работы сайта, а если точнее, то "Работа с сокетами"
а если еще точнее быть то код
fsockopen('ssl://mydomain.com', 443, $err, $text, 5)

возвращает false.
Как с внешних ip так и из NAT сети тоже.
Если убрать префикс ssl:// и оставить только домен, то, без проблем возвращает source id #NUMBER
в /etc/hosts на обеих машинах прописаны внутренние ip сайтов
на машинах все порты открыты 80 и 443

nginx конф

location / {
    proxy_ignore_client_abort on;
    proxy_pass https://mydomain.ru:443;
    proxy_redirect https://mydomain.ru:443 /;
    proxy_read_timeout 300;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header HTTPS YES;
    proxy_set_header Authorization "";

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
}


$http_upgrade и $connection_upgrade описаны и заданы в nginx.conf

из контейнера php при curl по https://mydomain.ru выводилась ошибка

curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
More details here: http://curl.haxx.se/docs/sslcerts.html


но, я цепочку создал и добавил в корневой сертификат, ошибка пропала, но, именно при fsockopen это не помогло

если в /etc/hosts в машине с докер контейнерами,
на домен ставлю ip 127.0.0.1 то, при fsockopen возвращает код ошибки 111 (connection refused) и false
если ставлю ip внутренней сети машины, то, возвращает код ошибки 0 и false
если ставлю ip внешний, то, возвращает код ошибки 110 (timed out) и false

на машинах есть выход в интернет
я в замешательстве и без понятия как решить это
  • Вопрос задан
  • 198 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы