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

Вступление

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

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

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

Если вы хотите получить платный сертификат, см. Https://www.digitalocean.com/community/tutorials/how-to-install-an-ssl-certificate-from-a-commercial-certificate-authority [ этот урок].

Предпосылки

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

  • Одна свежая капля Debian 8

  • Пользователь не-root, который вы можете настроить, выполнив шаги 2 и 3 из thisutorial

  • 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, поэтому сейчас мы активируем веб-сайт по умолчанию.

sudo a2ensite default-ssl

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

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/ -out /etc/apache2/ssl/

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

  • * Common Name *: укажите IP-адрес вашего сервера или имя хоста. Это поле имеет значение, так как ваш сертификат должен соответствовать домену (или IP-адресу) вашего сайта

  • Заполните все остальные поля по своему усмотрению.

Примеры ответов приведены ниже.

InteractiveYou 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]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

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

sudo chmod 600 /etc/apache2/ssl/*

Для получения дополнительной информации о трехзначном коде разрешений см. Учебное руководство по адресу https://www.digitalocean.com/community/tutorials/linux-permissions-basics-and-how-to-use-umask-on-a-vps. [Linux права доступа].

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

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

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

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

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

Найдите раздел, который начинается с + <VirtualHost default: 443> +, и внесите следующие изменения.

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

/ И т.д. / apache2 / сайты с поддержкой / по умолчанию

ServerAdmin webmaster@localhost
ServerName :443
  • Найдите следующие две строки и обновите пути, чтобы они соответствовали расположению сертификата и ключа, сгенерированных нами ранее. Если вы приобрели сертификат или сгенерировали его в другом месте, убедитесь, что пути в нем соответствуют фактическим местоположениям вашего сертификата и ключа:

/ И т.д. / apache2 / сайты с поддержкой / по умолчанию

SSLCertificateFile
SSLCertificateKeyFile

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

/ И т.д. / apache2 / сайты с поддержкой / по умолчанию, SSL

<IfModule mod_ssl.c>
   <VirtualHost _default_:443>
       ServerAdmin webmaster@localhost
       ServerName
       DocumentRoot /var/www/html

       . . .
       SSLEngine on

       . . .

       SSLCertificateFile
       SSLCertificateKeyFile

Сохраните и выйдите из файла.

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

sudo service apache2 reload

Чтобы узнать больше о настройке виртуальных хостов Apache в целом, см. Https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts [ эта статья].

Шаг 5 - Тестирование Apache с SSL

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

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

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

openssl s_client -connect :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 см. Https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs[the статья OpenSSL Essentials].

Related