wpssl.ru wordpress WPSSL.ru

Решение проблем с SSL при ошибках продления подписок WooCommerce Subscriptions

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

Если в вашем WooCommerce установлен плагин WooCommerce Subscriptions, и вы сталкиваетесь с проблемами автоматического продления подписок, причиной могут быть ошибки SSL в API-запросах к серверу платежей или внутренним сервисам. Чаще всего это проявляется в логах как ошибка соединения SSL, таймауты или отказ в соединении.

Проверьте логи WooCommerce Subscriptions и серверные логи для ошибок по ключевым словам: SSL_connect, curl error, timeout, certificate verify failed.

Как проверить ошибки SSL в WooCommerce Subscriptions

  • Перейдите в WooCommerce → Статус → Логи.
  • Выберите логи с именем, содержащим "subscriptions" или "payment_gateway".
  • Ищите строки с ошибками, связанными с SSL, например: cURL error 60: SSL certificate problem: unable to get local issuer certificate.

Пошаговое решение проблемы SSL для автоматического продления

1. Проверка и обновление корневых сертификатов на сервере

Часто проблема связана с устаревшими корневыми сертификатами, из-за чего cURL не может проверить доверенность SSL-сертификата сервера платежей. Обновите пакет с корневыми сертификатами (ca-certificates) на сервере:

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

Для CentOS/RHEL:

sudo yum update ca-certificates

2. Принудительное указание пути к сертификатам в PHP cURL

Если обновление не помогает, в файле wp-config.php можно явно указать путь к файлу сертификатов:

define('CURLOPT_CAINFO', '/etc/ssl/certs/ca-bundle.crt');

Или в коде, вызывающем cURL, добавить опцию:

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CAINFO, '/etc/ssl/certs/ca-bundle.crt');

3. Проверка URL-ов платежных шлюзов на HTTPS и отсутствие смешанного контента

В настройках WooCommerce Subscriptions убедитесь, что все URL-адреса API указаны с https://, а не с http://. Смешанный контент вызывает ошибки SSL.

4. Принудительное использование TLS 1.2+ в cURL для WooCommerce

Некоторые старые версии PHP/cURL могут использовать TLS 1.0, который не поддерживается современными шлюзами. Добавьте фильтр в functions.php для установки версии TLS:

add_action('http_api_curl', function($handle, $r, $url) {
    curl_setopt($handle, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
}, 10, 3);

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

  • Повторите попытку продления подписки вручную в WooCommerce Subscriptions → Подписки → Выберите и нажмите "Продлить".
  • Проверьте логи WooCommerce Subscriptions: ошибок SSL и таймаутов быть не должно.
  • Выполните тестовый платеж через платежный шлюз, убедитесь, что он проходит без ошибок SSL.

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

  • Ошибка "SSL certificate problem: unable to get local issuer certificate" — значит, на сервере устаревший пакет сертификатов. Обновите ca-certificates и перезапустите веб-сервер.
  • Использование устаревшего PHP или cURL — обновите PHP до версии 7.4+ и cURL до последней стабильной, поддерживающей TLS 1.2+.
  • URL платежного шлюза с http:// вместо https:// — исправьте адреса в настройках WooCommerce.
  • Проблемы с прокси или файрволлом — убедитесь, что сервер может свободно соединяться с внешними API по HTTPS.

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

  • Используйте постоянное обновление сертификатов в системе и планируйте регулярное обновление PHP и cURL.
  • При возможности используйте HTTP/2 с TLS для ускорения SSL-соединений.
  • Отключайте в cURL проверки SSL только для тестирования, в продакшене это критично для безопасности.
  • Мониторьте логи WooCommerce и сервера на предмет SSL-ошибок, автоматизируйте уведомления.

Сравнение подходов к решению SSL-проблем в WooCommerce Subscriptions

МетодПлюсыМинусыРекомендуем для
Обновление ca-certificatesПростое, системное решениеЗависит от прав доступа к серверуБольшинство случаев
Фиксация пути к сертификатам в PHPГарантирует правильный путь для cURLТребует ручной настройкиЕсли обновление не помогает
Принудительная TLS 1.2+ настройкаОбеспечивает совместимость с современными шлюзамиМожет не работать на старых версиях PHPСтарые сервера, проблемы с TLS
Исправление URL шлюзовУстраняет смешанный контентЗависит от правильности настроекОшибки с http:// вместо https://
×
WPRemark
Внимание Внимание Внимание Внимание
-15%

на WPRemark плагин WordPress

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