Введение
В этом руководстве рассказывается о настройке сервера Apache, защищенного сертификатом SSL.
К концу руководства вы получите доступ к серверу через HTTPS.
Используя SSL, мы можем шифровать информацию с помощью пары частного-открытого ключа.
Органы сертификации ( удостоверяющий центр ) могут выдавать сертификаты SSL, которые проверяют подлинность такого защищенного соединения, и в том же примечании самоподписанный сертификат может быть создан без сторонней поддержки.
В этом уроке мы создадим самоподписанный сертификат, внесем необходимые конфигурации и протестируем результаты.
Самоподписанные сертификаты отлично подходят для тестирования, но приводят к ошибкам браузера для ваших пользователей, поэтому они не рекомендуются для производства.
Если вы хотите получить платный сертификат, обратитесь с этим к руководству.
Предпосылки
Чтобы следовать этому руководству, вам понадобятся:
1. Debian
2. Пользователь sudo non-root, который вы можете настроить, следуя шагам 2 и 3 этого руководства
3. OpenSSL установлен и обновлен (должен быть установлен по умолчанию)
# sudo apt-get update # sudo apt-get upgrade openssl
Возможно, вам понадобится второй компьютер с установленным OpenSSL для тестирования:
Еще однин Linux
Или локальная система на основе Unix (Mac, Ubuntu, Debian и т. Д.)
Шаг 1 – Установите Apache
На этом этапе мы будем использовать встроенный установщик пакетов, называемый apt-get.
Это упрощает управление пакетами и упрощает установку.
В информации, указанной в предварительных требованиях, вы должны обновить apt-get и установить пакет sudo, так как в отличие от других дистрибутивов Linux, например Debian 8 не поставляется с установленным sudo.
Apache будет нашим сервером HTTPS. Чтобы установить его, выполните следующие действия:
# sudo apt-get install apache2
Шаг 2 – Подключите модуль SSL
В этом разделе мы включим SSL на нашем сервере.
Во-первых, включите модуль Apache SSL.
# sudo a2enmod ssl
Веб-сайт Apache по умолчанию поставляется с шаблоном для включения SSL, поэтому мы активируем веб-сайт default.
# sudo mkdir /etc/apache2/ssl
Перезапустим вэб сервер, чтобы изменения вступили в силу
# sudo service apache2 reload
Шаг 3 – Создайте самоподписанный SSL-сертификат
Сначала давайте создадим новый каталог, в котором мы можем хранить закрытый ключ и сертификат.
# sudo mkdir /etc/apache2/ssl
Затем мы запросим новый сертификат и подпишем его.
Сначала создайте новый сертификат и секретный ключ для его защиты.
- Ключ days указывает, как долго сертификат должен оставаться действительным. В этом примере сертификат будет длиться один год.
- Ключ keyout указывает путь к нашему сгенерированному ключу.
- Ключ out указывает путь к нашему сгенерированному сертификату.
# sudo openssl req -x509 -nodes -days -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key</span> -out /etc/apache2/ssl/apache.crt
Вызов этой команды приведет к серии запросов.
Common Name: укажите IP-адрес вашего сервера или имя хоста.
Это поле имеет значение, так как ваш сертификат должен соответствовать домену (или IP-адресу) для вашего веб-сайта.
Заполните все остальные поля по своему усмотрению.
Примеры ответов приведены ниже.
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]:US State or Province Name (full name) [Some-State]:New York Locality Name (eg, city) []:NYC Organization Name (eg, company) [Internet Widgits Pty Ltd]:Itsecforu Organizational Unit Name (eg, section) []:SSL Certificate Test Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:test@example.com
Установите права доступа к файлам для защиты вашего закрытого ключа и сертификата.
sudo chmod 600 /etc/apache2/ssl/*
Ваш сертификат и закрытый ключ, который его защищает, теперь готовы для использования Apache.
Как защитить вэб-сервер Apache
Шаг 4. Настройка Apache для использования SSL.
В этом разделе мы настроим виртуальный хост Apache по умолчанию для использования ключа SSL и сертификата.
Сделав это изменение, наш сервер начнет обслуживать HTTPS вместо HTTP-запросов для сайта по умолчанию.
Откройте файл конфигурации сервера, используя nano или любой другой текстовый редактор.
sudo nano /etc/apache2/sites-enabled/default-ssl.conf
Найдите раздел, начинающийся с <VirtualHost _default_: 443>, и внесите следующие изменения.
Добавьте строку с именем своего сервера непосредственно под линией электронной почты ServerAdmin. Это может быть ваше доменное имя или IP-адрес:
ServerAdmin webmaster@localhost ServerName example.com:443
Добавим значения ключа и сертификата:
SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key
После внесения этих изменений проверьте, что ваш файл конфигурации виртуального хоста соответствует следующему.
Пример файла default-ssl для Apache
IfModule mod_ssl.c; ;VirtualHost _default_:443; ServerAdmin webmaster@localhost ServerName ;span class="highlight";example.com:443 DocumentRoot /var/www/html . . . SSLEngine on . . . SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Сохраните файл и выполните выход.
Перезапустите Apache, чтобы изменения вступли в силу.
# sudo service apache2 reload
Шаг 5 – Тестирование Apache с помощью SSL
В этом разделе мы проверим ваше SSL-соединение из командной строки.
# openssl s_client -connect адрес_твоего_сервера:443
SSL handshake has read 3999 bytes and written 444 bytes —- . . . SSL-Session: . . .
Чуваки все круто, просьба побольше материала для новичков. Если можно расскажите на пальцах про ssl и tls в своём оригинальном стиле. И ещё есть ли у вас канал в телеграмме?
Бро, канал сырой но есть. Думаю справишься с поиском 🙂
А про ссл тлс на подходе мануал по гуглу с инейным сертификатом. Все руки не доходят
А куда девать строки
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
?
Apache и так работает по SSL с этими строками.
файлы настройки виртуальных хостов
Это путь к самоподписанным сертификатам, которые генерирует специальный пакет, если его установить. Для Debian этот пакет называется ssl-cert. Для тестирования такие сертификаты подойдут, но на боевом сервере желательно реальные сертификаты, о чем написано в комментариях в конфиге (сужу по конфигу nginx).