
SSL-сертификат обеспечивает шифрование трафика между сервером и клиентом, что особенно важно при работе с формами, авторизацией и передачей конфиденциальных данных. На серверах под управлением Ubuntu настройка HTTPS обычно сводится к установке пакета certbot, выбору плагина для используемого веб-сервера и корректной конфигурации виртуальных хостов.
Перед установкой сертификата стоит проверить, что доменное имя корректно указывает на сервер по A/AAAA-записям, а необходимые порты открыты в файрволе. Для Nginx используется плагин python3-certbot-nginx, для Apache – python3-certbot-apache. Эти модули позволяют автоматически вносить изменения в конфигурацию и выпускать сертификат без ручного редактирования файлов.
После получения сертификата важно настроить автоматическое обновление. Certbot создаёт системный таймер, который проверяет срок действия каждые 12 часов и продлевает сертификат примерно за 30 дней до истечения. Рекомендуется дополнительно выполнить проверку командой certbot renew —dry-run, чтобы убедиться, что продление проходит без ошибок.
Проверка установленных пакетов для работы с SSL

Перед настройкой сертификата требуется убедиться, что в системе присутствуют утилиты, обеспечивающие генерацию ключей, создание запросов и работу с TLS-модулями.
- Проверка наличия OpenSSL:
- Команда для просмотра версии:
openssl version -a - Пакет в системе:
dpkg -l | grep openssl
- Команда для просмотра версии:
- Проверка инструментов для управления сертификатами:
- Для работы с сертификатами в PEM: пакет
ca-certificates - Команда проверки установки:
dpkg -l | grep ca-certificates - Обновление хранилища:
sudo update-ca-certificates
- Для работы с сертификатами в PEM: пакет
- Проверка наличия клиента для ACME (если планируется выпуск Let’s Encrypt):
- Certbot:
dpkg -l | grep certbotилиcertbot --version - Плагины для веб-серверов:
python3-certbot-nginx,python3-certbot-apache
- Certbot:
- Проверка библиотек для TLS:
- Наличие GnuTLS:
dpkg -l | grep gnutls - Пакет
libssl, используемый серверными службами:dpkg -l | grep libssl
- Наличие GnuTLS:
Если пакет отсутствует, его устанавливают через APT. Для исключения конфликтов перед установкой выполняют обновление индекса: sudo apt update.
Установка необходимых утилит для управления сертификатами

Для корректной работы SSL на сервере требуется набор инструментов, обеспечивающих генерацию ключей, создание запросов на сертификаты и проверку криптографических параметров. В первую очередь устанавливаются пакеты OpenSSL и утилиты для работы с репозиториями.
Обновите индексы пакетов и установите базовый набор:
sudo apt update
sudo apt install openssl ca-certificates gnupg2
Пакет openssl предоставляет функции для генерации приватных ключей, CSR и тестирования TLS-подключений. ca-certificates добавляет корневые сертификаты, используемые проверяющими компонентами системы. gnupg2 необходим для верификации внешних репозиториев, если планируется установка дополнительных инструментов, таких как Certbot.
При работе с Let’s Encrypt удобен Certbot. Его установка выполняется через официальный репозиторий:
sudo apt install certbot python3-certbot-apache
Для Nginx используется модуль:
sudo apt install certbot python3-certbot-nginx
После установки убедитесь, что версии утилит доступны:
openssl version
certbot --version
Генерация приватного ключа и CSR-запроса
Приватный ключ создаётся заранее, так как он требуется для формирования CSR. Ключ сохраняется только на сервере и не передаётся третьим сторонам. Для генерации рекомендуется использовать длину 2048 или 4096 бит.
Команда для создания ключа:
openssl genrsa -out /etc/ssl/private/domain.key 4096
После генерации ключа создаётся CSR-запрос, который передаётся центру сертификации. В запрос включаются данные о домене и организации. Для одиночного домена применяется следующий пример:
openssl req -new -key /etc/ssl/private/domain.key -out /etc/ssl/csr/domain.csr
При выполнении команды запрашиваются параметры, влияющие на содержимое будущего сертификата. Основные поля сведены в таблицу:
| Поле | Описание |
|---|---|
| Common Name (CN) | Основное доменное имя, например: example.com |
| Country (C) | Двухбуквенный код страны, например: RU |
| State (ST) | Регион или область |
| Locality (L) | Город |
| Organization (O) | Юридическое лицо или владелец ресурса |
| Organizational Unit (OU) | Отдел или подразделение (необязательно) |
Для доменов с поддоменами используется расширение SAN. Конфигурация задаётся вручную:
openssl req -new -key /etc/ssl/private/domain.key -out /etc/ssl/csr/domain.csr -config san.conf
Файл san.conf содержит список дополнительных доменов, которые требуется включить в сертификат.
Размещение полученного сертификата в системном каталоге

