- 1: создание ssl-сертификата
- 1: установка apache
- 2: настройка apache для поддержки ssl
- 3: настройка брандмауэра
- 4: обновление настроек apache
- 5: тестирование
- 5: тестирование настройки
- 6: постоянный редирект
- Местонахождение ключа и сертификата
- Настройка стандартного виртуального хоста apache
- Требования
- Заключение
1: создание ssl-сертификата
Для работы TLS/SSL использует комбинацию открытого сертификата и закрытого ключа. Закрытый ключ хранится на сервере и не разглашается. SSL-сертификат используется открыто и доступен всем пользователям, запрашивающим контент.
Чтобы создать самоподписанный сертификат и ключ, запустите команду:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
Команда задаст ряд вопросов. Рассмотрим компоненты команды подробнее:
- openssl: базовый инструмент командной строки для создания и управления сертификатами, ключами и другими файлами OpenSSL.
- req: эта подкоманда указывает, что на данном этапе нужно использовать запрос на подпись сертификата X.509 (CSR). X.509 – это стандарт инфраструктуры открытого ключа, которого придерживаются SSL и TLS при управлении ключами и сертификатами. То есть, данная команда позволяет создать новый сертификат X.509.
- -x509: эта опция вносит поправку в предыдущую субкоманду, сообщая утилите о том, что вместо запроса на подписание сертификата необходимо создать самоподписанный сертификат.
- -nodes: пропускает опцию защиты сертификата парольной фразой. Нужно, чтобы при запуске сервер Apache имел возможность читать файл без вмешательства пользователя. Установив пароль, придется вводить его после каждой перезагрузки.
- -days 365: эта опция устанавливает срок действия сертификата (как видите, в данном случае сертификат действителен в течение года).
- -newkey rsa:2048: эта опция позволяет одновременно создать новый сертификат и новый ключ. Поскольку ключ, необходимый для подписания сертификата, не был создан ранее, нужно создать его вместе с сертификатом. Данная опция создаст ключ RSA на 2048 бит.
- -keyout: эта опция сообщает OpenSSL, куда поместить сгенерированный файл ключа.
- -out: сообщает OpenSSL, куда поместить созданный сертификат.
Как уже было сказано, все эти опции сгенерируют ключ и сертификат. Заполните появившиеся поля данными о сервере, которые будут отображаться в сертификате.
Самой важной строкой является Common Name (введите полное доменное имя сервера (FQDN) или свое имя). Как правило, в эту строку вносят доменное имя, с которым нужно связать сервер. В случае если доменного имени нет, внесите в эту строку IP-адрес сервера. В целом эти поля выглядят примерно так:
1: установка apache
Установить Apache можно при помощи встроенного менеджера пакетов apt-get, который делает управление пакетами и процесс установки значительно проще.
В отличие от остальных дистрибутивов Linux, Debian 8 поставляется без предустановленной утилиты sudo. В ранее упомянутом руководстве можно найти инструкции по обновлению apt-get и установке пакета sudo.
Чтобы установить Apache, запустите:
sudo apt-get install apache2
2: настройка apache для поддержки ssl
Итак, на данном этапе файлы ключа и сертификата созданы и хранятся в каталоге /etc/ssl. Теперь нужно отредактировать настройки Apache:
- Создать сниппет конфигураций, указывающий место хранения файлов SSL-сертификата и ключа.
- Настроить виртуальный хост Apache для поддержки сертификата SSL.
- Настроить незашифрованные виртуальные хосты для автоматической переадресации запросов на зашифрованный хост (опционально).
3: настройка брандмауэра
Если вы включили брандмауэр ufw (согласно руководству по начальной настройке), на данном этапе его нужно настроить для поддержки трафика SSL. К счастью, при установке Apache регистрирует в ufw несколько своих профилей.
Чтобы просмотреть доступные профили, введите:
sudo ufw app listAvailable applications:ApacheApache FullApache SecureOpenSSH
Текущие настройки можно просмотреть при помощи команды:
sudo ufw status
4: обновление настроек apache
Итак, теперь настройки веб-сервера и брандмауэра откорректированы. Можно включить SSL и настроенный для поддержки сертификата виртуальный хост, а затем перезапустить веб-сервер.
Включите модуль Apache для SSL, mod_ssl, и модуль mod_headers, который необходим для работы сниппета SSL:
sudo a2enmod sslsudo a2enmod headers
Включите подготовленный виртуальный хост:
sudo a2ensite default-ssl
Итак, теперь сайт и все необходимые модули включены. Проверьте синтаксис на наличие ошибок:
sudo apache2ctl configtest
Если ошибок нет, команда вернёт:
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this messageSyntax OK
Первая строка вывода сообщает, что директива ServerName установлена не глобально. Чтобы устранить это предупреждение, отредактируйте директиву ServerName в /etc/apache2/apache2.conf, указав доменное имя или IP сервера (это опционально, данное предупреждение устранять необязательно).
Если в синтаксисе обнаружены ошибки, исправьте их. Затем перезапустите веб-сервер:
sudo systemctl restart apache2
5: тестирование
Теперь нужно убедиться, что трафик между сервером и клиентом шифруется. Откройте в браузере следующую ссылку:
5: тестирование настройки
В завершение нужно протестировать SSL-соединение.
Проверку можно выполнить при помощи:
- Локальной Unix-подобной системы
- Другого сервера
- Этого же сервера
Рекомендуется проверить настройку с помощью внешней системы, поскольку это подтверждает то, что сайт находится в открытом доступе.
6: постоянный редирект
Если все настройки сервера работают должным образом, настройте постоянный редирект вместо временного.
Откройте файл виртуального хоста Apache:
sudo nano /etc/apache2/sites-available/000-default.conf
Найдите ранее добавленную директиву Redirect и установите значение permanent.
Местонахождение ключа и сертификата
Для начала нужно создать сниппет конфигураций Apache, определяющий некоторые параметры SSL; здесь можно выбрать метод шифрования SSL и включить дополнительные функции безопасности. Заданные здесь параметры в дальнейшем могут быть использованы любыми виртуальными хостами для поддержки SSL.
Создайте новый сниппет Apache в каталоге etc/apache2/conf-available.
Рекомендуется указать в названии файла его назначение (к примеру, ssl-params.conf):
sudo nano /etc/apache2/conf-available/ssl-params.conf
Для безопасной настройки SSL обратимся к рекомендациям Remy van Elst на сайте Cipherli.st. Этот сайт предназначен для распространения простых и надёжных параметров шифрования для популярного программного обеспечения. Больше параметров для Apache можно найти здесь.
Примечание: Данный список настроек подходит для более новых клиентов. Чтобы получить настройки для других клиентов, перейдите по ссылке Yes, give me a ciphersuite that works with legacy / old software.
Скопируйте все предложенные параметры.
Также нужно добавить параметр SSLOpenSSLConfCmd DHParameters, чтобы настроить поддержку ключей Диффи-Хеллмана.
Настройка стандартного виртуального хоста apache
Теперь нужно настроить стандартный виртуальный хост Apache (/etc/apache2/sites-available/default-ssl.conf) для поддержки SSL.
Примечание: Если вы используете другой виртуальный хост, укажите его имя вместо /etc/apache2/sites-available/default-ssl.conf.
Прежде чем приступить к настройке, создайте резервную копию файла хоста.
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak
Откройте хост в текстовом редакторе:
sudo nano /etc/apache2/sites-available/default-ssl.conf
На данный момент файл виртуального хоста выглядит примерно так (закомментированные строки опущены для удобства):
Требования
Для выполнения инструкций понадобится:
sudo apt-get updatesudo apt-get upgrade openssl
Для тестирования может понадобиться второй компьютер:
- OpenSSL;
- Еще один сервер Linux или Unix-подобная локальная система (Mac, Ubuntu, Debian и т.д.).
Заключение
Теперь сервер Apache может шифровать передаваемые данные, что защитит взаимодействие сервера с клиентами и предотвратит перехват трафика злоумышленниками.
Конечно, при разработке сайта рекомендуется подписать SSL-сертификат в надежном центре сертификации, что позволит избежать появления отпугивающих предупреждений.
Tags:
