Введение: зачем нужен SSL/TLS и что вы получите из этой статьи
SSL/TLS сертификат шифрует трафик между браузером пользователя и веб-сервером, защищая данные от перехвата. Он подтверждает подлинность сайта, что критично для любых проектов, обрабатывающих персональные данные, платежи или корпоративную информацию. Без HTTPS браузеры помечают сайт как небезопасный, а поисковые системы понижают его в выдаче.
Эта статья содержит проверенные команды и конфигурации для установки сертификатов на Nginx, Apache и IIS. Вы получите готовые решения для генерации CSR, выбора типа сертификата, настройки виртуальных хостов и автоматического продления через ACME. Все примеры актуальны на 2026 год и протестированы на стабильных версиях ПО.
Если вам нужна более глубокая настройка безопасности после установки, обратитесь к руководству по комплексной защите Nginx и Apache.
Подготовка к установке: выбор сертификата и генерация CSR
Перед получением сертификата определите, какой тип вам нужен, и сгенерируйте запрос на подпись (CSR). CSR содержит информацию о домене и организации, которую удостоверяющий центр проверит перед выпуском сертификата.
Типы SSL/TLS сертификатов: DV, OV, EV, Wildcard, SAN
| Тип | Уровень проверки | Срок выпуска | Покрытие доменов | Типичное применение |
|---|---|---|---|---|
| DV (Domain Validation) | Проверка владения доменом | Несколько минут | Один домен | Личные сайты, блоги, тестовые среды |
| OV (Organization Validation) | Проверка домена и организации | 1-3 дня | Один домен | Сайты компаний, корпоративные порталы |
| EV (Extended Validation) | Расширенная проверка организации | 3-5 дней | Один домен | Банки, финансовые сервисы, крупный e-commerce |
| Wildcard | DV или OV | Как у базового типа | Основной домен и все поддомены (*.example.com) | Сервисы с множеством поддоменов (например, api.example.com, admin.example.com) |
| SAN (Multi-Domain) | DV или OV | Как у базового типа | Несколько разных доменов (example.com, example.net) | Объединение нескольких сайтов на одном сервере |
Для большинства проектов достаточно DV-сертификата. Если нужно защитить несколько поддоменов, выбирайте Wildcard. Для нескольких разных доменов подойдёт SAN.
Генерация CSR и закрытого ключа с помощью OpenSSL
CSR и закрытый ключ генерируются одной командой OpenSSL. Закрытый ключ должен храниться в безопасном месте и никогда не передаваться третьим лицам.
openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csrПараметры:
-new- создать новый CSR.-newkey rsa:2048- сгенерировать новый закрытый ключ RSA длиной 2048 бит.-nodes- не шифровать закрытый ключ паролем (удобно для автоматизации, но менее безопасно).-keyout domain.key- файл для закрытого ключа.-out domain.csr- файл для CSR.
После выполнения команды ответьте на вопросы: Common Name (домен, например, example.com), Organization, Organizational Unit, City, State, Country. Для Wildcard укажите *.example.com.
Проверьте права на файл ключа:
chmod 600 domain.keyПолучение SSL/TLS сертификата: от УЦ или через Let's Encrypt
Есть два пути: купить сертификат у коммерческого удостоверяющего центра или получить бесплатный через Let's Encrypt. Let's Encrypt подходит для большинства задач, но имеет ограничение: срок действия 90 дней и только DV-проверка.
Заказ сертификата в удостоверяющем центре
- Выберите УЦ (например, DigiCert, Sectigo, GlobalSign) и тариф.
- Заполните данные организации и домена.
- Вставьте содержимое файла
domain.csrв соответствующее поле. - Подтвердите владение доменом: по email (на адрес admin@domain.com), через DNS-запись или HTTP-файл.
- Получите архив с файлами: сертификат домена (
domain.crt), промежуточные сертификаты (ca_bundle.crt), корневой сертификат.
Для Nginx и Apache часто нужно объединить сертификат домена и цепочку в один файл:
cat domain.crt ca_bundle.crt > fullchain.crtБесплатные сертификаты Let's Encrypt: автоматизация через ACME
Let's Encrypt использует протокол ACME для автоматического выпуска и продления. Самый популярный клиент - Certbot. Установите его и выполните команду для получения сертификата без автоматической настройки сервера:
certbot certonly --webroot -w /var/www/html -d example.com -d www.example.comДля автоматической настройки Nginx или Apache используйте плагины:
certbot --nginx -d example.comили
certbot --apache -d example.comCertbot сохранит сертификаты в /etc/letsencrypt/live/example.com/. Подробнее о настройке Let's Encrypt читайте в отдельном руководстве.
Установка SSL/TLS сертификата на Nginx
Nginx использует директивы ssl_certificate и ssl_certificate_key в блоке server. Рекомендуется настроить отдельный server block для порта 443.
Настройка виртуального хоста для HTTPS
Пример конфигурации /etc/nginx/sites-available/example.com:
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/certs/fullchain.crt;
ssl_certificate_key /etc/ssl/private/domain.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/html;
index index.html;
}Объяснение директив:
listen 443 ssl- слушать порт 443 с SSL.ssl_certificate- путь к файлу полной цепочки (сертификат + промежуточные).ssl_certificate_key- путь к закрытому ключу.ssl_protocols- разрешённые протоколы. В 2026 году используйте только TLS 1.2 и 1.3.ssl_ciphers- набор шифров. Указанный набор безопасен и совместим.
После сохранения проверьте конфигурацию и перезагрузите Nginx:
nginx -t
systemctl reload nginxПеренаправление HTTP на HTTPS
Добавьте отдельный server block для порта 80, который будет перенаправлять все запросы на HTTPS:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}Это обеспечит автоматический переход пользователей и поисковых систем на защищённую версию.
Установка SSL/TLS сертификата на Apache
Apache требует включения модуля SSL и настройки виртуального хоста для порта 443.
Настройка виртуального хоста с SSL
Включите модуль SSL:
a2enmod sslСоздайте файл конфигурации /etc/apache2/sites-available/example.com-ssl.conf:
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/domain.crt
SSLCertificateKeyFile /etc/ssl/private/domain.key
SSLCertificateChainFile /etc/ssl/certs/ca_bundle.crt
DocumentRoot /var/www/html
Активируйте сайт и перезапустите Apache:
a2ensite example.com-ssl.conf
systemctl restart apache2Редирект с HTTP на HTTPS
В файле /etc/apache2/sites-available/example.com.conf (виртуальный хост для порта 80) добавьте:
ServerName example.com
Redirect permanent / https://example.com/
Либо используйте mod_rewrite:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Установка SSL/TLS сертификата на IIS
IIS хранит сертификаты в хранилище Windows. Необходимо импортировать сертификат с закрытым ключом в формате PFX или импортировать отдельно сертификат и ключ.
Импорт сертификата в хранилище Windows
Если у вас есть PEM-файлы, преобразуйте их в PFX:
openssl pkcs12 -export -out domain.pfx -inkey domain.key -in domain.crt -certfile ca_bundle.crtОткройте оснастку «Сертификаты» (certlm.msc) от имени администратора. Перейдите в раздел «Личное» -> «Сертификаты». Правой кнопкой мыши -> «Все задачи» -> «Импорт». Укажите путь к PFX-файлу и пароль (если задан).
Привязка сертификата к сайту
- Откройте IIS Manager.
- Выберите сайт в дереве слева.
- На панели справа нажмите «Привязки» (Bindings).
- Нажмите «Добавить», выберите тип «https», порт 443.
- В поле «SSL-сертификат» выберите импортированный сертификат.
- Нажмите «ОК».
Проверьте работу сайта по HTTPS.
Настройка автоматического продления сертификатов
Сертификаты Let's Encrypt действительны 90 дней. Настройте автоматическое продление, чтобы избежать простоя.
Автопродление с Certbot на Linux
Certbot устанавливает systemd-таймер автоматически. Проверьте его статус:
systemctl status certbot.timerЕсли нужно, создайте cron-задачу:
0 3 * * * certbot renew --quiet --deploy-hook "systemctl reload nginx"Для Apache замените nginx на apache2.
Автопродление на IIS с win-acme
Для Windows используйте клиент win-acme. Скачайте его с официального сайта, запустите и следуйте мастеру. Он создаст задачу в планировщике для автоматического продления и привязки сертификата.
Проверка установки и устранение типичных ошибок
После установки проверьте корректность цепочки сертификатов и работу HTTPS.
Проверка цепочки сертификатов
Выполните команду:
openssl s_client -connect example.com:443 -showcertsВ выводе должны присутствовать сертификат домена, промежуточные и корневой сертификаты. Если промежуточных нет, браузеры будут выдавать ошибку.
Используйте онлайн-сервис SSL Labs (ssllabs.com/ssltest/) для детальной оценки конфигурации.
Частые ошибки и их исправление
- Ошибка «NET::ERR_CERT_COMMON_NAME_INVALID»: сертификат не соответствует домену. Проверьте, что в CSR указан правильный домен, и сертификат выпущен для него.
- Ошибка «unable to get local issuer certificate»: отсутствует промежуточный сертификат. Убедитесь, что в конфигурации указан файл полной цепочки (fullchain.crt для Nginx или SSLCertificateChainFile для Apache).
- Проблемы с правами на файл ключа: Nginx или Apache не могут прочитать ключ. Установите права 600 и владельца root:root.
Если после установки возникают проблемы с безопасностью, обратитесь к руководству по ручной установке с расширенными настройками.
Заключение: поддержание безопасности в актуальном состоянии
Установка SSL/TLS сертификата - первый шаг к защите веб-сервера. Регулярно проверяйте срок действия сертификатов, используйте только TLS 1.2 и 1.3, обновляйте программное обеспечение. Для комплексной защиты настройте заголовки безопасности и WAF, как описано в статье о защите Nginx и Apache.
Если вы управляете несколькими серверами, рассмотрите автоматизацию через ACME-клиенты. Это сэкономит время и исключит человеческий фактор при продлении.
Хостинг для ваших проектов можно выбрать на Timeweb Cloud, где SSL-сертификаты устанавливаются в несколько кликов.