Как настроить SSL‑виртуальный хост в Apache2 на Ubuntu 9.10 / Debian Lenny
Коротко: краткая инструкция по включению 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.comApache содержит шаблон 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 [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
Этот файл будет содержать и приватный ключ, и сертификат. Чтобы разнести их по отдельным файлам (рекомендуется), выполните разделение:
- Скопируйте приватный ключ в /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- Скопируйте сертификат в /etc/ssl/certs/www.hostmauritius.com.pem — файл должен содержать блок сертификата от —–BEGIN CERTIFICATE—– до —–END CERTIFICATE—–:
vi /etc/ssl/certs/www.hostmauritius.com.pem
# вставьте содержимое блока сертификата- Удалите исходный объединённый файл:
rm -f /etc/ssl/private/www.hostmauritius.com.crt- Обновите конфигурацию 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 и т. п.). Общая последовательность:
- Сгенерировать приватный ключ и 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.
Отправить CSR в выбранный CA и следовать их процедурам (включая подтверждение владения доменом).
Получив сертификат от CA, сохраните его в /etc/ssl/certs/www.hostmauritius.com.crt и — при необходимости — объедините цепочку сертификатов (chain) в один файл или используйте SSLCertificateChainFile (если ваш Apache поддерживает директиву).
Обновите 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 и последовательность цепочки сертификатов.
Важное: перед внесением изменений в продуктивную систему сделайте резервную копию конфигурации и протестируйте изменения в стенде.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента