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

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

Мануал

Введение

 

В этом руководстве рассказывается о настройке сервера 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:

. . .

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. Ghost-in-web

    Чуваки все круто, просьба побольше материала для новичков. Если можно расскажите на пальцах про ssl и tls в своём оригинальном стиле. И ещё есть ли у вас канал в телеграмме?

    Ответить
    1. cryptoparty автор

      Бро, канал сырой но есть. Думаю справишься с поиском 🙂
      А про ссл тлс на подходе мануал по гуглу с инейным сертификатом. Все руки не доходят

      Ответить
  2. NoName

    А куда девать строки
    SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    ?
    Apache и так работает по SSL с этими строками.

    Ответить
    1. cryptoparty автор

      файлы настройки виртуальных хостов

      Ответить
    2. Aleksey

      Это путь к самоподписанным сертификатам, которые генерирует специальный пакет, если его установить. Для Debian этот пакет называется ssl-cert. Для тестирования такие сертификаты подойдут, но на боевом сервере желательно реальные сертификаты, о чем написано в комментариях в конфиге (сужу по конфигу nginx).

      Ответить