Полученный от центра сертификации файл сертификата переносится в каталог, который используется сервером для хранения TLS-данных. В Ubuntu принято размещать сертификаты в /etc/ssl/certs/, а приватные ключи – в /etc/ssl/private/.
Сертификат копируется в системный каталог командой:
sudo cp domain.crt /etc/ssl/certs/
Если выдана цепочка сертификатов (bundle), она также сохраняется в этот каталог:
sudo cp domain_chain.crt /etc/ssl/certs/
После копирования устанавливаются права доступа. Приватный ключ должен быть ограничен для чтения только пользователем root:
sudo chmod 600 /etc/ssl/private/domain.key
Для сертификатов допускается чтение системой и службами, поэтому обычно применяется режим 644:
sudo chmod 644 /etc/ssl/certs/domain.crt
При множестве сертификатов полезно использовать осмысленные имена файлов: domain.crt, domain_chain.crt, domain.key. Это упрощает настройку серверов и автоматизацию обновлений.
Настройка Nginx для использования SSL сертификата
Для активации HTTPS в конфигурации Nginx создаётся отдельный серверный блок или изменяется существующий. Файлы конфигураций располагаются в /etc/nginx/sites-available/ с последующей активацией через символическую ссылку в /etc/nginx/sites-enabled/.
Откройте конфигурацию домена:
sudo nano /etc/nginx/sites-available/example.conf
В блок server добавляется описание SSL-параметров:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/ssl/certs/domain.crt;
ssl_certificate_key /etc/ssl/private/domain.key;
ssl_trusted_certificate /etc/ssl/certs/domain_chain.crt;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
root /var/www/example;
index index.html;
}
Для корректного перенаправления пользователей на защищённую версию создаётся HTTP-блок:
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
После внесения изменений выполняется проверка конфигурации:
sudo nginx -t
sudo systemctl reload nginx
Nginx должен начать обслуживать домен по протоколу HTTPS с указанными сертификатами и параметрами безопасности.
Настройка Apache для подключения SSL сертификата
Убедитесь, что установлен пакет apache2 и модуль SSL: выполните команду sudo apt install apache2 libapache2-mod-ssl. После установки активируйте модуль SSL командой sudo a2enmod ssl.
Создайте виртуальный хост для HTTPS. Откройте или создайте файл конфигурации, например /etc/apache2/sites-available/example-ssl.conf, и укажите пути к сертификату и ключу:
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/example.crt
SSLCertificateKeyFile /etc/ssl/private/example.key
SSLCertificateChainFile /etc/ssl/certs/chain.pem
</VirtualHost>
Проверьте конфигурацию командой sudo apache2ctl configtest. Если ошибок нет, активируйте виртуальный хост: sudo a2ensite example-ssl.conf.
Перезапустите Apache для применения изменений: sudo systemctl restart apache2.
Для проверки корректной работы SSL выполните curl -Ik https://example.com или откройте сайт в браузере, убедившись, что соединение защищено и отображается корректный сертификат.
При необходимости включите автоматическое обновление сертификатов Let’s Encrypt с помощью certbot и настройте перезапуск Apache после обновления: sudo certbot --apache.
Проверка корректности конфигурации и обновление цепочки сертификатов

