Гид по технологиям

Основы Linux: как создать SSL‑сертификат Apache на Ubuntu

• 6 min read • Linux • Обновлено 28 Nov 2025
Apache SSL на Ubuntu: создание сертификата
Apache SSL на Ubuntu: создание сертификата

Содержание

  • 1.1 SSL‑сертификаты — обзор
  • 1.2 Пошаговое руководство по созданию SSL‑сертификата для Apache на Ubuntu
    • 1.2.1 Шаг 1 — активация модуля SSL
    • 1.2.2 Шаг 2 — создание каталога для сертификатов
    • 1.2.3 Шаг 3 — создание самоподписанного сертификата
    • 1.2.4 Шаг 4 — настройка виртуального хоста
    • 1.2.5 Шаг 5 — активация виртуального хоста и перезагрузка Apache
  • Дополнительно: альтернативы, проверка, отладка, чек‑листы и тесты
  • Заключение

1.1 SSL‑сертификаты — обзор

SSL/TLS‑сертификат — это криптографический объект, который шифрует трафик между браузером и сервером и позволяет проверять подлинность сервера. Сертификаты выпускают центры сертификации (CA), которые подтверждают соответствие домена владельцу. Самоподписанный сертификат создаёт и подписывает сертификат тот же сервер: шифрование будет работать, но браузеры покажут предупреждение о доверии.

Краткое определение: SSL/TLS — протоколы шифрования для защищённого HTTP (HTTPS).

Важно: для рабочего сайта в продакшне рекомендуется использовать сертификат от CA (например, Let’s Encrypt), а самоподписанный сертификат удобно применять для тестовых окружений или внутренней сети.

1.2 Пошаговое руководство по созданию SSL‑сертификата для Apache на Ubuntu

Требования и заметки перед началом:

  • У вас должны быть права root или возможность выполнять sudo. Многие команды требуют повышения привилегий.
  • На сервере должен быть установлен Apache. Установка:
sudo apt-get update
sudo apt-get install apache2

После установки можно переходить к включению SSL и настройке.

1.2.1 Шаг 1 — активация модуля SSL

Включите модуль SSL для Apache и перезапустите сервис:

sudo a2enmod ssl
sudo service apache2 restart

a2enmod подключает модуль, необходимый для обработки HTTPS. Перезапуск применяет изменения.

1.2.2 Шаг 2 — создание каталога для сертификатов

Создайте каталог, где будут храниться приватный ключ и сертификат:

sudo mkdir -p /etc/apache2/ssl
sudo chmod 700 /etc/apache2/ssl

Права 700 ограничивают доступ к приватному ключу — это хорошая практика безопасности.

1.2.3 Шаг 3 — создание самоподписанного сертификата

Генерация самоподписанного сертификата и ключа командой OpenSSL. По умолчанию здесь 365 дней (год); замените число в -days при необходимости.

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Команда создаст 2048‑битный RSA‑ключ и сертификат и сохранит их в каталоге /etc/apache2/ssl.

При выполнении OpenSSL запросит заполнение полей Distinguished Name (DN). Пример интерактивного вывода:

Generating a 2048 bit RSA private key
...................................................................................+++
.+++
writing new private key to '/etc/apache2/ssl/apache.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Самый важный параметр — Common Name: укажите полное доменное имя (FQDN), например example.com. Если у вас нет домена, можно указать IP‑адрес, но в большинстве современных браузеров это не решает проблему доверия.

Факт‑бокс: ключ RSA 2048 бит, порт HTTPS — 443, срок по умолчанию — 365 дней.

1.2.4 Шаг 4 — настройка виртуального хоста

Откройте конфигурацию SSL‑виртуального хоста. По умолчанию файл называется default-ssl.conf или default-ssl в каталоге sites‑available.

sudo nano /etc/apache2/sites-available/default-ssl.conf
# или
sudo nano /etc/apache2/sites-available/default-ssl

Найдите и при необходимости добавьте директиву ServerName — сразу под директивой ServerAdmin:

ServerAdmin webmaster@localhost
ServerName sample.com:443

Замените sample.com на ваш домен или IP. Домен в ServerName должен совпадать с Common Name при генерации сертификата.

Далее убедитесь, что внутри секции заданы правильные пути к сертификату и ключу:

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Сохраните изменения и закройте редактор.

1.2.5 Шаг 5 — активация виртуального хоста и перезагрузка Apache

Включите сайт и перезапустите конфигурацию Apache:

sudo a2ensite default-ssl
sudo service apache2 reload

Проверьте статус Apache:

sudo service apache2 status

Теперь откройте в браузере https://ваш-домен — браузер может показывать предупреждение о недоверенном сертификате (только для самоподписанных сертификатов).

Дополнительно: проверка, отладка и тесты

Проверка сертификата через openssl:

openssl s_client -connect example.com:443 -showcerts

Если сертификат не загружается или Apache не стартует, проверьте журналы:

sudo tail -n 200 /var/log/apache2/error.log
sudo journalctl -u apache2 --no-pager

Типичные ошибки и решения:

  • Ошибка права доступа к /etc/apache2/ssl/apache.key — убедитесь, что файл доступен только root (chmod 600) и владеет root.
  • Неправильный путь в SSLCertificateFile/SSLCertificateKeyFile — проверьте пути и их наличие.
  • Конфликт портов — убедитесь, что порт 443 не занят другим сервисом.

