Php ssl certificate verify failed

Php ssl certificate verify failed

DirectAdminэто удобная панель управления хостингом. Легкость в настройке, легкость в использовании!
ДиректАдминсамая быстрая и нересурсоемкая панель из всех существующих коммерческих панелей управления для хостинга. Бесплатные и регулярные обновления версии панели DirectAdmin на протяжении всего времени ее использования заметно выделяют ее среди других.

PHP 5.6: SSL operation failed with code 1

Было замечено, что я ряде случаев после обновления PHP до версии 5.6 возникают трудности с подключением к серверам средствами PHP, включая почтовые сервисы, HTTPS-сайты. Одной из возможных причин может быть ошибка при проверки валидности сертификатов SSL/TLS. При разборе можно натолкнуться на сообщение подобное одному из следующих:

SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Если ошибка одинаково возникает при подключении к хостам, которые 100% используют достоверные SSL сертификаты, и имя хоста для подключения совпадает с именем в таком сертификате, то проблема скорее всего кроется в том, что для PHP не указан или указан некорректно параметр openssl.cafile.

Из документации PHP 5.6

Все шифруемые клиентские потоки теперь по умолчанию включают проверку пиров. По умолчанию используется OpenSSL CA пакет для проверки сертификата пира. В большинстве случаев не требуется ничего делать для соединения с серверами с правильным SSL сертификатом, так как обычно OpenSSL уже настроен для использования хороших CA пакетов.

Стандартный CA пакет может быть переопределен глобально с помощью установки или openssl.cafile или openssl.capath строк конфигурации, или же на уровне каждого запроса используя опции контекста cafile или capath.

Читайте также:  Cdf normal distribution python

Хотя это и не рекомендуется, но можно отклчить проверку сертификата пира для запроса, установив verify_peer опцию контекста в FALSE, и можно отключить проверку имени пира, установив verify_peer_name в FALSE.

Проверяем настройки

И так проверяем настройки:

# php -r 'print_r(openssl_get_cert_locations());' | grep '\[default_cert_file\]' | awk ''

Результатом должна быть одна строка, указывающая на CA пакет (cafile):

/usr/ssl/cert.pem /usr/local/etc/ssl/cert.pem

В зависимости от используемой ОС и сборки PHP путь может отличаться. Главное здесь — убедиться, что указанный файл существует, и что он не пустой и соддержит корректную информацию.

Если файла нет или он поврежден, то восстановить его можно на CentOS с помощью (пере-)установки ca-certificates:

# yum reinstall ca-certificates

FreeBSD с пакетом security/ca_root_nss

# pkg install security/ca_root_nss

Или же скачать CA пакет целиком по ссылке http://curl.haxx.se/ca/cacert.pem

# wget http://curl.haxx.se/ca/cacert.pem -O \ `php -r 'print_r(openssl_get_cert_locations());' | grep '\[default_cert_file\]' | awk ''`

Вам нужна помощь или консультация по данному руководству?! Задайте свой вопрос на форуме. Вам нужен профессионал?! Воспользуйтесь услугами системного администратора для работ по вашему серверу. Мы поможем вам с переездом, настройкой, оптимизацией сервисов, равно как и с другими вопросами по части Linux/Unix.

Источник

PHP ошибка OpenSSL error:14090086 и Failed to enable crypto in

OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate file_get_contents(): Failed to enable crypto in

01 октября 2021 года я столкнулся с проблемой — в проекте на WordPress и PHP 7.0 перестали работать все скрипты, которые получают что-то из вне по https с помощью file_get_contents и wp_remote_get. C wp_remote_get все получилось решить просто:

В логах nginx ошибка file_get_contents(): Failed to enable crypto in

SSL operation failed with code 1. OpenSSL Error messages : error : 14090086 : SSL routines : ssl3_get_server_certificate

error : 14090086 : SSL routines : ssl3_get_server_certificate : certificate verify failed in / home / web / azzrael . ru / subscribe — azzrael — code — youtube . php on line 2

PHP message : PHP Warning : file_get_contents ( ) : Failed to enable crypto in / home / web / azzrael . ru / subscribe — azzrael — code — youtube . php on line 2

