Меню Рубрики

Установка ssl на сервер debian

Предложение от 8host.com

Создание SSL-сертификата на Apache в Debian 8

Данное руководство продемонстрирует создание SSL-сертификата в Debian 8 и настройку веб-сервера Apache для поддержки этого сертификата. В результате сервер будет поддерживать соединения HTTPS.

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

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

Требования

Для выполнения инструкций понадобится:

  • Свежий сервер Debian 8;
  • Не-рутовый пользователь с правами sudo (подробности можно найти здесь);
  • Предварительно установленный пакет OpenSSL; как правило, этот пакет установлен по умолчанию, потому его нужно просто обновить:

sudo apt-get update
sudo apt-get upgrade openssl

Для тестирования может понадобиться второй компьютер:

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

1: Установка Apache

Установить Apache можно при помощи встроенного менеджера пакетов apt-get, который делает управление пакетами и процесс установки значительно проще.

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

Чтобы установить Apache, запустите:

sudo apt-get install apache2

2: Включение модуля SSL

Теперь нужно настроить веб-сервер для поддержки SSL.

Для этого нужно включить модуль Apache:

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

Перезапустите Apache, чтобы обновит настройки:

sudo service apache2 reload

3: Создание самоподписанного SSL-сертификата

Сначала нужно создать отдельный каталог для хранения закрытого ключа и сертификата.

Затем нужно запросить новый сертификат и подписать его.

Сгенерируйте сертификат и закрытый ключ при помощи нижеприведённой команды.

  • Флаг days задаёт срок действия сертификата (в данном случае сертификат будет действителен в течение 365 дней);
  • Флаг keyout указывает путь к ключу;
  • Флаг out задаёт путь к сертификату.

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

