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

Как настроить SSL‑виртуальный хост в Apache2 на Ubuntu 9.10 / Debian Lenny

• 6 min read • Серверы • Обновлено 28 Nov 2025
Настройка SSL vhost в Apache2 на Ubuntu/Debian
Настройка SSL vhost в Apache2 на Ubuntu/Debian

Коротко: краткая инструкция по включению mod_ssl и настройке SSL-виртуального хоста (порт 443) в Apache2 на Ubuntu 9.10 / Debian Lenny. Показано использование как системного самоподписанного «snakeoil» сертификата, так и создание собственного самоподписанного сертификата и подготовка файлов для отправки в доверенный CA.

Version 1.0
Author: Falko Timme
Follow me on Twitter

Этот документ объясняет, как настроить SSL‑виртуальный хост (vhost) в Apache2 на Ubuntu 9.10 и Debian Lenny, чтобы сайт был доступен по HTTPS (порт 443). SSL — это «Secure Sockets Layer», криптопротокол для защиты сетевых соединений; здесь мы используем модуль mod_ssl и OpenSSL.

Важно: все шаги в примерах выполнены с root‑правами. На Ubuntu сначала выполните:

sudo su

Чтобы перейти в режим root.

Краткое пояснение терминов

  • SSL/TLS — протоколы шифрования каналов связи.
  • CA — центр сертификации (certificate authority).
  • vhost — виртуальный хост Apache, отдельная конфигурация сайта.

Содержание

  • Предварительная заметка
  • Включение mod_ssl
  • Настройка виртуального хоста (пример)
  • Создание собственного самоподписанного сертификата
  • Краткое руководство по получению сертификата от доверенного CA
  • Тесты и проверка
  • Меры безопасности и рекомендации
  • Отказоустойчивые варианты и альтернативы
  • Рекомендации для ролей: администратор, разработчик, специалист по безопасности
  • Краткий глоссарий и контрольный список

1 Предварительная заметка

Предполагается, что у вас уже есть рабочая LAMP‑среда на Ubuntu 9.10 или Debian Lenny (Apache2 + PHP + MySQL). В оригинале использовался домен www.hostmauritius.com — замените его на свой домен везде, где это необходимо.

Важно: по умолчанию в старых релизах Apache можно привязать только один SSL‑vhost на один IP‑адрес. Чтобы разместить несколько SSL‑сайтов на одном сервере, используйте разные IP, SNI (если поддерживается) или терминатор TLS/SSL (reverse proxy).

2 Включение mod_ssl

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

a2enmod ssl
/etc/init.d/apache2 restart

Проверьте, что Apache слушает порт 443:

netstat -tap | grep https

Пример вывода:

root@server1:~# netstat -tap | grep https
tcp6       0      0 [::]:https              [::]:*                  LISTEN      1238/apache2
root@server1:~#

Если netstat не показывает прослушивание порта, проверьте конфигурацию и журналы /var/log/apache2/error.log.

3 Настройка виртуального хоста

В примере создаём vhost для www.hostmauritius.com с корневой папкой /var/www/www.hostmauritius.com:

mkdir -p /var/www/www.hostmauritius.com

Apache содержит шаблон SSL‑vhost в /etc/apache2/sites-available/default-ssl. Скопируем его и отредактируем:

cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/www.hostmauritius.com-ssl
vi /etc/apache2/sites-available/www.hostmauritius.com-ssl

Внутри файла укажите IP в строке , корректный ServerAdmin и ServerName, а также DocumentRoot и пути к каталогам. Пример конфигурации (сохранён из шаблона):



        ServerAdmin [email protected]
        ServerName www.hostmauritius.com:443
        DocumentRoot /var/www/www.hostmauritius.com
        
                Options FollowSymLinks
                AllowOverride None
        
        
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        
        ErrorLog /var/log/apache2/error.log
        LogLevel warn
        CustomLog /var/log/apache2/ssl_access.log combined
        Alias /doc/ "/usr/share/doc/"
        
                Options Indexes MultiViews FollowSymLinks
                AllowOverride None
                Order deny,allow
                Deny from all
                Allow from 127.0.0.0/255.0.0.0 ::1/128
        
        SSLEngine on
        SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
        
                SSLOptions +StdEnvVars
        
        
                SSLOptions +StdEnvVars
        
        BrowserMatch ".*MSIE.*" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0

Этот пример использует системный самоподписанный «snakeoil» сертификат:

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

