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

Что означает красный цвет

В этом руководстве мы будем выделять красным цветом те места, в которых пользователю нужно будет ввести какие-либо данные или внести какие-то изменения. В остальном, предложенные команды можно просто скопировать и вставить в командную строку терминала.

1: создание ssl-сертификата

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

Чтобы создать самоподписанный сертификат и ключ, запустите команду:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt

Команда задаст ряд вопросов. Рассмотрим компоненты команды подробнее:

  • openssl: базовый инструмент командной строки для создания и управления сертификатами, ключами и другими файлами OpenSSL.
  • req: эта подкоманда указывает, что на данном этапе нужно использовать запрос на подпись сертификата X.509 (CSR). X.509 – это стандарт инфраструктуры открытого ключа, которого придерживаются SSL и TLS при управлении ключами и сертификатами. То есть, данная команда позволяет создать новый сертификат X.509.
  • -x509: эта опция вносит поправку в предыдущую субкоманду, сообщая утилите о том, что вместо запроса на подписание сертификата необходимо создать самоподписанный сертификат.
  • -nodes: пропускает опцию защиты сертификата парольной фразой. Нужно, чтобы при запуске сервер Apache имел возможность читать файл без вмешательства пользователя. Установив пароль, придется вводить его после каждой перезагрузки.
  • -days 365: эта опция устанавливает срок действия сертификата (как видите, в данном случае сертификат действителен в течение года).
  • -newkey rsa:2048: эта опция позволяет одновременно создать новый сертификат и новый ключ. Поскольку ключ, необходимый для подписания сертификата, не был создан ранее, нужно создать его вместе с сертификатом. Данная опция создаст ключ RSA на 2048 бит.
  • -keyout: эта опция сообщает OpenSSL, куда поместить сгенерированный файл ключа.
  • -out: сообщает OpenSSL, куда поместить созданный сертификат.

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

Самой важной строкой является Common Name (введите полное доменное имя  сервера (FQDN) или свое имя). Как правило, в эту строку вносят доменное имя, с которым нужно связать сервер. В случае если доменного имени нет, внесите в эту строку IP-адрес сервера. В целом эти поля выглядят примерно так:

1: установка apache

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

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

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

sudo apt-get install apache2

3: настройка брандмауэра

Если вы включили брандмауэр ufw (согласно мануалу по начальной настройке), на данном этапе его нужно настроить для поддержки трафика SSL. К счастью, при установке Apache регистрирует в ufw несколько своих профилей.

Чтобы просмотреть доступные профили, введите:

sudo ufw app listAvailable applications:ApacheApache FullApache SecureOpenSSH

Текущие настройки можно просмотреть при помощи команды:

sudo ufw status

4: активация сертификата ssl

На данный момент SSL-сертификат и веб-сервер готовы. Чтобы применить все изменения и запустить шифрование SSL, перезапустите сервер Apache, это обновит его конфигурации:

sudo apachectl restart

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

4: обновление настроек apache

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

Включите модуль Apache для SSL, mod_ssl, и модуль mod_headers, который необходим для работы сниппета SSL:

sudo a2enmod sslsudo a2enmod headers

Включите подготовленный виртуальный хост:

sudo a2ensite default-ssl

Также нужно включить файл ssl-params.conf:

sudo a2enconf ssl-params

Итак, теперь сайт и все необходимые модули включены. Проверьте синтаксис на наличие ошибок:

sudo apache2ctl configtest

Если ошибок нет, команда вернёт:

AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this messageSyntax OK

Первая строка вывода сообщает, что директива ServerName установлена не глобально. Чтобы устранить это предупреждение, отредактируйте директиву ServerName в /etc/apache2/apache2.conf, указав доменное имя или IP сервера (это опционально, данное предупреждение устранять необязательно).

Если в синтаксисе обнаружены ошибки, исправьте их. Затем перезапустите веб-сервер:

sudo systemctl restart apache2

5: тестирование

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

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

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

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

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

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

6: постоянный редирект

Если шифрование работает должным образом, настройте постоянный редирект вместо временного.

Откройте файл виртуального хоста Apache:

sudo nano /etc/apache2/sites-available/000-default.conf

Найдите ранее добавленную директиву Redirect и установите значение permanent.

Apache ssl: как настроить ssl-сертификат для сервера apache

