Как да инсталирате SSL сертификат на вашия WordPress сайт
SSL сертификатът (Secure Sockets Layer / TLS) е криптографски протоколен механизъм, който криптира данните при пренос между уеб сървър и браузър. При инсталиране на SSL на WordPress сайт, всяка HTTP заявка се пренасочва към HTTPS, браузърът показва катинарче, а чувствителните данни — данни за вход, изпратени формуляри, платежни данни — се предават по криптиран канал, а не в обикновен текст.
Конкретно за WordPress, инсталирането на SSL включва три отделни слоя: осигуряване на сертификата на ниво сървър или хостинг, конфигуриране на самия WordPress да обслужва всички ресурси по HTTPS и отстраняване на предупреждения за смесено съдържание, които безшумно нарушават сигурния контекст. Ако пропуснете дори един от тях, сайтът ви ще показва счупено катинарче, ще задейства предупреждения за сигурност в браузъра или изобщо няма да премине HTTPS валидацията.
Стъпка 1: Изберете правилния тип SSL сертификат
Не всички SSL сертификати предлагат едно и също ниво на валидация или сигнал за доверие. Изборът на грешен тип е честа грешка, която или хаби пари, или, в обратния случай, недостатъчно защитава сайт, обработващ чувствителни транзакции.
Сравнение на нивата на валидация
| Тип сертификат | Ниво на валидация | Време за издаване | Най-подходящ за | Сигнал за доверие в браузъра |
|---|---|---|---|---|
| — | — | — | — | — |
| **Domain Validated (DV)** | Само собственост върху домейна | Минути до часове | Блогове, лични сайтове, dev среди | Икона катинарче |
| **Organization Validated (OV)** | Домейн + юридическо лице | 1–3 работни дни | Бизнес сайтове, SaaS портали | Катинарче + данни за организацията в сертификата |
| **Extended Validation (EV)** | Пълна правна + оперативна проверка | 1–5 работни дни | Е-commerce, банкиране, портали с висока степен на доверие | Катинарче + име на организацията (в някои браузъри) |
| **Wildcard DV/OV** | Домейн + всички поддомейни | Минути до дни | Разгръщания с множество поддомейни | Катинарче |
| **Multi-Domain (SAN)** | Множество отделни домейни | Минути до дни | Агенции, управляващи множество проекти | Катинарче |
Безплатен срещу платен SSL
Let’s Encrypt издава безплатни, автоматизирани DV сертификати, валидни за 90 дни с поддръжка за автоматично подновяване чрез ACME протокол. Той се доверява от всички основни браузъри и е правилният избор за огромното мнозинство WordPress сайтове. Краткият период на валидност е умишлен — той налага автоматизация и намалява рисковия прозорец при компрометиран сертификат.
Безплатният SSL на Cloudflare работи по различен начин: той криптира връзката между посетителя и edge мрежата на Cloudflare, но връзката между Cloudflare и вашия origin сървър може да остане некриптирана, освен ако не конфигурирате режим Full (Strict) с валиден origin сертификат. Това е често неразбран граничен случай, който създава фалшиво усещане за сигурност.
Платените сертификати от търговски CA (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 нативно, едно кликване осигурява и подновява сертификата автоматично.
Стъпки за ръчна инсталация, когато имате файлове на сертификата от CA:
- Влезте в cPanel и отидете на Security > SSL/TLS.
- Кликнете върху Manage SSL Sites.
- Изберете целевия домейн от падащото меню.
- Поставете съдържанието на три файла в съответните полета:
- Certificate (CRT): Подписаният сертификат от вашия CA.
- 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 (при използване на платен CA сертификат):
Поставете файловете на сертификата в защитена директория, след което редактирайте вашия виртуален хост:
<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 инсталация с голям трафик на Dedicated сървър, имате пълен контрол върху cipher suite-овете, 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 core. Винаги поставяйте правилата за пренасочване на ниво сървър над блока, управляван от WordPress.
Nginx: Пренасочване на Server Block
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 крайни точки.
Вариант А: Актуализирайте ръчно URL адресите на WordPress сайта
- Отидете на Settings > General в административното табло на WordPress.
- Променете и WordPress Address (URL), и Site Address (URL) от
http://наhttps://. - Кликнете върху Save Changes.
WordPress ще ви изведе незабавно след запазването. Влезте отново, използвайки HTTPS URL адреса.
Вариант Б: Актуализирайте URL адресите чрез wp-config.php
Ако нямате достъп до административния панел или предпочитате подход, базиран на код, добавете тези редове в wp-config.php преди реда /* That's all, stop editing! */:
define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');Вариант В: Актуализирайте твърдо кодираните 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 filter hook — полезно, когато 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.
- Силен cipher suite (без RC4, без 3DES).
- Наличен HSTS хедър.
- Активиран OCSP stapling.
- Без проблеми с веригата (правилно инсталирани междинни сертификати).
Проверка в браузъра
Кликнете върху иконата на катинарчето в адресната лента. В Chrome отидете на Connection is secure > Certificate is valid, за да потвърдите, че издателят, датите на валидност и Subject Alternative Names (SANs) съответстват на вашия домейн.
Проверка от командния ред
openssl s_client -connect yourdomain.com:443 -servername yourdomain.comТова извежда пълната верига от сертификати, договорения cipher и версията на 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 адреси.
Актуализирайте картата на сайта и canonical таговете
Уверете се, че вашата XML карта на сайта (генерирана от Yoast SEO, Rank Math или подобни) извежда изключително HTTPS URL адреси. Проверете дали canonical таговете в <head> на вашата тема препращат към HTTPS. Canonical таг, сочещ към 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 хостинг](https://alexhost.com/bg/vps/) с Apache/Nginx | Certbot (Let’s Encrypt) | Автоматично чрез systemd таймер | Ниско |
| VPS с cPanel/WHM | AutoSSL в WHM | Автоматично | Минимално |
| [Dedicated сървър](https://alexhost.com/bg/dedicated-servers/) | Certbot или платен CA сертификат | Ръчно или автоматизирано | Средно |
| Домейн, проксиран от Cloudflare | Cloudflare SSL + Origin сертификат | Автоматично (Cloudflare) | Ниско (но проверете режим Full Strict) |
| Е-commerce / сайт с висока степен на доверие | Платен OV или EV сертификат | Годишно ръчно подновяване | Високо |
Ключови технически изводи
- Инсталирането на сертификата и конфигурирането на WordPress са отделни стъпки. Сертификат, инсталиран на ниво сървър, не кара автоматично WordPress да генерира HTTPS URL адреси. И двете трябва да бъдат конфигурирани.
- Смесеното съдържание е най-честият проблем след миграцията. Изпълнете search-replace в базата данни с WP-CLI преди активиране на какъвто и да е SSL плъгин, за да уловите твърдо кодираните HTTP URL адреси при източника.
- Автоматичното подновяване на Let’s Encrypt трябва да бъде проверено, а не приемано за даденост. Изпълнете
certbot renew --dry-runслед първоначалната настройка и следете датите на изтичане. Неуспешното подновяване безшумно разваля сайта ви 90 дни по-късно. - HSTS е еднопосочна врата. Не задавайте дълъг
max-ageи не активирайтеpreload, докато всеки поддомейн няма валиден сертификат и не сте ангажирани с HTTPS за постоянно. - Безплатният SSL на Cloudflare не е криптиран от край до край по подразбиране. Задайте SSL/TLS режима на Full (Strict) и инсталирайте origin сертификат на вашия сървър, за да затворите пропуска.
- При споделен хостинг проверете дали SSL на вашия хостинг доставчик покрива и apex домейна (
yourdomain.com), и поддомейнаwww. Сертификат, издаден само за единия, ще предизвика грешка за несъответствие на имената при другия. - Сериализираните данни в WordPress базите данни не могат безопасно да се актуализират с необработен SQL
REPLACE(). Винаги използвайте WP-CLI или плъгин, съобразен със сериализацията.
За сайтове, хоствани на Споделен уеб хостинг, най-бързият път към SSL е активирането на AutoSSL или Let’s Encrypt чрез cPanel — целият процес отнема под пет минути и не изисква достъп до командния ред. За по-сложни разгръщания, изискващи персонализирана конфигурация на cipher, OCSP stapling или multi-domain сертификати, VPS с конфигурируем контролен панел ви дава необходимия достъп на ниво сървър.
Често задавани въпроси
Подобрява ли директно инсталирането на 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. Отворете инструментите за разработчици на браузъра, проверете Console за предупреждения за смесено съдържание и използвайте WP-CLI search-replace или плъгина Really Simple SSL, за да пренапишете проблемните URL адреси. Вторична причина е, че WordPress Site URL в 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, насочете вашите nameserver-и към тези на Cloudflare и активирайте настройката SSL/TLS. Участъкът от посетителя до Cloudflare се криптира незабавно. Въпреки това задайте режима на Full (Strict) и инсталирайте Cloudflare Origin сертификат на вашия сървър, за да криптирате и участъка от Cloudflare до origin. Без това, връзката между Cloudflare и вашия сървър остава некриптирана, което е значителен пропуск в сигурността за всеки сайт, обработващ потребителски данни.
