Як встановити SSL сертифікат на свій сайт WordPress
Сертифікат SSL (Secure Sockets Layer / TLS) — це криптографічний протокольний зв’язок, який шифрує дані під час передачі між веб-сервером і браузером. На сайті WordPress встановлення SSL означає, що кожен HTTP-запит перенаправляється на HTTPS, браузер відображає значок замка, а конфіденційні дані — облікові дані для входу, відправлені форми, платіжні реквізити — передаються через зашифрований канал, а не у відкритому вигляді.
Зокрема для WordPress встановлення SSL охоплює три окремі рівні: надання сертифіката на рівні сервера або хостингу, налаштування самого WordPress для обслуговування всіх ресурсів через HTTPS та усунення попереджень про змішаний вміст, які непомітно порушують безпечний контекст. Якщо пропустити будь-який із цих рівнів, сайт або відображатиме зламаний замок, або викликатиме попередження безпеки браузера, або повністю не пройде перевірку HTTPS.
Крок 1: Виберіть правильний тип SSL-сертифіката
Не всі SSL-сертифікати пропонують однаковий рівень перевірки або сигнал довіри. Вибір неправильного типу — поширена помилка, яка або марнує гроші, або, навпаки, недостатньо захищає сайт, що обробляє конфіденційні транзакції.
Порівняння рівнів перевірки
| Тип сертифіката | Рівень перевірки | Час видачі | Найкраще для | Сигнал довіри браузера |
|---|---|---|---|---|
| — | — | — | — | — |
| **Domain Validated (DV)** | Лише право власності на домен | Від хвилин до годин | Блоги, особисті сайти, середовища розробки | Значок замка |
| **Organization Validated (OV)** | Домен + юридична особа | 1–3 робочі дні | Бізнес-сайти, SaaS-портали | Замок + дані організації в сертифікаті |
| **Extended Validation (EV)** | Повна юридична та операційна перевірка | 1–5 робочих днів | Електронна комерція, банківські та високодовірені портали | Замок + назва організації (деякі браузери) |
| **Wildcard DV/OV** | Домен + усі піддомени | Від хвилин до днів | Розгортання з кількома піддоменами | Замок |
| **Multi-Domain (SAN)** | Кілька окремих доменів | Від хвилин до днів | Агентства, що керують кількома ресурсами | Замок |
Безкоштовний vs. платний SSL
Let’s Encrypt видає безкоштовні автоматизовані DV-сертифікати терміном дії 90 днів із підтримкою автоматичного поновлення через протокол ACME. Він підтримується всіма основними браузерами і є правильним вибором для переважної більшості сайтів WordPress. Короткий термін дії є навмисним — він змушує використовувати автоматизацію та зменшує ризик компрометації сертифіката.
Безкоштовний SSL від Cloudflare працює інакше: він шифрує з’єднання між відвідувачем і вузлом Cloudflare, але з’єднання між Cloudflare і вашим сервером-джерелом може залишатися незашифрованим, якщо ви не налаштуєте режим Full (Strict) із дійсним сертифікатом джерела. Це часто неправильно зрозумілий граничний випадок, який створює хибне відчуття безпеки.
Платні сертифікати від комерційних центрів сертифікації (DigiCert, Sectigo, GlobalSign) необхідні, коли потрібна перевірка OV або EV, гарантія або конкретна конфігурація SAN/Wildcard, яку не підтримує Let’s Encrypt.
Якщо вам потрібно придбати довірений сертифікат для вашого домену, AlexHost надає SSL-сертифікати з простою видачею та керуванням безпосередньо з панелі вашого облікового запису.
Крок 2: Встановіть SSL-сертифікат на рівні хостингу
Сертифікат має бути встановлений на веб-сервері, перш ніж WordPress зможе обслуговувати HTTPS-відповіді. Метод залежить від вашого хостингового середовища.
Встановлення SSL через cPanel (спільний та VPS-хостинг)
cPanel — найпоширеніша панель керування для спільних та керованих середовищ. Якщо ваш хост використовує AutoSSL (на основі Sectigo) або підтримує Let’s Encrypt нативно, один клік забезпечує автоматичне надання та поновлення сертифіката.
Кроки ручного встановлення, якщо у вас є файли сертифіката від центру сертифікації:
- Увійдіть до cPanel і перейдіть до Security > SSL/TLS.
- Натисніть Manage SSL Sites.
- Виберіть цільовий домен зі спадного списку.
- Вставте вміст трьох файлів у відповідні поля:
- Certificate (CRT): Підписаний сертифікат від вашого центру сертифікації.
- Private Key (KEY): Згенерований під час створення CSR — ніколи не передавайте його нікому.
- Certificate Authority Bundle (CABUNDLE): Проміжні ланцюгові сертифікати.
- Натисніть Install Certificate.
Якщо ви запускаєте WordPress на VPS з cPanel, AutoSSL зазвичай обробляє це автоматично для всіх доменів у WHM. Перевірте в розділі WHM > SSL/TLS > Manage AutoSSL, що домен охоплено і сертифікат не перебуває в стані очікування або помилки.
Встановлення SSL на VPS з Apache (ручний метод)
На самостійно керованому Linux VPS з Apache процес вимагає безпосереднього редагування конфігурації віртуального хоста.
Встановлення Certbot (клієнт Let’s Encrypt) на Debian/Ubuntu:
sudo apt update
sudo apt install certbot python3-certbot-apache -yАвтоматичне отримання та встановлення сертифіката:
sudo certbot --apache -d yourdomain.com -d www.yourdomain.comCertbot змінює конфігурацію вашого віртуального хоста Apache, встановлює сертифікат і налаштовує завдання cron або таймер systemd для автоматичного поновлення. Перевірте, чи активний таймер поновлення:
sudo systemctl status certbot.timerДля Nginx на VPS:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.comРучне встановлення сертифіката на Apache (при використанні платного сертифіката від центру сертифікації):
Розмістіть файли сертифіката в захищеному каталозі, потім відредагуйте ваш віртуальний хост:
<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/yourdomain.crt
SSLCertificateKeyFile /etc/ssl/private/yourdomain.key
SSLCertificateChainFile /etc/ssl/certs/yourdomain_ca_bundle.crt
</VirtualHost>Перезапустіть Apache для застосування змін:
sudo systemctl restart apache2Якщо ви керуєте високонавантаженою інсталяцією WordPress на виділеному сервері, у вас є повний контроль над наборами шифрів, заголовками HSTS та OCSP stapling — конфігураціями, які неможливі на спільному хостингу.
Встановлення SSL на VPS з Nginx (ручний метод)
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/ssl/certs/yourdomain.crt;
ssl_certificate_key /etc/ssl/private/yourdomain.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 1.1.1.1 valid=300s;
root /var/www/html;
index index.php;
}Перезавантажте Nginx після редагування:
sudo nginx -t && sudo systemctl reload nginxКрок 3: Примусово увімкніть HTTPS на рівні сервера за допомогою перенаправлення 301
Перш ніж торкатися налаштувань WordPress, застосуйте перенаправлення з HTTP на HTTPS на рівні сервера. Це надійніше, ніж покладатися виключно на WordPress або плагін, і запобігає завантаженню браузером HTTP-версії.
Apache: .htaccess перенаправлення
Відкрийте файл .htaccess (розташований у кореневій директорії WordPress, зазвичай /var/www/html/.htaccess або доступний через cPanel File Manager) і додайте наступний блок вище існуючих правил перезапису WordPress:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Критична помилка: Якщо ви розмістите цей блок *після* маркера # BEGIN WordPress, він може бути перезаписаний оновленнями ядра WordPress. Завжди розміщуйте правила перенаправлення на рівні сервера вище блоку, керованого WordPress.
Nginx: перенаправлення серверного блоку
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}Заголовок HSTS (розширений, рекомендований)
Коли ви впевнені, що ваше налаштування HTTPS стабільне, додайте заголовок HTTP Strict Transport Security, щоб вказати браузерам ніколи не намагатися встановити HTTP-з’єднання:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"Попередження: Не вмикайте HSTS з preload, доки не будете впевнені, що кожен піддомен також має дійсний SSL-сертифікат. Попереднє завантаження є незворотним у короткостроковій перспективі та порушить роботу піддоменів, для яких не налаштовано HTTPS.
Крок 4: Налаштуйте WordPress для обслуговування всього вмісту через HTTPS
Після встановлення сертифіката та налаштування перенаправлення на рівні сервера сам WordPress має бути налаштований на генерацію HTTPS URL для всіх внутрішніх посилань, ресурсів та кінцевих точок API.
Варіант A: Оновіть URL-адреси сайту WordPress вручну
- Перейдіть до Settings > General у панелі адміністратора WordPress.
- Змініть обидва поля WordPress Address (URL) та Site Address (URL) з
http://наhttps://. - Натисніть Save Changes.
WordPress одразу після збереження виконає вихід із системи. Увійдіть знову, використовуючи HTTPS URL.
Варіант B: Оновіть URL-адреси через wp-config.php
Якщо ви не маєте доступу до панелі адміністратора або надаєте перевагу підходу на основі коду, додайте ці рядки до wp-config.php перед рядком /* That's all, stop editing! */:
define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');Варіант C: Оновіть жорстко закодовані HTTP URL у базі даних
WordPress зберігає URL у базі даних, включаючи серіалізовані дані в таблицях метаданих публікацій та параметрів. Просте знаходження та заміна в необробленому SQL може пошкодити серіалізовані масиви. Використовуйте WP-CLI для безпечної заміни з урахуванням серіалізації:
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --skip-columns=guid --all-tablesПрапор --skip-columns=guid зберігає GUID публікацій, які не слід змінювати відповідно до найкращих практик WordPress. Запустіть це з кореневого каталогу WordPress із відповідними обліковими даними бази даних, налаштованими в wp-config.php.
Альтернативно, плагін Better Search Replace виконує ту саму операцію через інтерфейс адміністратора з підтримкою серіалізації.
Крок 5: Виправте попередження про змішаний вміст
Попередження про змішаний вміст виникає, коли HTTPS-сторінка завантажує один або кілька ресурсів (зображення, скрипти, таблиці стилів, iframe) через HTTP. Це порушує безпечний контекст, приховує замок і в деяких випадках змушує браузери повністю блокувати ресурс.
Діагностика змішаного вмісту
Відкрийте інструменти розробника у браузері (F12), перейдіть на вкладку Console і знайдіть попередження з префіксом Mixed Content:. Повідомлення визначить точну URL-адресу ресурсу, що спричиняє проблему.
Альтернативно скористайтеся інструментом Why No Padlock? або запустіть сканування SSL Labs для отримання повного звіту.
Виправлення змішаного вмісту: метод плагіна
Really Simple SSL — найбільш широко використовуваний плагін для цієї мети. Після активації він:
- Встановлює серверну змінну
HTTPS, щоб змусити WordPress розпізнавати безпечне з’єднання. - Додає фільтр вмісту на основі JavaScript для перезапису HTTP URL на льоту.
- За бажанням очищає правила перезапису та оновлює URL сайту.
SSL Insecure Content Fixer пропонує більш детальний контроль, дозволяючи вибирати між простою заміною вихідного буфера та більш глибоким підходом із використанням хуків фільтрів WordPress — корисно, коли метод JavaScript плагіна Really Simple SSL спричиняє проблеми з відображенням у певних конструкторах сторінок.
Виправлення змішаного вмісту: ручний метод
Для жорстко закодованих HTTP URL у файлах теми або власних плагінах виконайте пошук у каталозі теми:
grep -r "http://yourdomain.com" /var/www/html/wp-content/themes/your-theme/Замініть усі входження на https:// або, що краще, використовуйте протокол-відносні URL (//yourdomain.com/...) для сторонніх ресурсів, де ви не можете гарантувати доступність HTTPS.
Для вбудованих медіафайлів, завантажених до міграції SSL, запустіть команду WP-CLI search-replace з кроку 4, якщо ви ще цього не зробили, оскільки URL вкладень зображень зберігаються в таблицях wp_posts та wp_postmeta.
Крок 6: Перевірте встановлення SSL
Ніколи не припускайте, що встановлення пройшло успішно — перевіряйте його систематично.
Тест SSL Labs
Перейдіть на https://www.ssllabs.com/ssltest/ і введіть ваш домен. Правильно налаштований сайт WordPress повинен отримати оцінку A або A+. Рейтинг A+ вимагає:
- Підтримки TLS 1.2 та 1.3 з вимкненими TLS 1.0 та 1.1.
- Надійного набору шифрів (без RC4, без 3DES).
- Наявності заголовка HSTS.
- Увімкненого OCSP stapling.
- Відсутності проблем із ланцюгом (проміжні сертифікати правильно встановлені).
Перевірка в браузері
Натисніть на значок замка в адресному рядку. У Chrome перейдіть до Connection is secure > Certificate is valid, щоб підтвердити, що видавець, терміни дії та Subject Alternative Names (SAN) відповідають вашому домену.
Перевірка через командний рядок
openssl s_client -connect yourdomain.com:443 -servername yourdomain.comЦе виводить повний ланцюг сертифікатів, узгоджений шифр і версію TLS. Шукайте Verify return code: 0 (ok) для підтвердження довіри до ланцюга.
Перевірка терміну дії сертифіката
echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -datesДля сертифікатів Let’s Encrypt також перевірте, чи працює пробний запуск автоматичного поновлення:
sudo certbot renew --dry-runКрок 7: Зміцнення після встановлення та очищення SEO
Оновіть Google Search Console
Додайте HTTPS-версію вашого сайту як нову властивість у Google Search Console. Google розглядає http:// та https:// як окремі властивості. Надішліть вашу HTTPS-карту сайту (https://yourdomain.com/sitemap.xml), щоб прискорити повторне сканування оновлених URL.
Оновіть карту сайту та канонічні теги
Переконайтеся, що ваша XML-карта сайту (згенерована Yoast SEO, Rank Math або подібними інструментами) виводить виключно HTTPS URL. Перевірте, що канонічні теги в <head> вашої теми посилаються на HTTPS. Канонічний тег, що вказує на HTTP-версію сторінки, збентежить сканери, навіть якщо перенаправлення 301 налаштоване.
Повідомте Google про зміну
У Google Search Console використовуйте інструмент Change of Address лише якщо ви перейшли на абсолютно новий домен. Для міграції з HTTP на HTTPS на тому самому домені перенаправлення 301 обробляють передачу сигналу — інструмент зміни адреси не потрібен.
Міркування щодо WordPress Multisite
У мережі WordPress Multisite ви повинні оновити значення siteurl та home у таблицях wp_siteurl та wp_blogs для кожного підсайту, а не лише для головного сайту. WP-CLI обробляє це для кожного сайту окремо:
wp search-replace 'http://subdomain.yourdomain.com' 'https://subdomain.yourdomain.com' --url=subdomain.yourdomain.com --all-tablesПрактична матриця рішень: який метод SSL використовувати
| Ваше хостингове середовище | Рекомендований метод SSL | Поновлення | Зусилля |
|---|---|---|---|
| — | — | — | — |
| Спільний хостинг з cPanel | AutoSSL або Let’s Encrypt через cPanel | Автоматично | Мінімальні |
| VPS-хостинг з Apache/Nginx | Certbot (Let’s Encrypt) | Автоматично через таймер systemd | Низькі |
| VPS з cPanel/WHM | AutoSSL у WHM | Автоматично | Мінімальні |
| Виділений сервер | Certbot або платний сертифікат від центру сертифікації | Вручну або автоматично | Середні |
| Домен із проксі Cloudflare | Cloudflare SSL + сертифікат джерела | Автоматично (Cloudflare) | Низькі (але перевірте режим Full Strict) |
| Сайт електронної комерції / високодовірений сайт | Платний сертифікат OV або EV | Щорічне ручне поновлення | Високі |
Ключові технічні висновки
- Встановлення сертифіката та налаштування WordPress — це окремі кроки. Сертифікат, встановлений на рівні сервера, не змушує WordPress автоматично генерувати HTTPS URL. Обидва мають бути налаштовані.
- Змішаний вміст — найпоширеніша помилка після міграції. Запустіть пошук і заміну в базі даних за допомогою WP-CLI перед активацією будь-якого SSL-плагіна, щоб виявити жорстко закодовані HTTP URL у джерелі.
- Автоматичне поновлення Let’s Encrypt потрібно перевіряти, а не припускати. Запустіть
certbot renew --dry-runпісля початкового налаштування та відстежуйте терміни дії. Невдале поновлення непомітно зламає ваш сайт через 90 днів. - HSTS — це двері в один бік. Не встановлюйте довгий
max-ageі не вмикайтеpreload, доки кожен піддомен не матиме дійсного сертифіката і ви не будете назавжди зобов’язані використовувати HTTPS. - Безкоштовний SSL від Cloudflare за замовчуванням не є наскрізно зашифрованим. Встановіть режим SSL/TLS на Full (Strict) і встановіть сертифікат джерела на вашому сервері, щоб усунути прогалину.
- На спільному хостингу перевірте, що SSL вашого хостинг-провайдера охоплює як кореневий домен (
yourdomain.com), так і піддоменwww. Сертифікат, виданий лише для одного з них, спричинить помилку невідповідності імені для іншого. - Серіалізовані дані в базах даних WordPress не можна безпечно оновлювати за допомогою необробленого SQL
REPLACE(). Завжди використовуйте WP-CLI або плагін із підтримкою серіалізації.
Для сайтів, розміщених на спільному веб-хостингу, найшвидший шлях до SSL — увімкнення AutoSSL або Let’s Encrypt через cPanel — весь процес займає менше п’яти хвилин і не вимагає доступу до командного рядка. Для більш складних розгортань, що вимагають власного налаштування шифрів, OCSP stapling або мультидоменних сертифікатів, VPS із налаштовуваною панеллю керування надає необхідний доступ на рівні сервера.
FAQ
Чи безпосередньо покращує встановлення SSL-сертифіката мої позиції в Google?
Google підтвердив HTTPS як сигнал ранжування у 2014 році. Безпосереднє підвищення рейтингу є скромним, але непрямі переваги — зниження показника відмов через попередження безпеки браузера, право на HTTP/2 та HTTP/3, а також довіра користувачів — мають відчутний сукупний вплив на органічну видимість.
У чому різниця між SSL та TLS?
SSL (Secure Sockets Layer) — застарілий попередник TLS (Transport Layer Security). Усі сучасні сертифікати використовують TLS 1.2 або 1.3. Термін «SSL-сертифікат» зберігається як галузевий скорочений вираз, але жоден браузер або сервер не використовував справжній SSL з 2015 року. Якщо ваш сервер досі приймає SSLv3 або TLS 1.0, вимкніть їх негайно — вони вразливі до атак POODLE та BEAST відповідно.
Чому мій сайт досі показує «Not Secure» після встановлення сертифіката?
Найпоширеніша причина — помилка змішаного вмісту: принаймні один ресурс на сторінці завантажується через HTTP. Відкрийте інструменти розробника браузера, перевірте консоль на наявність попереджень про змішаний вміст і використовуйте WP-CLI search-replace або плагін Really Simple SSL для перезапису проблемних URL. Додаткова причина — URL сайту WordPress у Settings > General досі вказує на http://.
Як поновити сертифікат Let’s Encrypt до його закінчення?
Certbot встановлює таймер systemd або завдання cron, яке автоматично намагається поновити сертифікат, коли до його закінчення залишається 30 днів. Щоб примусово виконати негайне поновлення, запустіть sudo certbot renew --force-renewal. Щоб протестувати без внесення змін, запустіть sudo certbot renew --dry-run. Перевірте журнал поновлення за адресою /var/log/letsencrypt/letsencrypt.log, якщо поновлення не вдається.
Чи можна встановити SSL на WordPress без доступу до сервера або cPanel?
Так, через Cloudflare. Додайте ваш домен до Cloudflare, вкажіть ваші сервери імен на сервери Cloudflare та увімкніть налаштування SSL/TLS. З’єднання від відвідувача до Cloudflare шифрується негайно. Однак встановіть режим на Full (Strict) і встановіть Cloudflare Origin Certificate на вашому сервері, щоб також зашифрувати з’єднання від Cloudflare до джерела. Без цього з’єднання між Cloudflare і вашим сервером залишається незашифрованим, що є суттєвою прогалиною в безпеці для будь-якого сайту, що обробляє дані користувачів.