Защищенное соединение между веб-браузером и сервером – гарантия того, что клиенты могут совершать безопасные транзакции, не опасаясь за кражу своих данных. Идеальный способ создать такое соединение – это воспользоваться связкой из Apache 2 (лидера в области серверного программного обеспечения для Linux) и SSL (протокола безопасной связи). В данной статье мы покажем вам, как защитить соединение между сервером Apache и пользовательским браузером c помощью SSL-сертификата.

Про сертификаты:  Настраиваем Apache для работы по HTTPS (SSL) с сертификатами Let's Encrypt - Записки IT специалиста

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

Установка SSL для Apache

Установка SSL для Apache достаточно проста, в ней можно выделить несколько важных шагов.
Первый шаг – это получение сертификата. Вы всегда можете приобрести один из следующих SSL-сертификатов на сайте ЛидерТелеком:

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

После выпуска сертификата вам понадобится провести настройку Apache. Процесс настройки Apache для SSL следующий:

  1. Сохраняем основной и промежуточный сертификат в отдельную папку на сервере вместе с приватным ключом.
  2. Открываем конфигурационный файл Apache в текстовом редакторе. Конфигурационные файлы Apache обычно хранятся в /etc/httpd/ или /etc/apache2/. Основной конфигурационный файл обычно называется httpd.conf или apache2.conf. В большинстве случаев блоки <VirtualHost> будут находиться в самом низу файла httpd.conf. Иногда блоки <VirtualHost> могут располагаться в отдельных файлах в каталогах /etc/httpd/vhosts.d/ или /etc/httpd/sites/, либо в файле ssl.conf. Найти место, где располагается SSL-конфигурация в дистрибутивах Linux, можно с помощью grep:

grep -i -r “SSLCertificateFile” /etc/httpd/

В данном случае “/etc/httpd/” – это базовая директория в вашей сборке Apache.

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

<VirtualHost 192.168.0.1:443>

DocumentRoot /var/www/leader_site

ServerName www.leader_site.com

SSLEngine on

SSLCertificateFile /etc/ssl/crt/bazov_cert.crt

SSLCertificateKeyFile /etc/ssl/crt/private.key

SSLCertificateChainFile /etc/ssl/crt/promejut_cert.crt

</VirtualHost>

  1. Измените имена файлов и путей, чтобы они соответствовали вашим файлам сертификата:
  • SSLCertificateFile – файл основного сертификата для вашего домена.
  • SSLCertificateKeyFile – файл с ключом, сгенерированный в процессе создания CSR.
  • SSLCertificateChainFile – файл промежуточного сертификата (если он имеется), предоставленный вашим центром сертификации. Если эта директива не работает, попробуйте вместо нее использовать SSLCACertificateFile.
  1. Сохраняем изменения и тестируем конфигурацию Apache. Лучше всего заранее протестировать конфигурацию на наличие различных синтаксических ошибок, иначе Apache просто не запустится. Для тестирования выполняем следующую команду:

apachectl configtest

  1. Делаем рестарт Apache с помощью команды:

apachectl restart

Или останавливаем и вновь запускаем сервер:

apachectl stop

apachectl start

Если вы столкнулись с проблемами при установке SSL-соединения и вы не в силах самостоятельно устранить их, вы всегда можете связаться с нашими специалистами по представленным на сайте контактам. Мы поможем вам настроить SSL на Apache без лишних проблем.

Добавляем промежуточный сертификат, подтверждающий корректность цепочки

mcedit /etc/apache2/ssl/intermediate.crt

Пример промежуточного сертификата:——BEGIN CERTIFICATE—— MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC ——END CERTIFICATE——

4. Что того чтобы работа веб-сервера по защищенному соединению необходимо, что был включен модуль apache2 SSL

Просмотреть включен ли модуль можно выполнив следующую команду:

apache2ctl -M | grep ssl

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

a2enmod ssl

После выполнения команды появляется сообщение «Enabling module ssl».

Как установить ssl сертификат на apache (linux) | облачный виртуальный хостинг cloudlite

Сегодня мы расскажем, как установить купленный SSL сертификат на веб-сервер Apache под управлением Linux: Ubuntu, Debian или CentOS.

Файлы для установки SSL сертификата будут отображены в панели управления cloudlite (меню SSL):

.CA – файл цепочки сертификатов Центра Сертификации (Certificate Authority).

