Поиск по сайту:

Как создать SSL-сертификат на Apache для Debian 8


Введение

В этом руководстве вы узнаете, как установить и настроить сервер Apache, защищенный сертификатом SSL. К концу руководства у вас будет сервер, доступный через HTTPS.

SSL основан на математической сложности разложения большого целого числа на его тоже большие простые множители. Используя это, мы можем зашифровать информацию с помощью пары закрытый-открытый ключ. Центры сертификации могут выдавать SSL-сертификаты, подтверждающие подлинность такого защищенного соединения, и, кроме того, самозаверяющий сертификат может быть создан без поддержки третьих сторон.

В этом руководстве мы создадим самозаверяющий сертификат, выполним необходимые настройки и протестируем результаты. Самоподписанные сертификаты отлично подходят для тестирования, но приведут к ошибкам браузера для ваших пользователей, поэтому их не рекомендуется использовать в производстве.

Если вы хотите вместо этого получить платный сертификат, см. это руководство.

Предпосылки

Чтобы следовать этому руководству, вам понадобятся:

  • Одна свежая капля Debian 8
  • Пользователь sudo без полномочий root, которого можно настроить, выполнив шаги 2 и 3 этого руководства.
  • OpenSSL установлен и обновлен (должен быть установлен по умолчанию)

  1. sudo apt-get update
  2. sudo apt-get upgrade openssl

Вам может понадобиться второй компьютер с установленным OpenSSL для целей тестирования:

  • Еще один дроплет Linux
  • Или локальная система на базе Unix (Mac, Ubuntu, Debian и т. д.)

Шаг 1 — Установите Apache

На этом шаге мы будем использовать встроенный установщик пакетов под названием apt-get. Это значительно упрощает управление пакетами и облегчает чистую установку.

По ссылке, указанной в предварительных требованиях, вы должны были обновить apt-get и установить пакет sudo, поскольку, в отличие от других дистрибутивов Linux, Debian 8 не поставляется с sudo установлен.

Apache будет нашим HTTPS-сервером. Чтобы установить его, выполните следующее:

  1. sudo apt-get install apache2

Шаг 2 — Включите модуль SSL

В этом разделе мы включим SSL на нашем сервере.

Сначала включите модуль Apache SSL.

  1. sudo a2enmod ssl

Веб-сайт Apache по умолчанию поставляется с полезным шаблоном для включения SSL, поэтому сейчас мы активируем веб-сайт по умолчанию.

  1. sudo a2ensite default-ssl

Перезапустите Apache, чтобы эти изменения вступили в силу.

  1. sudo service apache2 reload

Шаг 3 — Создайте самозаверяющий SSL-сертификат

Во-первых, давайте создадим новый каталог, в котором мы можем хранить закрытый ключ и сертификат.

  1. sudo mkdir /etc/apache2/ssl

Далее мы запросим новый сертификат и подпишем его.

Сначала создайте новый сертификат и закрытый ключ для его защиты.

  • Флаг дней указывает, как долго сертификат должен оставаться действительным. В этом примере срок действия сертификата составляет один год.
  • Флаг keyout указывает путь к нашему сгенерированному ключу
  • Флаг out указывает путь к нашему сгенерированному сертификату

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

Вызов этой команды приведет к серии подсказок.

  • Общее имя. Укажите IP-адрес или имя хоста вашего сервера. Это поле имеет значение, так как ваш сертификат должен соответствовать домену (или IP-адресу) вашего веб-сайта.
  • Все остальные поля заполняйте по своему усмотрению.

Примеры ответов показаны красным ниже.

Interactive
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]:DigitalOcean Organizational Unit Name (eg, section) []:SSL Certificate Test Common Name (e.g. server FQDN or YOUR name) []:example.com Email Address []:test@example.com

Установите права доступа к файлу, чтобы защитить свой закрытый ключ и сертификат.

  1. sudo chmod 600 /etc/apache2/ssl/*

Дополнительные сведения о трехзначном коде разрешений см. в руководстве по разрешениям Linux.

Ваш сертификат и закрытый ключ, который его защищает, теперь готовы к использованию Apache.

Шаг 4 — Настройте Apache для использования SSL

В этом разделе мы настроим виртуальный хост Apache по умолчанию для использования ключа и сертификата SSL. После внесения этого изменения наш сервер начнет обслуживать запросы HTTPS вместо HTTP для сайта по умолчанию.

Откройте файл конфигурации сервера с помощью nano или вашего любимого текстового редактора.

  1. sudo nano /etc/apache2/sites-enabled/default-ssl.conf

Найдите раздел, начинающийся с , и внесите следующие изменения.

  • Добавьте строку с именем вашего сервера непосредственно под строкой электронной почты ServerAdmin. Это может быть ваше доменное имя или IP-адрес:

ServerAdmin webmaster@localhost
ServerName example.com:443

  • Найдите следующие две строки и обновите пути, чтобы они соответствовали расположению сертификата и ключа, которые мы создали ранее. Если вы приобрели сертификат или создали его в другом месте, убедитесь, что пути здесь соответствуют фактическому расположению вашего сертификата и ключа:

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

После внесения этих изменений убедитесь, что файл конфигурации вашего виртуального хоста соответствует следующему.

<IfModule mod_ssl.c>
	<VirtualHost _default_:443>
		ServerAdmin webmaster@localhost
		ServerName example.com:443
		DocumentRoot /var/www/html
		
		. . .
		SSLEngine on
		
		. . .
		
		SSLCertificateFile /etc/apache2/ssl/apache.crt
		SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Сохраните и закройте файл.

Перезапустите Apache, чтобы применить изменения.

  1. sudo service apache2 reload

Чтобы узнать больше о настройке виртуальных хостов Apache в целом, см. эту статью.

Шаг 5 — Протестируйте Apache с SSL

В этом разделе мы проверим ваше SSL-соединение из командной строки.

Вы можете запустить этот тест либо (1) из вашей локальной системы на базе Unix, (2) из другой капли или (3) из той же капли. Если вы запустите его из внешней системы, вы подтвердите, что ваш сайт доступен через общедоступный Интернет.

Откройте соединение через порт HTTPS 443.

  1. openssl s_client -connect your_server_ip:443

Прокрутите до середины вывода (после ключа), и вы должны найти следующее:

Output
—- SSL handshake has read 3999 bytes and written 444 bytes —- . . . SSL-Session: . . .

Конечно, цифры переменные, но это уже успех. Поздравляем!

Нажмите CTRL+C, чтобы выйти.

Вы также можете посетить свой сайт в веб-браузере, используя HTTPS в URL-адресе (https://example.com). Ваш браузер предупредит вас, что сертификат является самоподписанным. Вы должны иметь возможность просмотреть сертификат и убедиться, что данные соответствуют тем, которые вы ввели на шаге 3.

Заключение

На этом наше руководство завершается, и у вас остается работающий сервер Apache, надежно настроенный с помощью SSL-сертификата. Дополнительные сведения о работе с OpenSSL см. в статье OpenSSL Essentials.