PHP message : PHP Warning : file_get_contents ( [ https : //www.youtube.com/channel/UCf6kozNejHoQuFhBDB8cfxA.jpg](https://www.youtube.com/channel/UCf6kozNejHoQuFhBDB8cfxA.jpg)): failed to open stream: operation failed in /home/web/azzrael.ru/subscribe-azzrael-code-youtube.php on line 2

PHP message : PHP Fatal error : Uncaught Exception : cant get file in / home / web / azzrael . ru / subscribe — azzrael — code — youtube . php : 3

thrown in / home / web / azzrael . ru / subscribe — azzrael — code — youtube . php on line 3 » while reading response header from upstream, client: 8.8.8.8, server: [azzrael.ru](http://azzrael.ru/), request: » GET / subscribe — azzrael — code — youtube . php HTTP / 2.0 «, upstream: » fastcgi : //unix:/run/php/php7.0-fpm.sock:», host: «[azzrael.ru](http://azzrael.ru/)»

Упоминание OpenSSL и ssl3_get_server_certificate вместе сразу дало направление на гугление в сторону проблем с сертификатами. Так и оказалось.

Истечение корневых сертификатов Lets Encrypt

Вероятно сама проблема связана с истечением 30 сентября 2021 года корневых сертификатов Lets Encrypt. Возможно, также что проблема связана с версией PHP — на проекте используется довольно устаревшая PHP 7.0.

Решение проблемы

Затем в php.ini в раздел openssl прописал следующее:

Источник

Php ssl certificate verify failed

DirectAdminэто удобная панель управления хостингом. Легкость в настройке, легкость в использовании!
ДиректАдминсамая быстрая и нересурсоемкая панель из всех существующих коммерческих панелей управления для хостинга. Бесплатные и регулярные обновления версии панели DirectAdmin на протяжении всего времени ее использования заметно выделяют ее среди других.

PHP 5.6: SSL operation failed with code 1

Было замечено, что я ряде случаев после обновления PHP до версии 5.6 возникают трудности с подключением к серверам средствами PHP, включая почтовые сервисы, HTTPS-сайты. Одной из возможных причин может быть ошибка при проверки валидности сертификатов SSL/TLS. При разборе можно натолкнуться на сообщение подобное одному из следующих:

SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Если ошибка одинаково возникает при подключении к хостам, которые 100% используют достоверные SSL сертификаты, и имя хоста для подключения совпадает с именем в таком сертификате, то проблема скорее всего кроется в том, что для PHP не указан или указан некорректно параметр openssl.cafile.

Из документации PHP 5.6

Все шифруемые клиентские потоки теперь по умолчанию включают проверку пиров. По умолчанию используется OpenSSL CA пакет для проверки сертификата пира. В большинстве случаев не требуется ничего делать для соединения с серверами с правильным SSL сертификатом, так как обычно OpenSSL уже настроен для использования хороших CA пакетов.

Стандартный CA пакет может быть переопределен глобально с помощью установки или openssl.cafile или openssl.capath строк конфигурации, или же на уровне каждого запроса используя опции контекста cafile или capath.

Хотя это и не рекомендуется, но можно отклчить проверку сертификата пира для запроса, установив verify_peer опцию контекста в FALSE, и можно отключить проверку имени пира, установив verify_peer_name в FALSE.

Проверяем настройки

И так проверяем настройки:

# php -r 'print_r(openssl_get_cert_locations());' | grep '\[default_cert_file\]' | awk ''

Результатом должна быть одна строка, указывающая на CA пакет (cafile):

/usr/ssl/cert.pem /usr/local/etc/ssl/cert.pem

В зависимости от используемой ОС и сборки PHP путь может отличаться. Главное здесь — убедиться, что указанный файл существует, и что он не пустой и соддержит корректную информацию.

Если файла нет или он поврежден, то восстановить его можно на CentOS с помощью (пере-)установки ca-certificates:

# yum reinstall ca-certificates

FreeBSD с пакетом security/ca_root_nss

# pkg install security/ca_root_nss

Или же скачать CA пакет целиком по ссылке http://curl.haxx.se/ca/cacert.pem

# wget http://curl.haxx.se/ca/cacert.pem -O \ `php -r 'print_r(openssl_get_cert_locations());' | grep '\[default_cert_file\]' | awk ''`

Вам нужна помощь или консультация по данному руководству?! Задайте свой вопрос на форуме. Вам нужен профессионал?! Воспользуйтесь услугами системного администратора для работ по вашему серверу. Мы поможем вам с переездом, настройкой, оптимизацией сервисов, равно как и с другими вопросами по части Linux/Unix.

Источник

certificate verify failed Telegram

Доброго времени суток. Возникла потребность в написании телеграм-бота с использованием WebHook. Имеется самоподписанный сертификат от Let’s Encrypt. Отправляю через CURL сертификат формата *.pem, при повторном запросе «getWebhookInfo» выводит следующую ошибку:

Сертификат был верифицирован как «Сертификат сервера SSL».

Массив с сертификатом отправляется — 100%. Пробовал ставить сгенерированный сертификат — так же возвращает ошибку. Может необходимо отправлять не «Сертификат сервера SSL»?

Ответы (2 шт):

Если необходимо просто установить webhook то перейди по ссылке, подставив нужные значения https://api.telegram.org/botXXXXXXXXX:YOUR_TOKEN/setWebHook?url=YOUR_URL С сертификатами от lets encrypt и вебхуками у меня проблем не возникало

Очень распространенная ошибка, в данном случае вы кидаете сертификат телеграму, но он думает что данный сертификат верифицирован и ожидает полной проверки. Решение очень простое в curl запросе перед сертификатом поставьте знак @ Это будет означать что сертификат самоподписаный (я понимаю что let’s encrypt не самоподписаный, но в данном случае мне кажется полная проверка сертификата и не нужна, телеграмму шифрует — вы расшифровуете, все просто) Должно получится так:

curl -F "url=https://ваш айпи или доменное имя:порт/" -F "certificate=@путь к сертификату(ну или перейдите в папку где он лежит и можно просто указать имя)" "https://api.telegram.org/botТОКЕНБОТА/setwebhook" 
curl -F "url=https://177.177.177.77:443/" -F "[email protected]" "https://api.telegram.org/bot321321321:dsad1k3j2b3jj321h/setwebhook" 

Источник

Оцените статью