Критерии приёмки

  • Apache запускается без ошибок.
  • Порт 443 слушается: ss -ltnp | grep :443 показывает apache2.
  • При подключении по https сервер отвечает и отдаёт сертификат.
  • Для самоподписанного сертификата браузер показывает предупреждение о доверии — это ожидаемо.

Альтернативы и лучшие практики

  1. Let’s Encrypt (рекомендуется для публичных сайтов)
  • Let’s Encrypt даёт бесплатные сертификаты, доверенные всеми основными браузерами. Утилита certbot автоматизирует получение и автообновление.

Короткие команды для установки certbot и автоматической настройки Apache:

sudo apt-get install certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com
  1. Использовать доверенный платный CA, если нужен расширенный уровень проверки (OV/EV).

  2. Для внутренних сетей удобнее использовать собственный корпоративный CA и настроить доверие через внутренние политики.

Когда самоподписанный сертификат не подойдёт

  • Для публичных сайтов, где важна репутация и отсутствие предупреждений в браузере.
  • Для сервисов, где требуется доверенная цепочка сертификации (банковские приложения, платежи).

Ментальные модели и эвристики

  • Разделяйте роль ключа и сертификата: ключ — секрет, сертификат — публичный материал.
  • Минимизируйте срок действия сертификата в тестовых средах, чтобы идентифицировать устаревшие ключи.
  • Держите приватные ключи под контролем доступа и делайте резервные копии в безопасном хранилище.

Чек‑лист по ролям

Администратор:

  • Наличие прав sudo/root
  • Установлен Apache
  • [ ] Создан каталог /etc/apache2/ssl с правами 700
  • Сгенерирован ключ и сертификат
  • Настроен виртуальный хост и указаны верные пути
  • [ ] Включён default-ssl и модуль ssl
  • Перезагрузка Apache и проверка логов

Разработчик/тестировщик:

  • [ ] Открыть https://domain и проверить загрузку страниц
  • Проверить предупреждения браузера (если самоподписанный)
  • [ ] Выполнить openssl s_client и проверить цепочку сертификатов

Специалист по безопасности:

  • Проверить права доступа к ключам (chmod 600 или 640)
  • Оценить необходимость использования CA vs самоподписанного
  • План обновления и ротации ключей

Мини‑практика: тесты приёмки

  1. Доступ по HTTPS: открыть https://example.com и получить статус 200.
  2. Проверка порта: ss -ltnp | grep :443 должен показать apache2.
  3. Проверка сертификата: openssl x509 -in /etc/apache2/ssl/apache.crt -noout -text и сверить CN и сроки.

Сниппет — быстрая шпаргалка команд

# Установка Apache
sudo apt-get update && sudo apt-get install apache2
# Включение SSL
sudo a2enmod ssl && sudo service apache2 restart
# Создание каталога и прав
sudo mkdir -p /etc/apache2/ssl && sudo chmod 700 /etc/apache2/ssl
# Генерация самоподписанного сертификата
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
# Настройка сайта и включение
sudo nano /etc/apache2/sites-available/default-ssl.conf
sudo a2ensite default-ssl && sudo service apache2 reload
# Проверка
openssl s_client -connect example.com:443 -showcerts

Диагностика: сценарии отказа и решения

  1. Apache не стартует после включения SSL
    • Проверьте синтаксис конфигурации: sudo apachectl configtest
    • Посмотрите /var/log/apache2/error.log
  2. Браузер не видит сайт по HTTPS
    • Убедитесь, что порт 443 открыт в брандмауэре: sudo ufw allow 443/tcp
    • Проверьте, слушает ли Apache порт 443
  3. Неправильный домен в сертификате
    • Сгенерируйте сертификат заново с верным Common Name или используйте SAN

Decision flowchart

flowchart TD
  A[Начало] --> B{Есть ли публичный домен?}
  B -- Да --> C{Требуется доверие без предупреждений?}
  C -- Да --> D[Использовать Let's Encrypt 'certbot']
  C -- Нет --> E[Можно использовать самоподписанный для теста]
  B -- Нет --> F[Внутренняя сеть: использовать корпоративный CA или самоподписанный]
  D --> G[Настроить автообновление]
  E --> H[Сгенерировать самоподписанный сертификат]
  F --> I[Развернуть внутренний CA и доверить ему хосты]

Короткий анонс для публикации

Создание SSL‑сертификата для Apache на Ubuntu — базовая операция для защиты веб‑сайтов. В этой пошаговой инструкции показано, как включить модуль SSL, сгенерировать самоподписанный сертификат через OpenSSL, настроить виртуальный хост и проверить работу по HTTPS. Также рассмотрены альтернативы (Let’s Encrypt), распространённые ошибки и чек‑листы для администраторов.

Сопровождающие рекомендации по безопасности

  • Не храните приватные ключи в общедоступных резервных копиях.
  • Регулярно обновляйте OpenSSL и Apache.
  • Автоматизируйте обновление сертификатов (например, через certbot для Let’s Encrypt).

Заключение

Эти шаги позволяют быстро подготовить прототип защищённого HTTPS‑сервера на базе Apache и Ubuntu. Для продакшена выбирайте доверенный CA и автоматическое обновление сертификатов. Для тестовых окружений самоподписанный сертификат даёт необходимое шифрование и комфорт при разработке.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро