wpssl.ru wordpress WPSSL.ru

Проблема с SSL в WP-CLI: использование HTTPS в командной строке

Диагностика проблемы: почему WP-CLI не работает с HTTPS

WP-CLI — это мощный инструмент для управления WordPress из командной строки. Однако при работе с сайтами на HTTPS часто возникают ошибки, связанные с валидацией SSL-сертификата или неправильной конфигурацией URL. Типичные симптомы:

  • Ошибка cURL error 60: SSL certificate problem при выполнении команд, которые делают HTTP-запросы (например, wp plugin install, wp theme update).
  • Ошибки с указанием неправильного протокола, если в базе данных прописаны HTTP URL вместо HTTPS.
  • Проблемы с командами, которые обращаются к REST API сайта, например, wp option get или кастомные скрипты через WP-CLI.

Почему это происходит?

Основные причины:

  • WP-CLI использует PHP и cURL для HTTP-запросов. Если SSL-сертификат сайта не доверенный или отсутствует локальный файл cacert.pem, cURL отвергает соединение.
  • В базе данных WordPress и в конфигурационных файлах могут быть прописаны URL с протоколом http://, что вызывает смешанный контент и ошибки SSL.
  • Некорректная настройка переменных окружения или параметров WP-CLI, приводящая к конфликтам протоколов.

Пошаговое решение: настройка WP-CLI для корректной работы с HTTPS

1. Проверка и обновление корневых URL в базе данных

Убедитесь, что в базе данных в таблице wp_options значения siteurl и home используют https://. Для проверки можно использовать команду:

wp option get siteurl
wp option get home

Чтобы заменить HTTP на HTTPS, выполните:

wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid

Параметр --skip-columns=guid важен, чтобы не менять ссылки в GUID, что может вызвать проблемы с индексированием.

2. Настройка cURL для проверки SSL

Если возникает ошибка SSL сертификата, проверьте наличие и актуальность файла cacert.pem. Для этого:

  • Скачайте актуальный файл с официального сайта https://curl.se/docs/caextract.html.
  • Укажите путь к файлу в php.ini, добавив или изменив строку:
curl.cainfo = "/path/to/cacert.pem"

Перезапустите PHP-FPM или веб-сервер, чтобы настройки вступили в силу.

Если WP-CLI использует отдельный конфиг PHP, убедитесь, что там тоже прописан этот параметр.

3. Принудительное указание протокола в WP-CLI командах

Для некоторых команд можно явно указать URL с HTTPS, например:

wp plugin install jetpack --url=https://example.com

Это особенно полезно, если у вас мультисайт или несколько инсталляций.

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

Для отладки можно отключить проверку SSL, добавив в wp-cli.yml или вызвав команду с параметром --skip-ssl (если поддерживается). Но это небезопасно и должно использоваться только для диагностики.

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

После выполнения всех шагов:

  • Запустите команду, которая раньше выдавалась с ошибкой SSL, например:
wp plugin install akismet --activate
  • Проверьте, что команда выполнена без ошибок, и плагин установлен.
  • Проверьте корректность URL в админке WordPress (Настройки > Общие).
  • Можно дополнительно проверить curl-запрос с сервера вручную:
curl -I https://example.com

Вы должны увидеть ответ с кодом 200 и без ошибок SSL.

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

  • Ошибка: cURL error 60: SSL certificate problem
    Причина: Отсутствие или устаревший cacert.pem.
    Решение: Обновить файл и указать путь в php.ini.
  • Ошибка: WP-CLI обращается по http:// вместо https://
    Причина: Неправильные значения siteurl и home.
    Решение: Исправить через wp search-replace.
  • Ошибка: Команды с REST API не работают
    Причина: Проблемы с аутентификацией или смешанный контент.
    Решение: Проверить и настроить правильный протокол, использовать параметры --url.

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

  • Не отключайте проверку SSL в рабочих условиях — это снижает безопасность.
  • Регулярно обновляйте корневые сертификаты (cacert.pem), чтобы избежать проблем с истечением срока действия.
  • Используйте wp search-replace с осторожностью — всегда делайте резервную копию базы данных перед массовыми изменениями.
  • Если работаете с мультисайтами, проверяйте URL для каждого сайта отдельно.
  • Для ускорения загрузки убедитесь, что сервер поддерживает HTTP/2 или HTTP/3 вместе с HTTPS.

Сравнение вариантов решения проблемы SSL в WP-CLI

МетодПлюсыМинусыКогда использовать
Обновление cacert.pem и настройка php.iniНадёжное решение, сохраняет безопасностьТребует доступа к серверу и перезапуска PHPПостоянная эксплуатация
Исправление URL через wp search-replaceРешает проблемы с протоколом в базе данныхРиск повреждения данных без бэкапаПри смене HTTP на HTTPS
Использование параметра --url=https://Простое временное решениеТребуется указывать для каждой командыПри мультисайтах или тестах
Отключение проверки SSLБыстрая диагностикаУязвимость к MITM атакамТолько для отладки
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