Диагностика проблемы: почему SSL не работает или вызывает ошибки в WordPress
Частая ситуация — установка SSL-сертификата с Let’s Encrypt, но сайт все равно открывается по HTTP, либо появляются ошибки смешанного контента (mixed content), либо браузер показывает предупреждения безопасности. Чтобы понять, в чем проблема, проверьте следующее:
- Доступен ли сертификат на сервере (проверьте через SSL Labs);
- Перенаправляется ли HTTP на HTTPS (проверьте HTTP-заголовки через curl или онлайн-сервисы);
- Отсутствуют ли на страницах ссылки на HTTP-ресурсы — изображения, скрипты, стили;
- Правильно ли настроен WordPress — в настройках URL сайта должен быть с https;
- Отсутствуют ли плагины или темы, жестко прописывающие HTTP в коде.
Пошаговое решение установки и настройки Let’s Encrypt SSL для WordPress
1. Получение и установка сертификата Let’s Encrypt на сервер
Если у вас VPS или выделенный сервер с доступом по SSH, используйте Certbot — официальный клиент для Let’s Encrypt. Команды для Ubuntu 20.04:
sudo apt update
sudo apt install certbot python3-certbot-nginx # для Nginx
# или для Apache
sudo apt install certbot python3-certbot-apache
sudo certbot --nginx # или --apache для автоматической настройкиСледуйте инструкциям Certbot. Если используете хостинг, проверьте, есть ли встроенная поддержка Let’s Encrypt или запросите SSL у поддержки.
2. Принудительное перенаправление HTTP на HTTPS
Пример конфигурации для Nginx в server блоке порта 80:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}Для Apache добавьте в .htaccess или конфигурацию:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]3. Настройка WordPress на использование HTTPS
В админке WordPress перейдите в Настройки → Общие и измените адреса сайта (URL WordPress и URL сайта) на https, например https://example.com.
4. Исправление смешанного контента
Проверьте исходный код страницы на наличие ссылок с http://. Если есть, замените их:
- Используйте поиск и замену в базе данных, например с помощью плагина Better Search Replace или WP-CLI:
wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid- Обновите ссылки в настройках темы и плагинов;
- Используйте плагин Really Simple SSL для автоматической замены и управления настройками SSL.
Проверка результата после внедрения
- Откройте сайт в браузере и убедитесь, что в адресной строке отображается зеленый замок;
- Используйте Why No Padlock для проверки смешанного контента;
- Выполните команду curl с опцией -I и проверьте, что HTTP автоматически редиректится на HTTPS:
curl -I http://example.com
HTTP/1.1 301 Moved Permanently
Location: https://example.com/Частые ошибки и как их исправить
- Сертификат установлен, но нет редиректа с HTTP на HTTPS. Решение — добавить соответствующие правила в конфигурацию сервера.
- Смешанный контент из-за жестко прописанных HTTP-ссылок. Используйте поиск и замену в базе, проверьте настройки тем и плагинов.
- Проблемы с кэшированием после перехода на HTTPS. Очистите кеш плагинов (например, WP Super Cache, W3 Total Cache) и браузера.
- Ошибка «ERR_TOO_MANY_REDIRECTS». Проверьте, нет ли конфликтующих правил редиректа, особенно в .htaccess и конфигурации сервера.
Практические советы по безопасности и производительности при использовании SSL в WordPress
- Добавьте HTTP Strict Transport Security (HSTS) заголовок для принудительного HTTPS (аккуратно, с тестированием):
add_action('send_headers', function() {
header('Strict-Transport-Security: max-age=31536000; includeSubDomains; preload');
});- Используйте современные протоколы TLS (1.2 и выше) и отключите старые версии на сервере;
- Оптимизируйте загрузку сертификатов и HTTPS, используя HTTP/2 или HTTP/3, если поддерживается сервером;
- Регулярно обновляйте Certbot и проверяйте срок действия сертификата;
- Следите за безопасностью ключей и конфигураций сервера.