.CRT – файл сертификата для вашего сайта (сайтов).

Загрузить их на веб-сервер можно следующим образом:

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

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

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

Оптимальный вариант загрузки сертификатов на сервер – при помощи опции SCP, встроенной в возможность терминала компьютера:

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

 ~/Downloads

скопируйте сертификаты Вашего сайта и Центра Сертификации на веб-сервер:

scp crt.crt ca.crt user@1.22.33.44:/etc/ssl

Здесь:

scp – команда копирования файлов

mydomain.ru_crt.crt – имя загруженного из панели файла сертификата Вашего веб-сайта

mydomain.ru_ca.crt – имя загруженного из панели файла сертификата Центра Авторизации

user – имя Вашего пользователя для подключения к серверу через ssh (часто используется root)

1.22.33.44 – IP-адрес Вашего веб-сервера

/etc/ssl – директория на удаленном сервере, куда планируется сохранить загружаемые файлы.

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

Скачайте
и установите программу WinSCP.

Запустите WinSCP и в новом окне наберите данные, используемые для подключения к Вашему серверу по SSH.

В левой части окна программы отображены файлы на локальном компьютере, в правой – на удаленном сервере. Отметьте или создайте директорию, куда будете сохранять сертификаты, в правой части окна. Перенесите файлы .CA и .CRT в эту директорию из левой части окна.

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

Про сертификаты:  Мастика Вектор 1025 | Оптима Прайм

Если закрытый ключ .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 и сделайте следующее:

Активируйте опцию SSL веб-сервером Apache:

Для Ubuntu/Debian:

a2enmod ssl

Для CentOS:

yum install mod_ssl

Откройте файл конфигурации сайта, для которого вы устанавливается 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

Добавьте указанные ниже параметры в открытый файл настроек:

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.

Изменения отмечены жирным шрифтом.

Пример 1 (только HTTPS):

<VirtualHost *:443>         # 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 ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/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
</VirtualHost>

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

1.       <VirtualHost *:443>
# 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 ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/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
</VirtualHost>
<VirtualHost *:80>
# 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 ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/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
</VirtualHost>

Теперь перезапустите сервис apache:

Для Ubuntu/Debian:

/etc/init.d/apache2 restart

Для CentOS:

apachectl restart

Если на Вашем сервере настроен файрвол iptables, разрешите входящие подключения по протоколу https (порт 443) для Вашего файрвола. Воспользуйтесь документацией к Вашей ОС, т.к. в разных дистрибутивах Linux работа с iptables реализуется различным образом. Например:

Для Ubuntu 16.04:

ufw allow 443/tcp

Для Debian:

Про сертификаты:  Что такое Animal Friendly (забота о животных в руках каждого человека)

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

Для CentOS:

iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

