15%

Спести 15% на всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код:

Skills
За начало
10.10.2024

Как да инсталирате 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.crt
  • Private Key (KEY): Съдържание на private.key. Ако сте генерирали CSR в cPanel, това поле се попълва автоматично от хранилището за ключове на cPanel.
  • Certificate Authority Bundle (CABUNDLE): Съдържание на 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-apache

    Debian / Ubuntu (Nginx):

    sudo apt update && sudo apt install -y certbot python3-certbot-nginx

    RHEL / AlmaLinux / Rocky Linux (Apache):

    sudo dnf install -y epel-release
    sudo dnf install -y certbot python3-certbot-apache

    RHEL / 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.com

    Certbot извършва 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) изцяло в съвременните браузъри и генерира предупреждения в конзолата за пасивни ресурси (изображения).

    Поправете смесеното съдържание чрез:

    1. Актуализиране на всички твърдо кодирани http:// URL адреси в CMS или HTML до https:// или протокол-относителни //.
    2. Добавяне на хедър Content Security Policy с upgrade-insecure-requests като временна обща мярка:
    add_header Content-Security-Policy "upgrade-insecure-requests" always;
    1. Използване на 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.

    15%

    Спести 15% на всички хостинг услуги

    Тествай уменията си и получи Отстъпка за всеки хостинг план

    Използвайте код:

    Skills
    За начало