После установки SSL сертификата важно убедиться в правильности конфигурации и актуальности цепочки сертификатов. Неправильная конфигурация может привести к ошибкам соединения или предупреждениям браузера.
Основные шаги проверки и обновления:
- Проверка конфигурации Apache:
- Запустите команду:
sudo apachectl configtest. Она выявляет синтаксические ошибки и некорректные директивы. - Ошибки вида
AH00526: Syntax errorтребуют исправления в файле виртуального хоста, обычно/etc/apache2/sites-available/your-domain.conf.
- Запустите команду:
- Проверка цепочки сертификатов:
- Убедитесь, что сертификаты промежуточного уровня (
intermediate) присутствуют и корректны.
- Убедитесь, что сертификаты промежуточного уровня (
- Обновление цепочки сертификатов:
- Скачайте актуальные промежуточные сертификаты с сайта удостоверяющего центра (CA).
- Объедините основной и промежуточные сертификаты в один файл:
cat your_domain.crt intermediate.crt > fullchain.crt. - В конфигурации Apache укажите путь к полному цепочному файлу:
SSLCertificateFile /etc/ssl/certs/fullchain.crt.
- Перезапуск сервера:
- После внесения изменений перезапустите Apache:
sudo systemctl restart apache2. - Повторно проверьте соединение через OpenSSL или онлайн-сервисы проверки SSL, чтобы убедиться, что цепочка сертификатов распознается полностью.
- После внесения изменений перезапустите Apache:
Регулярная проверка цепочки сертификатов и конфигурации предотвращает ошибки HTTPS и повышает безопасность соединений. Рекомендуется автоматизировать проверку с помощью скриптов и мониторинговых сервисов.
Вопрос-ответ:
Какие типы SSL сертификатов можно установить на Ubuntu?
На Ubuntu можно установить несколько типов SSL сертификатов: стандартные (для одного домена), wildcard (для всех поддоменов одного домена) и многодоменные (SAN), которые подходят для защиты нескольких доменов одновременно. Выбор зависит от количества доменов, которые нужно защитить, и бюджета.
Как проверить, что SSL сертификат корректно установлен на сервере?
Проверку проводят с помощью утилит openssl и браузера. Например, командой openssl s_client -connect example.com:443 можно увидеть информацию о сертификате, включая дату истечения и цепочку доверия. Также важно убедиться, что цепочка сертификатов полная, иначе браузеры могут выдавать предупреждения.
Можно ли использовать бесплатные SSL сертификаты на Ubuntu, и как их получить?
Да, бесплатные сертификаты выдаёт сервис Let’s Encrypt. Для их установки используют утилиту Certbot, которая автоматически генерирует сертификат и настраивает веб-сервер. Достаточно установить Certbot через apt и выполнить команду, например, sudo certbot --apache -d example.com для Apache или --nginx для Nginx.
Как обновить SSL сертификат на Ubuntu после истечения срока действия?
Обновление можно выполнить вручную или автоматически через Certbot. Для ручного обновления используют команду sudo certbot renew, которая проверяет сертификаты и обновляет те, срок которых близок к истечению. После обновления важно перезапустить веб-сервер, чтобы новые сертификаты начали действовать.
Что делать, если веб-сервер не запускается после установки SSL сертификата?
Чаще всего проблема связана с некорректной конфигурацией SSL. Необходимо проверить файлы конфигурации Apache или Nginx на наличие правильных путей к сертификату и ключу. Также нужно убедиться, что цепочка сертификатов полная. Команда sudo apachectl configtest или sudo nginx -t поможет выявить ошибки перед перезапуском сервера.
Какие предварительные шаги нужны перед установкой SSL сертификата на Ubuntu?
Перед установкой SSL сертификата необходимо убедиться, что сервер обновлён и настроен для работы с HTTPS. Рекомендуется проверить наличие установленных пакетов OpenSSL и утилит для управления сертификатами, таких как Certbot. Также важно иметь зарегистрированный домен и доступ к его DNS-записям, чтобы подтвердить владение. На этом этапе стоит создать резервные копии конфигурационных файлов веб-сервера (Apache или Nginx), чтобы избежать потери настроек при ошибках.
Как проверить корректность работы SSL после установки на Ubuntu?
После установки сертификата необходимо убедиться, что соединение с сервером защищено. Для этого можно использовать команду openssl s_client -connect ваш_домен:443, которая покажет цепочку сертификатов и алгоритмы шифрования. Также стоит проверить работу через браузер и убедиться, что нет предупреждений о безопасности. Важной частью является проверка автоматического перенаправления HTTP на HTTPS, чтобы все соединения использовали защищённый протокол. При обнаружении ошибок стоит проверить пути к сертификату и ключу в конфигурационных файлах веб-сервера и обновить их при необходимости.
