wpssl.ru wordpress WPSSL.ru

Решение проблем с SSL в WooCommerce Webhook на WordPress

Диагностика проблемы с SSL в WooCommerce Webhook

Если ваш WooCommerce webhook не срабатывает, а в логах вы видите ошибки, связанные с SSL — например, "SSL connection reset" или "certificate verify failed", проблема скорее всего связана с некорректной настройкой HTTPS. Это распространённая проблема на сайтах с самоподписанными сертификатами, устаревшими цепочками доверия или неправильными настройками сервера.

Для начала проверьте, что SSL-сертификат на вашем сайте установлен корректно и не вызывает ошибок. Используйте для этого онлайн-сервисы, например SSL Labs, которые покажут полный отчёт по сертификату и цепочке доверия.

Далее проверьте логи WooCommerce webhooks в разделе WooCommerce > Статус > Вебхуки. Ошибки с SSL могут выглядеть так:

cURL error 60: SSL certificate problem: unable to get local issuer certificate

или

cURL error 35: SSL connect error

Почему возникают ошибки SSL в Webhook WooCommerce

  • Сервер не доверяет SSL-сертификату конечной точки (endpoint) webhook;
  • Используется самоподписанный сертификат без добавления в доверенные;
  • Цепочка сертификатов неполная (пропущены промежуточные сертификаты);
  • Проблемы с настройками cURL или OpenSSL на сервере;
  • Конфликт настроек прокси или firewall, которые блокируют HTTPS запросы.

Пошаговое решение проблемы

1. Проверка и установка полного SSL-сертификата

Убедитесь, что на вашем сервере установлен полный цепочный сертификат (full chain). Для Apache или Nginx это важно, иначе cURL не сможет проверить доверие.

Если используете Let's Encrypt, убедитесь, что сервер обновил сертификаты и файлы fullchain.pem и privkey.pem корректны.

2. Обновление CA сертификатов на сервере

Часто проблема вызвана устаревшими корневыми сертификатами в системе. Обновите пакет CA сертификатов:

sudo apt update && sudo apt install --only-upgrade ca-certificates

Или для CentOS/Fedora:

sudo yum update ca-certificates

3. Принудительное указание пути к CA в PHP (если стандартный путь не срабатывает)

Добавьте в wp-config.php или в функцию, вызывающую webhook, следующий код:

add_action('woocommerce_webhook_process', function($webhook) {
    add_filter('http_request_args', function($args, $url) {
        if (strpos($url, $webhook->get_delivery_url()) !== false) {
            $args['sslverify'] = true;
            $args['sslcertificates'] = '/etc/ssl/certs/ca-bundle.crt'; // Путь к файлу CA сертификатов
        }
        return $args;
    }, 10, 2);
});

Путь /etc/ssl/certs/ca-bundle.crt зависит от вашего сервера, проверьте его наличие.

4. Временное отключение проверки SSL (только для теста!)

Чтобы проверить, в этом ли причина, можно временно отключить проверку SSL (не рекомендуется в продакшене):

add_filter('http_request_args', function($args, $url) {
    if (strpos($url, 'ваш-webhook-url') !== false) {
        $args['sslverify'] = false;
    }
    return $args;
}, 10, 2);

Если после этого webhook срабатывает, значит проблема именно в SSL проверке.

5. Проверка версии cURL и OpenSSL

Устаревшие версии могут не поддерживать современные протоколы TLS 1.2+, что приводит к ошибкам. Выполните в SSH:

curl --version
php -r "var_dump(openssl_get_cert_locations());";

Обновите ПО сервера при необходимости.

Проверка результата после внедрения

1. Перейдите в WooCommerce > Статус > Вебхуки, выберите проблемный webhook и попробуйте его переслать вручную.

2. Проверьте, что в логе статуса webhook нет ошибок SSL.

3. Используйте команду cURL с сервера для проверки конечной точки webhook:

curl -v https://ваш-сайт.ru/wp-json/wc/v3/webhooks/

Обратите внимание на отсутствие ошибок сертификата.

Частые ошибки и как исправить

  • Ошибка "unable to get local issuer certificate": обычно связана с отсутствием промежуточных сертификатов. Проверьте full chain в настройках сервера.
  • Ошибка "SSL connect error": может быть конфликт версий TLS. Обновите OpenSSL и cURL.
  • Webhook не вызывается, но ошибок нет: проверьте, не блокирует ли firewall или прокси исходящие HTTPS-запросы PHP.
  • Самоподписанный сертификат: добавьте его в доверенные сертификаты сервера или замените на доверенный от Let's Encrypt.

Практические советы по безопасности и производительности

  • Не отключайте sslverify в продакшене — это снижает безопасность.
  • Используйте проверенные CA, например Let's Encrypt, для сертификатов.
  • Поддерживайте актуальность OpenSSL и cURL для совместимости с современными протоколами.
  • Если используете CDN, убедитесь, что SSL на стороне CDN и вашего сервера корректно настроен.

Сравнение методов решения проблемы SSL в WooCommerce Webhook

МетодПреимуществаНедостатки
Обновление сертификата и цепочкиНадёжное и безопасное решение, работает на уровне сервераТребует доступа к серверу, иногда сложно для новичков
Обновление CA сертификатов на сервереИсправляет проблемы с доверием к сертификатамЗависит от поддержки ОС и обновлений
Указание пути CA в PHPГибкое решение для нестандартных конфигурацийНужно точно знать расположение файлов, требует прав на сервере
Отключение проверки SSL (тест)Быстрая диагностикаОпасно для безопасности, не для постоянного использования
×
WPRemark
Внимание Внимание Внимание Внимание
-15%

на WPRemark плагин WordPress

Прокачай свой сайт! ⋙