После запуска этой команды на экране появится ряд вопросов. В поле Common Name укажите 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 W >MyCompany
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/*

Примечание: Более подробную информацию о правах можно найти в руководстве «Основы привилегий Linux».

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

4: Настройка Apache для поддержки SSL

Теперь нужно настроить стандартный виртуальный хост Apache, который будет использовать SSL-сертификат и ключ. Это позволит серверу обрабатывать запросы HTTPS вместо HTTP (для стандартного сайта).

Откройте конфигурационный файл сервера при помощи любого удобного текстового редактора:

Читайте также:  Установка контура на компьютере

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

Найдите раздел, который начинается со строки и внесите в него следующие изменения:

  • Добавьте строку Server Name под строкой ServerAdmin, в ней укажите домен или IP сервера:

ServerAdmin webmaster@localhost
ServerName example.com :443

  • Найдите следующие две строки и укажите в них правильные пути к сертификату и ключу:

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

В результате конфигурационный файл должен иметь следующий вид:

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.

sudo service apache2 reload

Примечание: Более подробную информацию о виртуальных хостах можно найти в этом руководстве.

5: Тестирование настройки

В завершение нужно протестировать SSL-соединение.

Проверку можно выполнить при помощи:

  • Локальной Unix-подобной системы
  • Другого сервера
  • Этого же сервера

Рекомендуется проверить настройку с помощью внешней системы, поскольку это подтверждает то, что сайт находится в открытом доступе.

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

openssl s_client -connect your_server_ip :443

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

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

Конечно, числа могут отличаться, но эта строка говорит о том, что SSL-сертификат успешно установлен.

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

Также можно посетить сайт в браузере, используя в ссылке HTTPS (например, https://example.com). Браузер выведет предупреждение о том, что сертификату нельзя доверять (это нормальная реакция, поскольку он не был заверен надёжным центром сертификации). Просмотрите сертификат и убедитесь, что все данные соответствуют информации, указанной в разделе 3.

Теперь сервер Apache защищён при помощи сертификата SSL.

источник

Установка SSL-сертификата на Apache (Linux)

После генерации CSR-запроса и заказа SSL-сертификата через панель управления 1cloud необходимо установить полученные сертификаты .CRT и .CA на сервер. Эта пошаговая инструкция поможет вам установить приобретенный SSL-сертификат на веб-сервер Apache под управлением Linux: Ubuntu, Debian или CentOS.

После получения SSL-сертификата файлы для его установки появятся в панели управления 1cloud (меню SSL):
.CA — файл цепочки сертификатов Центра Сертификации (Certificate Authority).
.CRT — файл сертификата для вашего сайта (сайтов).

Загрузка необходимых файлов на веб-сервер

Лучшие цены на SSL-сертификаты (от 550 руб.)

  • Все доверенные центры сертификации
  • Большой выбор сертификатов
  • Пошаговые инструкции по выпуску и установке

Прежде всего, необходимо загрузить представленные в панели 1cloud файлы .ca и .crt на веб-сервер. Если ваш сервер не имеет графического окружения рабочего стола, вы можете загрузить эти файлы на другой компьютер, а затем перенести их одним из приведенных ниже способов.

Примечание: подразумевается, что необходимая для работы пара закрытый/открытый ключ была сгенерирована на том же веб-сервере, на который вы будете переносить приобретенный сертификат. Если вы создавали ключи на другой машине, вам необходимо также перенести файл закрытого ключа .key на ваш веб-сервер по аналогии с описанной ниже процедурой копирования файлов сертификатов.

Перенос сертификатов с компьютера Linux/Mac OS:

Самый простой способ загрузки сертификатов на сервер — опция SCP, встроенная в возможность терминала вашего компьютера:

  1. Загрузите файлы .CA и .CRT из панели управления 1cloud на локальный компьютер.
  2. Откройте терминал и перейдите в папку, в которую вы сохранили сертификаты (напр., Downloads):
    cd

/Downloads
Скопируйте сертификаты вашего сайта и Центра Сертификации на веб-сервер:
scp crt.crt ca.crt user@1.22.33.444:/etc/ssl
Где:
scp — команда копирования файлов
mydomain.ru_crt.crt — имя загруженного из панели файла сертификата вашего веб-сайта
mydomain.ru_ca.crt — имя загруженного из панели файла сертификата Центра Авторизации
user — имя вашего пользователя для подключения к серверу через ssh (часто используется root)
1.22.33.444 — IP-адрес вашего веб-сервера
/etc/ssl — директория на удаленном сервере, в которую в хотите сохранить загружаемые файлы.

Перенос сертификатов с компьютера Windows:

  1. Установите программу WinSCP. Скачать ее можно здесь.
  2. Запустите WinSCP. В открывшемся окне введите данные, которые вы используете для подключени я к вашему серверу по SSH.
    В левой части окна программы отображаются файлы на локальном компьютере, в правой — на подключенном удаленном сервере. Выберите или создайте директорию, в которую вы хотите сохранить сертификаты, в правой части окна. Перетащите файлы .CA и .CRT в эту директорию из левой части окна.

Примечение: для удобства в дальнейшем рекомендуем перенести файл закрытого ключа (.key) в ту же директорию, в которую вы скопировали файлы сертификатов. Вы можете не делать этого, но таком случае запомните путь до этого файла и в дальнейшем укажите его в файле конфигурации Apache вместо пути, приведеленного в нашем примере.

Если закрытый ключ .key был сгенерирован непосредственно на сервере, то для его копирования в другую директорию вы можете использовать команду:
cp /home/root/private.key / etc /ssl/private.key
Где:
cp — команда копирования
/home/root/ — путь до файла ключа
private.key — имя файла ключа
/etc/ssl/private.key — путь, по которому необходимо скопировать файл ключа

Удалить файл ключа из старого расположения вы можете с помощью команды:
rm /home/root/private.key
(синтаксис команды аналогичен предыдущему примеру)

Настройка веб-сервера Apache на использование SSL-сертификата

После копирования файлов сертификата сайта и Центра Сертификации необходимо отредактировать параметры вашего веб-сервера Apache. Для этого подключитесь к вашему серверу по SSH от имени пользователя root и выполните следующие операции:

  1. Активируйте использование опции SSL веб-сервером Apache:
    Ubuntu/Debian:
    a2enmod ssl
    CentOS:
    yum install mod_ssl
  2. Откройте файл конфигурации сайта, для которого вы хотите установить SSL-сертификат.
    Например, если параметры веб-сайта хранятся в файле /etc/apache2/sites-enabled/000-default.conf:
    nano /etc/apache2/sites-enabled/000-default.conf
    Примечание: На Ubuntu/Debian файлы параметров сайтов Apache как правило находятся в директории /etc/apache2/sites-enabled/ . На CentOS стандартное расположение — /etc/httpd/conf.d/
    Для поиска нужной конфигурации вы можете использовать команду ls /директория/конфигураций (напр. ls /etc/apache2/sites-enabled), которая отображает полный список файлов в указанной директории.
    Затем с помощью команды nano вы можете открыть определенный файл (напр. nano /etc/apache2/sites-enabled/000-default.conf). Проверить, что открытый файл действительно является конфигурацией вашего сайта можно, найдя в нем строку ServerName. Ее значение должно соответствовать домену, для которого вы устанавливаете SSL-сертификат (напр. www.mydomain.ru)
    Примечание для CentOS:
    если редактор nano не установлен на вашем сервере, вы можете установить его с помощью команды yum install nano
  3. Добавьте приведенные ниже параметры в открытый файл конфигурации:
    SSLEngine on
    SSLCertificateFile /etc/ssl/mydomain.ru_crt.crt
    SSLCertificateChainFile /etc/ssl/mydomain.ru_ca.crt
    SSLCertificateKeyFile /etc/ssl/mydomain.ru_key.key
    Где:
    /etc/ssl/mydomain.ru_crt.crt — путь до файла сертификата вашего сайта
    /etc/ssl/mydomain.ru_ca.crt — путь до файла цепочки сертификатов Центра Сертификации (CA)
    /etc/ssl/mydomain.ru_key.key — путь к файлу вашего закрытого ключа

Примечание: если вы хотите, чтобы после установки SSL-сертификата ваш сайт был доступен только по безопасному протоколу https (порт 443), отредактируйте файл его конфигурации по аналогии с приведенным ниже Примером 1. Если же вы хотите, чтобы сайт также оставался по-прежнему доступен по незащищенному протоколу http (порт 80), воспользуйтесь Примером 2.
Вносимые изменения выделены жирным шрифтом.

# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request’s Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.mydomain.ru
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Available loglevels: trace8, . trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog $/error.log
CustomLog $/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with «a2disconf».
#Include conf-available/serve-cgi-bin.conf
SSLEngine on
SSLCertificateFile /etc/ssl/mydomain.ru_crt.crt
SSLCertificateChainFile /etc/ssl/mydomain.ru_ca.crt
SSLCertificateKeyFile /etc/ssl/mydomain.ru_key.key

Пример 2 (HTTPS + HTTP):

источник

Включаем SSL в Apache (Debian или Ubuntu)

Прежде всего, нам необходимо, чтобы SSL была установлена и Apache имел установленный мод SSL. Проверить — установлен ли OpenSSL можно командой:

Если команда вернула пустоту — идем ставить OpenSSL — без него работать не будет.

Установка OpenSSL

mod_ssl в Apache

Нам необходимо так-же, чтобы в Apache был включен mod_ssl. Проверяем это:

Если команда вернула пустоту — нам нужно включить этот мод. Для этого выполняем:

Тут предполагается, что mod_ssl установлен в Apache. Так, с сервером LAMP он идет сразу, если же Apache собирался Вами из исходников и мода ssl нет, то придется его собрать отдельно.

Генерация сертификатов.

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

Теперь приступим к созданию сертификатов.

Здесь нас запросят ввести ключевую фразу, используемую в дальнейшем для авторизации ключа сервера. Внимательно вводите эту фразу — она нам понадобится во всех следующих шагах, в том числе ее нужно будет указать в конфиге Apache!

Заметка. Если процесс зависает и ничего не делает — прерываем его Ctrl+C и вместо «/dev/random» используем «/dev/urandom».

# openssl rsa -in server.key -out server.pem
Enter pass phrase for server.key:
writing RSA key

# openssl req -new -key server.key -out mysite.csr

Здесь нас запросят ввести некоторое количество данных, помещаемых в сертификат. Вводите то, что считаете нужным, кроме строчки Common name. В этой строчке необходимо указать FQDN адрес сайта, с которого будет выдаваться сертификат (например, mysite.ru). Если это не сделать, то браузеры будут считать это ошибкой и помечать, что сертификат имеет неправильное Common name. В другой стороны — самоподписанный (как в нашем случае) сертификат они все равно не любят, т. ч. одной ошибкой больше, одной меньше — Ваше дело, особенно если Вы хотите использовать один сертификат на несколько сайтов сразу.

Вместо mysite.csr можно использовать название, похожее на название сайта — это уже файл, относящийся к сайту.

Extra-атрибуты можно не указывать совсем.

Цифра 3650 — это количество дней, которые сертификат будет действителен. Стандартное значение — 365 — нередко слишком мало из-за того, что каждый год сертификаты обновлять администраторы забывают.

Здесь следует отметить следующие моменты:

а) Файлы server.* — это файлы, на основе которых будут образованы все остальные сертификаты сайтов. Их генерировали мы один раз.

б) Для другого сайта (второго, третьего и т.д.) файлы server.key и server.pem генерировать не надо!

в) Ключ-фразу придется использовать эту же для генерации остальных сертификатов (для других сайтов).

Настройка Apache

Сертификаты у нас готовы, самое время настроить Apache для поддержки SSL/HTTPS.

1) Идем в /etc/apache2/mods-enabled и редактируем файл ssl.conf

2) Открываем на редактирование файл /etc/apache2/ports.conf

В блоке » » перед закрытием блока, после строчки «Listen 443» добавляем строчку «NameVirtualHost *:443»:

3) Редактируем файл /etc/apache2/sites-available/default-ssl и меняем в нем » » на » «:

4) Создаем новый файл /etc/apache2/sslpwd.sh со следующим содержанием:

где вместо «ваша_ключевая_фраза» укажите ту фразу, которую Вы использовали при создании сертификатов, тоже в кавычках (так надежнее). И дайте права запуска этому файлу:

5) Теперь нам надо настроить сам сайт, чтобы он мог работать с SSL. Для этого открываем конфиг нашего сайта из /etc/apache2/sites-enabled/mysite.ru

Вместо mysite.ru — имя файла конфига Вашего сайта.

Для того, чтобы сайт был доступен по SSL нужно завести отдельный конфиг для 443-го порта. При этом на одинаковое имя сервера (ServerName) может быть как HTTP, так и HTTPS конфиги. Ниже приведен пример конфига сайта, который как раз может быть доступен как по HTTPS, так и по HTTP.

источник

Добавить комментарий