Теперь деактивируйте дефолтный SSL‑vhost (если активен), включите ваш vhost и перезагрузите конфигурацию:

a2dissite default-ssl
a2ensite www.hostmauritius.com-ssl
/etc/init.d/apache2 reload

Откройте браузер и перейдите на https://www.hostmauritius.com. При использовании самоподписанного сертификата браузер выдаст предупреждение.

Предупреждение браузера при самоподписанном сертификате

4 Создание собственного самоподписанного сертификата

Пакет ssl-cert необходим для удобного создания сертификатов:

aptitude install ssl-cert

Создадим самоподписанный сертификат и ключ в одном файле (пример команды из исходника):

make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/www.hostmauritius.com.crt

При запросе укажите имя хоста (Host name): www.hostmauritius.com

Этот файл будет содержать и приватный ключ, и сертификат. Чтобы разнести их по отдельным файлам (рекомендуется), выполните разделение:

  1. Скопируйте приватный ключ в /etc/ssl/private/www.hostmauritius.com.key — файл должен содержать блок от —–BEGIN RSA PRIVATE KEY—– до —–END RSA PRIVATE KEY—–. Пример:
vi /etc/ssl/private/www.hostmauritius.com.key
# вставьте содержимое блока приватного ключа
chmod 600 /etc/ssl/private/www.hostmauritius.com.key
  1. Скопируйте сертификат в /etc/ssl/certs/www.hostmauritius.com.pem — файл должен содержать блок сертификата от —–BEGIN CERTIFICATE—– до —–END CERTIFICATE—–:
vi /etc/ssl/certs/www.hostmauritius.com.pem
# вставьте содержимое блока сертификата
  1. Удалите исходный объединённый файл:
rm -f /etc/ssl/private/www.hostmauritius.com.crt
  1. Обновите конфигурацию vhost, чтобы указывать отдельные файлы:
vi /etc/apache2/sites-available/www.hostmauritius.com-ssl
# замените пути
SSLCertificateFile    /etc/ssl/certs/www.hostmauritius.com.pem
SSLCertificateKeyFile /etc/ssl/private/www.hostmauritius.com.key

Перезагрузите Apache:

/etc/init.d/apache2 reload

Теперь vhost использует ваш ключ и самоподписанный сертификат; браузер всё ещё будет предупреждать о ненадёжности.

5 Получение сертификата от доверенного CA (краткий обзор)

Чтобы браузер перестал показывать предупреждение, получите сертификат у доверенного центра сертификации (Verisign, Thawte, Comodo и т. п.). Общая последовательность:

  1. Сгенерировать приватный ключ и CSR (Certificate Signing Request).
openssl genrsa -out /etc/ssl/private/www.hostmauritius.com.key 2048
openssl req -new -key /etc/ssl/private/www.hostmauritius.com.key -out /tmp/www.hostmauritius.com.csr

При создании CSR указывайте реальное значение Common Name (CN) — например, www.hostmauritius.com.

  1. Отправить CSR в выбранный CA и следовать их процедурам (включая подтверждение владения доменом).

  2. Получив сертификат от CA, сохраните его в /etc/ssl/certs/www.hostmauritius.com.crt и — при необходимости — объедините цепочку сертификатов (chain) в один файл или используйте SSLCertificateChainFile (если ваш Apache поддерживает директиву).

  3. Обновите vhost на указание CA‑сертификата и ключа, затем перезагрузите Apache.

Пример:

SSLCertificateFile /etc/ssl/certs/www.hostmauritius.com.crt
SSLCertificateKeyFile /etc/ssl/private/www.hostmauritius.com.key
SSLCertificateChainFile /etc/ssl/certs/ca-chain.pem

Важно: у многих CA цепочка должна быть настроена корректно, иначе клиенты будут выдавать предупреждения.

Тесты и критерии приёмки

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

  • По адресу https://your-domain/ возвращается 200 OK и заглушка сайта.
  • Браузер (или curl) устанавливает TLS‑соединение без ошибок (для самоподписанного сертификата — предупреждение у браузера, для CA — никаких предупреждений).
  • Приватный ключ имеет права 600 и принадлежит root.

Примеры тестов:

# Проверка доступности порта 443
curl -I -k https://www.hostmauritius.com

# Проверка цепочки сертификатов (с использованием openssl)
openssl s_client -connect www.hostmauritius.com:443 -showcerts