После установки SSL сертификата на веб-сервер Apache проверьте настройки. Откройте Ваш-веб сайт в браузере по протоколу HTTPS (например, https://mydomain.ru ) – при правильной установке в адресной строке браузера Вы увидите иконку замка, а при клике на нее отразится информация о купленном вами SSL сертификате.

Местонахождение ключа и сертификата

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

Создайте новый сниппет Apache в каталоге etc/apache2/conf-available.

Рекомендуется указать в названии файла его назначение (к примеру, ssl-params.conf):

sudo nano /etc/apache2/conf-available/ssl-params.conf

Для безопасной настройки SSL обратимся к рекомендациям Remy van Elst на сайте Cipherli.st. Этот сайт предназначен для распространения простых и надёжных параметров шифрования для популярного программного обеспечения.

Примечание: Данный список настроек подходит для более новых клиентов. Чтобы получить настройки для других клиентов, перейдите по ссылке Yes, give me a ciphersuite that works with legacy/old software.

Скопируйте все предложенные параметры.

Единственное небольшое изменение, которое нужно внести в эти настройки – отключить заголовок Strict-Transport-Security (HSTS).

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

Настройка

Для того, чтобы сгенерировать сертификат, вам необходимо обладать root-правами на вашем сервере (в системе 1cloud такие права пользователи получают по-умолчанию). Кроме того, необходимо установить веб-сервер Apache (о том, как это сделать написано в нашей статье «Как установить LAMP-стек (Linux, Apache, MySqL, PHP) на сервере с Ubuntu»).

Если Apache еще не установлен на сервере, это можно сделать с помощью специальной команды:

sudo apt-get install apache2

Настройка ssl сертификата для apache

И так, уже все есть, сертификат создан и можно приступать к настройке. Для этого, открываем виртуальный хост (если нет, можно создать новый):

Конфигурационный  файл(ы) в RedHat’s можно создать:

Настройка стандартного виртуального хоста apache

Теперь нужно настроить стандартный виртуальный хост Apache (/etc/apache2/sites-available/default-ssl.conf) для поддержки SSL.

Примечание: Если вы используете другой виртуальный хост, укажите его имя вместо /etc/apache2/sites-available/default-ssl.conf.

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

sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak

Откройте хост в текстовом редакторе:

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

На данный момент файл виртуального хоста выглядит примерно так (закомментированные строки опущены для удобства):

Немного о ssl-сертификатах

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

Помогла статья? подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Создание ключа и ssl-сертификата

Использование самоподписанных сертификатов хоть и защищает от пассивного прослушивания, тем не менее не гарантирует клиентам, что сервер является именно тем сервером, который им нужен. Преймуществом самоподписанных сертификатов является их бесплатность. Сертификат, подписанных компанией-сертификатором (Certificate authority) стоит денег.

Для создания ключа и сертификата вводим команду:

openssl req -new-x509-days30-keyout server.key -out server.pem

На вопрос «Enter PEM pass phrase:» отвечаем паролем, подтверждаем и запоминаем.
На все последующие вопросы отвечаем произвольно, можно просто щелкать по Enter соглашаясь с предложенными вариантами, только на вопрос «Common Name (eg, YOUR name) []:» отвечаем именем сайта, для которого создаем сертификат, например www.example.com.

После ответа на все вопросы в директории должны появиться два новых файла – server.pem и server.crt (ключ и сертификат, соответственно).

Чтобы использовать сгенерированный ключ нужно знать пароль введенный нами, и Apache будет спрашивать его у нас при загрузке, а к чему нам лишние вопросы от демонов? 🙂 Поэтому снимаем пароль с ключа:

cp server.key{,.orig}
openssl rsa -in server.key.orig -out server.key
rm server.key.orig

Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору:

sudocp server.pem /etc/ssl/certs/sudocp server.key /etc/ssl/private/sudochmod 0600 /etc/ssl/private/server.key

Требования

Для выполнения данного руководства необходимы следующие инструменты:

  1. Браузер Google Chrome
  2. Веб-сервер Apache, предварительно установленный на виртуальный выделенный сервер
  3. Доменное имя
  4. Доступ к одному из почтовых адресов:

postmaster@duable.cohostmaster@duable.cowebmaster@duable.co

Установка mod_ssl в apache

В качестве сервера у нас выступает apache на CentOS, хотя это не принципиально, настройка на других linux дистрибутивах будет идентичной. Рабочим web сервером является apache. Использовать ssl протокол в apache мы будем с помощью мода mod_ssl. Первым делом проверим, установлен ли он:

# rpm -qa | grep mod_ssl

Если нет, то устанавливаем:

# yum -y install mod_ssl

Установка ssl сертификата для apache

Для начала нужно установить Apache и модуль для него — mod_ssl. Если не знаете как установить apache, то можно ознакомится с материалом тут:

Установка Apache, PHP с suPHP на CentOS/RedHat/Fedora

Установка Apache mpm-itk на Unix/Linux

Шаг #2: создание новой директории

Нужно создать новую директорию (то есть папку), где будут хранится ключ сервера и сам сертификат:

sudo mkdir /etc/apache2/ssl

Шаг #5: активация нового виртуального хоста

Прежде чем активировать сайт на 443 порте, нужно включить соответствующий виртуальный хост:

sudo a2ensite default-ssl

После этого нужно перезагрузить Apache:

sudo service apache2 reload

Заключение

Теперь сервер Apache может шифровать передаваемые данные, что защитит взаимодействие сервера с клиентами и предотвратит перехват трафика злоумышленниками.

Конечно, при разработке сайта рекомендуется подписать SSL-сертификат в надежном центре сертификации, что позволит избежать появления отпугивающих предупреждений. Рекомендуем вам обратиться к надежному центру сертификации, например, к Let’s Encrypt.

Оцените статью
Мой сертификат
Добавить комментарий