- Установка SSL-сертификата на Apache
- Активный SSL-сертификат
- Установка SSL
- Настройка HTTPS на Apache
- Проверка установленного SSL
- Настройка Apache + SSL для работы сайта по HTTPS
- Шаг 1. Создание сертификата
- Шаг 2. Установка модуля SSL для Apache
- Шаг 3. Настройка Apache
- Шаг 4. Проверка работоспособности
- Шаг 5. Настройка редиректа
- В конфигурационном файле
- В файле .htaccess
- Установка модуля rewrite
- Apache + NGINX
- Настройка SSL сертификата для Apache
- Установка SSL сертификата для Apache
- Настройка SSL сертификата для Apache
Установка SSL-сертификата на Apache
Настройка HTTPS на Apache и установка SSL необходима, чтобы обеспечить защиту данных пользователей на вашем веб-сайте. В инструкции ниже описана установка SSL-сертификата Comodo, GlobalSign и других, предоставляемых REG.RU, и установка SSL, заказанных в других компаниях.
Активный SSL-сертификат
Перед установкой SSL-сертификата от REG.RU перейдите к списку услуг и убедитесь, что услуга SSL-сертификата активна (значок зелёного цвета):
Установка SSL
После выпуска SSL на ваш контактный e-mail придёт письмо с данными для его установки, это:
Приватный ключ обычно генерируется при заказе SSL и сохраняется на ваш локальный ПК.
Перед установкой SSL на Ubuntu/Debian необходимо включить модуль mod_ssl с помощью команды: a2enmod ssl .
- domain_name.crt — сам сертификат;
- private.key — приватный ключ;
- chain.crt — цепочка сертификатов, которая содержит сначала промежуточный сертификат и следом за ним корневой (с новой строки без пробелов и пустых строк).
- для CentOS: /etc/httpd/conf/httpd.conf;
- для Debian/Ubuntu: /etc/apache2/apache2.conf;
- если вы устанавливаете SSL-сертификат на OpenServer, используйте путь к его корневой папке. В конце файла создайте копию блока «VirtualHost». Укажите для блока порт 443 и добавьте внутри него строки:
SSLEngine on SSLCertificateFile /etc/ssl/domain_name.crt SSLCertificateKeyFile /etc/ssl/private.key SSLCertificateChainFile /etc/ssl/chain.crt
Пример конфигурационного файла:
Готово, вы настроили SSL-сертификат. Теперь настройте переадресацию для вашего сайта.
Настройка HTTPS на Apache
После установки SSL настройте редирект с HTTP на HTTPS. Редирект для Apache настраивается через файл .htaccess.
Чтобы осуществить переадресацию добавьте в конце файла .htaccess следующие строки:
RewriteEngine On RewriteCond % !^443$ RewriteRule .* https://%% [R=301,L]
Подробнее про редирект через .htaccess вы можете узнать в статье: Редирект через .htaccess.
Проверка установленного SSL
Вы можете проверить корректность установки SSL-сертификата по инструкции: Как проверить правильность установки SSL-сертификата?
Если у вас возникли сложности с установкой SSL-сертификата, вы можете написать заявку в службу поддержки, и наши специалисты вам помогут.
Настройка Apache + SSL для работы сайта по HTTPS
Обновлено: 17.02.2022 Опубликовано: 31.01.2017
Используемые термины: Apache, CentOS, Ubuntu, FreeBSD. Инструкция написана для операционных систем на базе UNIX.
Шаг 1. Создание сертификата
Для боевого сервера, сертификат должен быть получен от доверенного центра сертификации — либо локального для компании, либо коммерческого. Или получен бесплатно от Let’s Ecnrypt. Для тестовой среды можно сгенерировать самоподписанный сертификат. Для этого сперва переходим в рабочую папку. а) на Red Hat / CentOS:
openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=test.dmosk.local/CN=test»
* в данном примере созданы открытый и закрытый ключи на 4 года (1461 день); значения параметра subj могут быть любыми в рамках тестирования.
Шаг 2. Установка модуля SSL для Apache
Шаг 3. Настройка Apache
ServerName site.ru
DocumentRoot /var/www/apache/data
SSLEngine on
SSLCertificateFile ssl/cert.pem
SSLCertificateKeyFile ssl/cert.key
#SSLCertificateChainFile ssl/cert.ca-bundle
- ServerName — домен сайта;
- DocumentRoot — расположение файлов сайта в системе;
- SSLCertificateFile и SSLCertificateKeyFile — пути до файлов ключей, которые были сгенерированы на шаге 1;
- SSLCertificateChainFile — при необходимости, путь до цепочки сертификатов (если используем не самоподписанный сертификат).
Проверяем корректность настроек в Apache:
Перечитываем конфигурацию apache:
Шаг 4. Проверка работоспособности
Открываем браузер и переходим на наш сайт, добавив https://. При использовании самоподписного сертификата (как в нашем случае), обозреватель выдаст предупреждение, что передача данных не безопасна. Подтверждаем наше намерение открыть сайт. Если все работает, переходим к шагу 5.
Если сайт не заработал, пробуем найти причину по log-файлу. Как правило, он находится в каталоге /var/log/apache или /var/log/httpd.
Шаг 5. Настройка редиректа
Чтобы все запросы по http автоматически перенаправлялись на https, необходимо настроить перенаправление (redirect). Есть несколько способов это сделать.
В конфигурационном файле
Открываем файл с настройкой виртуальных доменов (как в шаге 3) и дописываем следующее:
* в конкретном примере, мы перенаправили все запросы для сайта site.ru.
** обратите особое внимание, что если у Вас уже есть VirtualHost *:80 для настраиваемого сайта, необходимо его закомментировать или отредактировать.
В файле .htaccess
Установка модуля rewrite
Чтобы перенаправление работало в Apache, необходимо установить модуль rewrite.
а) в CentOS открываем конфигурационный файл и проверяем наличие строки:
LoadModule rewrite_module modules/mod_rewrite.so
* если ее нет, добавляем; если она закомментирована, снимаем комментарий.
systemctl restart apache2
Apache + NGINX
При использовании веб-сервера на базе и Apache и NGINX, как правило, наружу смотрит последний. В таком случае, именно он будет отвечать на http-запросы, и в таком случае нужно настраивать SSL на NGINX.
Как настроить Apache для работы по HTTPS (SSL)
Настройка SSL сертификата для Apache
С помощью SSL сертификата можно зашифровать вашу информацию на сайте сайта для защиты соединений. Так же, он может давать посетителям сайта информацию о идентификации на виртуального сервера.
Как и где можно получить SSL сертификат?
SSL сертификат можно купить или создать самим. Я именно буду использовать самоподписанный сертификат для своего сайта.
В своей статье «Настройка SSL сертификата для Apache», я расскажу как можно установить и настроить SSL сертификат для Apache. На готовых примерах, я покажу как это сделать. Я использую ОС: Debian 8 и CentOS 6/7.
Установка SSL сертификата для Apache
Для начала нужно установить Apache и модуль для него — mod_ssl. Если не знаете как установить apache, то можно ознакомится с материалом тут:
И так, apache уже установлен, но нужно еще установить и модуль для работы с SSL сертификатами.
Для CentOS/RHEL/Fedora, выполните команду:
Для Debian/Ubuntu, выполните команду:
Данный модуль, уже идет с пакетом Apache, по этому, нужно его включить:
После включения SSL, необходимо перезапустить веб-сервер чтобы изменения вступили в силу, для этого, выполните команду:
Создание нового каталога
Т.к в RedHat’s apache устанавливается в /etc/httpd, то для хранения сертификатов, я создам новую папку:
Т.к в Debian’s apache устанавливается в /etc/apache2, то для хранения сертификатов, я создам новую папку:
После чего, можно приступать к генерации сертификата.
Создание самоподписанного сертификата
Сейчас, я создам самоподписанный сертификат который будет работать 365 дней ( 1 год). Все параметры, я опишу немного ниже.
Для CentOS/Fedora/RedHat, выполните команду:
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt
Для Ubuntu/Debian, выполните команду:
# sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/linux-notes.key -out /etc/apache2/ssl/linux-notes.crt
Теперь, рассмотрим что же выполняют некоторые опции:
- openssl: Это утилита для создания и управления сертификатами, ключами и т.д.
- req: Это субкоманда, которая создает подпись X.509 (CSR) для управления сертификатом. X.509 является открытым ключом, с помощью которого, можно создать свой самоподписанный сертификат.
- -x509: Эта опция указывает, что мы хотим сгенерировать файл сертификата с собственной подписью вместо генерации запроса на сертификат.
- -nodes: С этой опцией я создам ключ который будет зашифрован с помощью парольной фразы. Имея защищенный паролем ключ, я должен буду вводить вводить пароль каждый раз при перезапуске службы. Я нажну «ENETR» и оставлю пустой пароль.
- -days 365: Это указывает, что сертификат будет действителен в течение одного года.
- -newkey rsa:2048: Эта опция служит для создания сертификата и нового закрытого ключа. Это необходимо, так как я не создал секретный ключ заранее. RSA: 2048 сгенерирует ключ RSA с 2048 битным шифрованием.
- -keyout: Этот параметр задаст выходной файла для файла секретного ключа, который создается.
- -out: Этот параметр задаст выходной файла для сертификата, который я генерирую.
Входе генерации сертификата, нужно ввести некоторые данные:
Country Name (2 letter code) [XX]:UA State or Province Name (full name) []:nvs Locality Name (eg, city) [Default City]:Lugansk Organization Name (eg, company) [Default Company Ltd]:linux-notes Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:linux-notes.org Email Address []:solo.metal@bigmir.net
Чтобы не вводить это, можно задать нужные параметры при вводе команды, например:
# openssl req -nodes -newkey rsa:2048 -nodes -keyout /etc/apache2/ssl/linux-notes.key -out /etc/apache2/ssl/linux-notes.crt -subj "/C=UA/ST=Lugansk/L=Lugansk/O=linux-notes Ltd./OU=IT/CN=linux-notes.org"
Настройка SSL сертификата для Apache
И так, уже все есть, сертификат создан и можно приступать к настройке. Для этого, открываем виртуальный хост (если нет, можно создать новый):
Конфигурационный файл(ы) в RedHat’s можно создать:
# vim /etc/httpd/conf.d/linux-notes.org.conf
Конфигурационный файл(ы) в Debian’s можно создать:
# vim /etc/apache2/conf.d/linux-notes.org.conf
Мой конфиг выглядит следующим образом:
ServerName linux-notes.local ServerAlias www.linux-notes.local ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog $/error-linux-notes.local.log CustomLog $/access-linux-notes.local.log combined SSLEngine on SSLCertificateFile /etc/ssl/apache.pem SSLCertificateKeyFile /etc/ssl/apache.crt SSLOptions +StdEnvVars SSLOptions +StdEnvVars BrowserMatch "MSIE 5" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE 17" ssl-unclean-shutdown
Конфиг готов и осталось совсем немногое.
Можно создать перенаправление с 80-порта на 443-й, для этого, нужно прописать перенаправление:
ServerName linux-notes.org RewriteEngine On RewriteRule ^(.*)$ https://%$1 [redirect=301] ServerName linux-notes.org DocumentRoot /var/www/linux-notes.org SSLEngine on SSLCertificateFile /etc/ssl/apache.pem SSLCertificateKeyFile /etc/ssl/apache.crt ErrorLog $/error-linux-notes.local.log CustomLog $/access-linux-notes.local.log combined
Настройка вашего брандмауэра
После всех изменений, необходимо так же, пробросить порт (443) для работы веб-сервера (apache), для этого я добавн правило в IPtables:
# iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Перезапуск Apache
Перед перезапуском апача, стоит проверить правильный ли синтаксис, можно сделать это с помощью следующей команды:
Это команда для RPM’s систем, для DEB’s систем найдите сами.
Теперь, когда я настроил SSL в виртуальном хосте, необходимо включить его:
# a2ensite linux-notes.org.conf
и после этого можно перезапускать апач:
Открываем сайт, и смотрим что получилось:
Вот и все, все настроено и готово к использованию. Моя тема «Настройка SSL сертификата для Apache» завершена.