Если при подключении возникают ошибки, смотрите журналы Apache (/var/log/apache2/error.log) и проверьте права файлов ключей.

Меры безопасности и рекомендации

  • Отключите старые и небезопасные протоколы (SSLv2, SSLv3) и слабые шифры. В Apache это настраивается через директивы SSLProtocol и SSLCipherSuite, если ваша версия поддерживает эти опции.
  • Храните приватный ключ с режимом 600 и доступом только для root.
  • Регулярно обновляйте систему и OpenSSL (в пределах поддержки дистрибутива).
  • Используйте сильные ключи (2048+ бит для RSA, либо предпочтительно Ed25519/EC где возможно).
  • Рассмотрите терминирование TLS на прокси/балансировщике при использовании нескольких приложений.

Пример безопасной базовой директивы (в более современных версиях Apache):

SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!aNULL:!MD5

Альтернативные подходы и когда они уместны

  • Несколько SSL‑сайтов на одном IP:

    • Используйте SNI (Server Name Indication) — если сервер и клиенты поддерживают SNI.
    • Альтернатива: выдельте отдельные IP‑адреса под каждый SSL‑сайт.
    • Альтернатива: терминатор TLS (nginx/haproxy/стенд‑proxy) с поддержкой SNI.
  • Автоматическое получение сертификатов:

    • Для современных систем используйте ACME‑совместимые инструменты (Let’s Encrypt + certbot) для автоматизации выдачи и обновления.
  • Если вы обслуживаете множество поддоменов — рассмотрите wildcard‑сертификат (*.example.com) или управление сертификатами через централизованный инструмент.

Роль‑ориентированные контрольные списки

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

  • Убедиться, что порт 443 открыт в фаерволе.
  • Включить mod_ssl и активировать vhost.
  • Проверить права на приватный ключ (chmod 600).
  • Перезагрузить Apache и проверить журналы.

Разработчику:

  • Убедиться, что ссылки и ресурсы сайта используют https:// или относительные пути.
  • Проверять смешанный контент (mixed content) — браузеры блокируют небезопасные ресурсы.

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

  • Выполнить аудит протоколов и наборов шифров.
  • Настроить HSTS только после подтверждения правильности HTTPS (Strict‑Transport‑Security).
  • Планировать регулярную ротацию сертификатов и ключей.

Частые ошибки и устранение неполадок

  • Ошибка: Apache не запускается после изменения конфигурации.
    Проверка: запустите apache2ctl configtest (или apachectl configtest) и исправьте синтаксические ошибки.

  • Ошибка: браузер всё ещё предупреждает после установки CA‑сертификата.
    Проверка: убедитесь, что установлена вся цепочка CA (SSLCertificateChainFile или сертификат включает промежуточные сертификаты).

  • Ошибка: доступ по HTTPS работает локально, но недоступен извне.
    Проверка: фаервол/маршрутизатор может блокировать порт 443.

Короткий чек‑лист при развёртывании

  • Домен настроен и указывает на IP сервера.
  • Порт 443 открыт в сети и на сервере.
  • mod_ssl включён, vhost настроен.
  • Приватный ключ сохранён с правами 600.
  • Сертификат и, при необходимости, цепочка CA размещены и указаны в конфигурации.
  • Apache перезагружен и тесты пройдены.

Глоссарий (в 1 строку)

  • SSL/TLS — протоколы для шифрования каналов связи.
  • CA — организация, выдающая сертификаты.
  • CSR — запрос на сертификат, содержащий публичный ключ и данные о владельце.
  • SNI — расширение TLS, позволяющее нескольким сертификатам сосуществовать на одном IP.

Ресурсы и дальнейшие шаги

  • Для автоматизации получения сертификатов рассмотрите ACME‑клиенты (certbot) — применяется в современных дистрибутивах.
  • Обновить документацию и процедуры по ротации ключей и сертификатов.

Краткое резюме

  • Настройка SSL‑vhost включает включение mod_ssl, создание vhost‑файла и указание путей к ключу и сертификату.
  • Самоподписанный сертификат удобен для тестов; для продакшна получите сертификат у доверенного CA.
  • Проверьте права на приватный ключ, журнал ошибок Apache и последовательность цепочки сертификатов.

Важное: перед внесением изменений в продуктивную систему сделайте резервную копию конфигурации и протестируйте изменения в стенде.

Поделиться: 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 быстро