Как да инсталирате SSL сертификат на домейн
SSL сертификатът (Secure Sockets Layer / TLS) е криптографски идентификационен документ, издаден от доверен Сертифициращ орган (CA), който удостоверява самоличността на вашия сървър и установява криптиран канал между сървъра и браузъра на клиента. При правилно инсталиране той надгражда сайта ви от http:// до https://, активира катинара в браузъра и предотвратява прихващането на предаваните данни чрез атаки тип „човек по средата”.
По отношение на SEO, Google третира HTTPS като потвърден сигнал за класиране от 2014 г. насам. За потребителите, липсващ или неправилно конфигуриран сертификат предизвиква предупреждения за сигурност в браузъра, които унищожават процента на конверсии. Независимо дали управлявате единична целева страница или многодоменна инфраструктура, правилното конфигуриране на SSL — и поддържането му в това състояние — е задължително.
Предварителни изисквания преди да започнете
Преди да докоснете дори един конфигурационен файл, потвърдете, че разполагате със следното:
- Регистрирано домейн име, насочено към IP адреса на вашия сървър с напълно разпространен DNS. Можете да регистрирате или прехвърлите домейн чрез Регистрация на домейн.
- Пакет SSL сертификат от CA. Той обикновено включва:
certificate.crt — вашият основен подписан сертификат
private.key — частният ключ, генериран заедно с вашия CSR
ca_bundle.crt — веригата на междинния CA (понякога наричана chain файл)
Достъп до сървър или контролен панел — cPanel/Plesk идентификационни данни или SSH root/sudo достъп до сървъра.
Уеб сървърен софтуер — Apache или Nginx, работещ и конфигуриран за вашия домейн.
Отворен порт 443 — проверете дали вашата защитна стена позволява входящ TCP на порт 443 преди да инсталирате каквото и да е.
Ако използвате среда за VPS Хостинг, ще имате пълен root достъп и можете да използвате всеки от трите метода по-долу. Потребителите на споделен хостинг обикновено са ограничени до метода с cPanel.
Избор на правилния тип SSL сертификат
Не всички сертификати са еквивалентни. Изборът на грешен тип губи пари или оставя пропуски в покритието.
Тип сертификат
Ниво на валидиране
Време за издаване
Катинар в браузъра
Най-подходящ за
—
—
—
—
—
DV (Domain Validated)
Само контрол на домейна
Минути
Да
Блогове, среди за разработка, малки сайтове
OV (Organization Validated)
Домейн + идентичност на организацията
1–3 дни
Да
Бизнес уебсайтове, SaaS платформи
EV (Extended Validation)
Пълна проверка на юридическото лице
3–7 дни
Да (името на организацията в някои браузъри)
Електронна търговия, банкиране, портали с висока степен на доверие
Wildcard (`*.domain.com`)
DV или OV
Минути–дни
Да
Разгръщания с множество поддомейни
Multi-Domain (SAN)
DV, OV или EV
Варира
Да
Множество различни домейни в един сертификат
Let’s Encrypt (безплатен DV)
Само контрол на домейна
Секунди
Да
Всеки публично достъпен домейн
За производствена електронна търговия или всеки сайт, обработващ данни за платежни карти, се препоръчват настоятелно OV или EV сертификати от търговски CA. DV сертификатите на Let’s Encrypt са напълно доверени и отлични за повечето случаи на употреба, но не включват проверка на идентичността на организацията.
Можете да закупите търговски сертификати директно чрез SSL Сертификати, ако имате нужда от OV, EV или Wildcard покритие с dedicated поддръжка.
Метод 1: Инсталиране на SSL сертификат чрез cPanel
Графичният интерфейс на cPanel е най-бързият път за потребители на управлявани или Споделен Уеб Хостинг планове. Ако предпочитате VPS среда, управлявана от cPanel, VPS с cPanel ви дава същия интерфейс с пълен контрол върху сървъра.
Стъпка 1: Влезте в cPanel
Отидете на URL адреса за вход в cPanel:
https://yourdomain.com:2083
Удостоверете се с вашите хостинг идентификационни данни.
Стъпка 2: Отидете до SSL/TLS Manager
В секцията Security на таблото за управление на cPanel, кликнете върху SSL/TLS. След това изберете Manage SSL Sites под заглавието „Install and Manage SSL for your site (HTTPS)”.
Стъпка 3: Изберете целевия домейн
Използвайте падащото меню Domain, за да изберете домейна, който искате да защитите. Ако домейнът не се появява, потвърдете, че е добавен като допълнителен или основен домейн в cPanel.
Стъпка 4: Поставете компонентите на сертификата
Отворете всеки сертификатен файл в текстов редактор (не Word) и поставете съдържанието в съответните полета:
Certificate (CRT): Съдържание на certificate.crtprivate.key. Ако сте генерирали CSR в cPanel, това поле се попълва автоматично от хранилището за ключове на cPanel.ca_bundle.crt. Пропускането на това поле е една от най-честите причини за грешки „недоверен сертификат” на мобилни устройства и по-стари браузъри, тъй като браузърът не може да изгради веригата до доверен корен.Стъпка 5: Инсталирайте и проверете
Кликнете върху Install Certificate. cPanel валидира двойката ключ-сертификат преди да потвърди. Ако има несъответствие между частния ключ и публичния ключ на сертификата, cPanel ще отхвърли инсталацията с изрична грешка — не я игнорирайте.
След инсталацията, посетете https://yourdomain.com и потвърдете, че катинарът се появява. Тествайте и https://www.yourdomain.com ако поддомейнът www се използва.
Честа грешка в cPanel: AutoSSL (вградената интеграция на Let’s Encrypt в cPanel) може да презапише ръчно инсталиран сертификат при следващия си цикъл на подновяване. Ако сте инсталирали търговски сертификат, деактивирайте AutoSSL за този домейн в cPanel > SSL/TLS Status, за да предотвратите нежелана замяна.
Метод 2: Автоматична инсталация с Let’s Encrypt и Certbot
Certbot е референтният ACME клиент за Let’s Encrypt. Той обработва генерирането на CSR, валидирането на домейна, извличането на сертификата, конфигурацията на уеб сървъра и подновяването — всичко автоматично. Това е правилният подход за всеки Linux сървър, който управлявате директно.
Стъпка 1: Свържете се към вашия сървър чрез SSH
ssh username@your-server-ipСтъпка 2: Инсталирайте Certbot
Debian / Ubuntu (Apache):
sudo apt update && sudo apt install -y certbot python3-certbot-apacheDebian / Ubuntu (Nginx):
sudo apt update && sudo apt install -y certbot python3-certbot-nginxRHEL / AlmaLinux / Rocky Linux (Apache):
sudo dnf install -y epel-release
sudo dnf install -y certbot python3-certbot-apacheRHEL / AlmaLinux / Rocky Linux (Nginx):
sudo dnf install -y epel-release
sudo dnf install -y certbot python3-certbot-nginxСтъпка 3: Получете и инсталирайте сертификата
За Apache:
sudo certbot --apache -d yourdomain.com -d www.yourdomain.comЗа Nginx:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.comCertbot извършва HTTP-01 предизвикателство по подразбиране: поставя временен файл в корена на вашия уеб сайт и иска от сървърите на Let’s Encrypt да го извлекат през порт 80. Това означава, че порт 80 трябва да е отворен и вашият DNS трябва да се разрешава правилно преди изпълнението на командата.
При подкана изберете опцията за пренасочване на целия HTTP трафик към HTTPS. Това записва постоянно пренасочване 301 в конфигурацията на вашия сървър, което е правилното поведение за SEO и сигурност.
Стъпка 4: Проверете автоматичното подновяване
Сертификатите на Let’s Encrypt изтичат след 90 дни. Certbot инсталира systemd таймер (или cron задача на по-стари системи), който се опитва да поднови два пъти дневно, когато сертификатът е в рамките на 30 дни до изтичане. Тествайте логиката за подновяване без действително подновяване:
sudo certbot renew --dry-runУспешното пробно изпълнение потвърждава, че конвейерът за подновяване е изправен. Проверете статуса на таймера с:
systemctl status certbot.timerКраен случай — DNS-01 предизвикателство за wildcard сертификати: HTTP-01 предизвикателството не може да валидира wildcard домейни (*.yourdomain.com). За wildcard сертификати използвайте DNS-01 предизвикателството, което изисква да създадете _acme-challenge TXT запис в DNS зоната си:
sudo certbot certonly --manual --preferred-challenges dns -d "*.yourdomain.com" -d yourdomain.comСледвайте подканите за добавяне на TXT записа, изчакайте разпространението на DNS, след което натиснете Enter за завършване на валидирането.
Метод 3: Ръчна инсталация на SSL чрез SSH (Apache и Nginx)
Ръчната инсталация ви дава прецизен контрол върху поставянето на сертификата, наборите от шифри и конфигурацията на виртуалния хост. Това е предпочитаният подход за производствени сървъри, където трябва да прилагате специфични TLS политики.
Стъпка 1: Качете сертификатните файлове на сървъра
Използвайте scp за прехвърляне на файлове от вашата локална машина:
scp certificate.crt private.key ca_bundle.crt username@your-server-ip:/tmp/След това ги преместете в защитена директория, недостъпна от уеб:
sudo mkdir -p /etc/ssl/yourdomain
sudo mv /tmp/certificate.crt /etc/ssl/yourdomain/
sudo mv /tmp/private.key /etc/ssl/yourdomain/
sudo mv /tmp/ca_bundle.crt /etc/ssl/yourdomain/
sudo chmod 600 /etc/ssl/yourdomain/private.key
sudo chmod 644 /etc/ssl/yourdomain/certificate.crt /etc/ssl/yourdomain/ca_bundle.crtКритична бележка за сигурността: Частният ключ никога не трябва да е четим от всички. Разрешението chmod 600 го ограничава само до root потребителя. На системи, където Apache или Nginx работи като не-root потребител (напр. www-data), услугата все още чете ключа при стартиране, докато работи като root преди отказване от привилегии — така 600 собственост на root е правилно.
Стъпка 2а: Конфигурирайте Apache
Редактирайте конфигурацията на виртуалния хост за вашия домейн:
sudo nano /etc/apache2/sites-available/yourdomain.com.confДобавете или модифицирайте блока на SSL виртуалния хост:
<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
SSLEngine on
SSLCertificateFile /etc/ssl/yourdomain/certificate.crt
SSLCertificateKeyFile /etc/ssl/yourdomain/private.key
SSLCertificateChainFile /etc/ssl/yourdomain/ca_bundle.crt
# Modern TLS hardening
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
DocumentRoot /var/www/yourdomain
</VirtualHost>Активирайте SSL модула и сайта, след което рестартирайте Apache:
sudo a2enmod ssl headers
sudo a2ensite yourdomain.com.conf
sudo apache2ctl configtest
sudo systemctl restart apache2Винаги изпълнявайте apache2ctl configtest преди рестартиране. Синтактична грешка в конфигурационния файл ще свали целия уеб сървър.
Стъпка 2б: Конфигурирайте Nginx
Редактирайте сървърния блок на вашия домейн:
sudo nano /etc/nginx/sites-available/yourdomain.comДобавете следната конфигурация:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://yourdomain.com$request_uri;
}
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/ssl/yourdomain/certificate.crt;
ssl_certificate_key /etc/ssl/yourdomain/private.key;
ssl_trusted_certificate /etc/ssl/yourdomain/ca_bundle.crt;
# Modern TLS hardening
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
root /var/www/yourdomain;
index index.html index.php;
}Активирайте сайта и тествайте:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginxОбяснение на OCSP Stapling: Без stapling, браузърът трябва да се свърже с OCSP отговарящия на CA при всяко TLS ръкостискане, за да провери дали сертификатът е бил отменен. Това добавя латентност и разкрива данни за сърфирането пред CA. С ssl_stapling on, Nginx кешира OCSP отговора и го предоставя директно на клиента, елиминирайки допълнителното пътуване.
Укрепване на TLS: Какво пропуска оригиналната конфигурация
Сертификат, инсталиран с настройките по подразбиране, е защитен, но не е укрепен. Следната таблица обобщава допълнителните директиви, които разграничават преминаваща оценка от SSL Labs от A+:
| Директива за укрепване | Apache директива | Nginx директива | Цел |
|---|---|---|---|
| — | — | — | — |
| Деактивиране на TLS 1.0 / 1.1 | `SSLProtocol all -TLSv1 -TLSv1.1` | `ssl_protocols TLSv1.2 TLSv1.3` | Елиминиране на уязвимости в остарели протоколи |
| HSTS хедър | `Header always set Strict-Transport-Security` | `add_header Strict-Transport-Security` | Принудително HTTPS на ниво браузър, предотвратяване на SSL stripping |
| OCSP Stapling | `SSLUseStapling on` | `ssl_stapling on` | Намаляване на латентността при ръкостискане, подобряване на поверителността |
| Деактивиране на session tickets | `SSLSessionTickets off` | `ssl_session_tickets off` | Предотвратяване на деградация на forward secrecy |
| Силен набор от шифри | `SSLCipherSuite ECDHE-…` | `ssl_ciphers ECDHE-…` | Прилагане на AEAD шифри, елиминиране на RC4/3DES |
| HTTP/2 | `Protocols h2 http/1.1` | `listen 443 ssl http2` | Подобряване на производителността над TLS |
Проверка и тестване на SSL инсталацията
Инсталацията не е завършена, докато не сте проверили резултата от външна перспектива.
Проверка в браузъра
Посетете https://yourdomain.com. Иконата на катинар потвърждава валиден, доверен сертификат. Кликнете върху катинара и прегледайте детайлите на сертификата: проверете дали Common Name или Subject Alternative Name съответства на вашия домейн и проверете датата на изтичане.
SSL Labs Server Test
Отидете до SSL Labs и въведете вашия домейн. Докладът оценява вашата TLS конфигурация от F до A+ и маркира конкретни проблеми: слаби набори от шифри, липсващи верижни сертификати, отсъствие на HSTS и поддръжка на протоколи. Оценката A+ изисква HSTS с дълъг max-age и без поддръжка на TLS 1.0 или 1.1.
Проверка от командния ред с OpenSSL
openssl s_client -connect yourdomain.com:443 -servername yourdomain.comТова извежда пълната верига от сертификати, договорения набор от шифри и версията на TLS. Търсете Verify return code: 0 (ok) в края на изхода. Всеки ненулев код за връщане указва проблем с веригата или доверието.
За директна проверка на датата на изтичане на сертификата:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -datesПроверка за смесено съдържание
След активиране на HTTPS, смесеното съдържание е най-честият остатъчен проблем. То възниква, когато HTTPS страница зарежда ресурси (изображения, скриптове, стилови таблици, iframes) по HTTP. Смесеното съдържание блокира активните ресурси (скриптове, iframes) изцяло в съвременните браузъри и генерира предупреждения в конзолата за пасивни ресурси (изображения).
Поправете смесеното съдържание чрез:
- Актуализиране на всички твърдо кодирани
http://URL адреси в CMS или HTML доhttps://или протокол-относителни//. - Добавяне на хедър Content Security Policy с
upgrade-insecure-requestsкато временна обща мярка:
add_header Content-Security-Policy "upgrade-insecure-requests" always;- Използване на DevTools в браузъра (F12 > Console) за идентифициране на конкретните нарушаващи ресурси.
Подновяване на сертификата и управление на жизнения цикъл
| Източник на сертификат | Валидност по подразбиране | Метод за подновяване | Автоматизация |
|---|---|---|---|
| — | — | — | — |
| Let’s Encrypt (Certbot) | 90 дни | `certbot renew` чрез systemd таймер | Напълно автоматично |
| Търговски CA (cPanel) | 1–2 години | Ръчно преиздаване и преинсталиране | Ръчно или скриптирано |
| Търговски CA (SSH) | 1–2 години | Замяна на файлове, презареждане на уеб сървъра | Скриптируемо с cron |
| Вътрешен CA / самоподписан | По избор | Ръчно | Ръчно |
За търговски сертификати, управлявани ръчно, задайте напомняне в календара 30 дни преди изтичане. Изтекъл сертификат е по-лош от липсата на сертификат — браузърите показват блокираща грешка на цяла страница, която потребителите не могат лесно да заобиколят.
Ако управлявате множество домейни или приложение с висок трафик на Dedicated сървър, помислете за внедряване на централизирано решение за управление на сертификати като cert-manager (Kubernetes), Vault PKI или wildcard сертификат за намаляване на натоварването от подновяване при поддомейни.
Матрица за решения: Кой метод за инсталация да използвате
| Сценарий | Препоръчан метод |
|---|---|
| — | — |
| Споделен хостинг, без SSH достъп | cPanel SSL/TLS Manager |
| VPS или dedicated сървър, необходим безплатен сертификат | Certbot (Let’s Encrypt) |
| VPS или dedicated сървър, търговски OV/EV сертификат | Ръчна SSH инсталация |
| Wildcard сертификат (`*.domain.com`) | Ръчен SSH + DNS-01 предизвикателство чрез Certbot |
| Multi-domain SAN сертификат | Ръчна SSH инсталация |
| Без технически опит, управляван хостинг | cPanel AutoSSL или SSL с едно кликване от хостинг доставчика |
Технически контролен списък с основни изводи
- Потвърдете, че порт 443 е отворен в защитната стена преди инсталиране на какъвто и да е сертификат.
- Винаги проверявайте дали частният ключ съответства на сертификата преди инсталация:
openssl x509 -noout -modulus -in certificate.crt | md5sumиopenssl rsa -noout -modulus -in private.key | md5sumтрябва да произвеждат идентични хешове. - Включете пълната верига от междинни сертификати (
ca_bundle.crt) — пропускането й причинява грешки в доверието на мобилните браузъри, дори когато настолният Chrome показва катинар. - Задайте
chmod 600на файла с частния ключ; никога не го излагайте в директория, достъпна от уеб. - Деактивирайте TLS 1.0 и TLS 1.1 в конфигурацията на вашия уеб сървър — тези протоколи са остарели и уязвими.
- Активирайте HSTS с
includeSubDomainsсамо след потвърждение, че всички поддомейни също обслужват HTTPS. - Изпълнете
certbot renew --dry-runслед първоначалната настройка на Certbot, за да потвърдите, че конвейерът за подновяване работи. - Тествайте с SSL Labs след всяка инсталация или промяна в конфигурацията.
- Проверявайте за смесено съдържание незабавно след преминаване към HTTPS — то безшумно нарушава функционалността.
- За wildcard сертификати на Let’s Encrypt използвайте DNS-01 предизвикателството, а не HTTP-01.
Често задавани въпроси
Каква е разликата между SSL сертификат и TLS сертификат?
SSL (Secure Sockets Layer) е наследственият протокол, който беше отхвърлен през 1999 г. Неговият наследник, TLS (Transport Layer Security), е това, което всички съвременни HTTPS връзки действително използват. Терминът „SSL сертификат” продължава да се използва като индустриален жаргон, но всеки сертификат, издаден днес, работи над TLS 1.2 или TLS 1.3.
Защо моят SSL сертификат се показва като доверен в Chrome, но не и на Android устройства?
Това почти винаги е липсваща верига от междинни сертификати. Настолният Chrome има агресивен механизъм за извличане на сертификати (AIA fetching), който може да реконструира веригата дори когато тя отсъства от сървъра. Системното хранилище на Android не го прави. Винаги включвайте файла с веригата ca_bundle.crt в конфигурацията на вашия сървър.
Мога ли да инсталирам SSL сертификат на домейн, който все още няма уебсайт?
Да, но само ако DNS A записът на домейна се разрешава до IP адреса на сървъра. CA трябва да може да достигне сървъра, за да завърши валидирането на домейна. Ако DNS все още не е разпространен, предизвикателството ще се провали.
Как да поднова търговски SSL сертификат без прекъсване на работата?
Генерирайте нов CSR на сървъра, изпратете го до вашия CA, получете новия пакет сертификати, заменете сертификатните файлове на сървъра и презаредете уеб сървъра (systemctl reload apache2 или systemctl reload nginx). Презареждането прилага новия сертификат без прекъсване на съществуващите връзки, за разлика от пълното рестартиране.
Инсталирането на SSL сертификат автоматично ли пренасочва HTTP към HTTPS?
Не. Инсталирането на сертификат само активира HTTPS. Пренасочването от HTTP към HTTPS трябва да се конфигурира отделно във вашия виртуален хост или сървърен блок. Плъгините --apache и --nginx на Certbot предлагат автоматично конфигуриране на това пренасочване по време на инсталацията. За ръчни инсталации добавете изрична директива Redirect permanent (Apache) или return 301 (Nginx) в сървърния блок за порт 80.
