Apache ssl: настройка https на веб-сервере Apache
Настройка HTTPS на Apache и установка SSL необходима, чтобы обеспечить защиту данных пользователей на вашем веб-сайте. В инструкции ниже описана установка SSL-сертификата Comodo, GlobalSign и других, предоставляемых REG.RU, и установка SSL, заказанных в других компаниях.
Активный SSL-сертификат
Перед установкой SSL-сертификата от REG.RU перейдите к списку услуг и убедитесь, что услуга SSL-сертификата активна (значок зелёного цвета):
SSL в личном кабинете
Если услуга SSL не активна, активируйте SSL-сертификат.
Установка SSL
После выпуска SSL на ваш контактный e-mail придёт письмо с данными для его установки, это:
- сам сертификат;
- корневой сертификат;
- промежуточный сертификат.
Приватный ключ обычно генерируется при заказе SSL и сохраняется на ваш локальный ПК.
Установка на Ubuntu/Debian
Перед установкой SSL на Ubuntu/Debian необходимо включить модуль mod_ssl с помощью команды:
.
Чтобы установить SSL:
- 1.
Создайте на вашем сервере в каталоге /etc/ssl/ файлы domain_name.crt, private.key и chain.crt со следующим содержимым:
- domain_name.crt — сам сертификат;
- private.key — приватный ключ;
- chain.crt — цепочка сертификатов, которая содержит сначала промежуточный сертификат и следом за ним корневой (с новой строки без пробелов и пустых строк).
2.Откройте файл конфигурации Apache. В зависимости от особенностей вашего сервера этот файл находится по одному из следующих адресов:
- для 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
Пример конфигурационного файла:
Пример конфига Apache
- 3.
Проверьте конфигурацию Apache до перезапуска командой:
apachectl configtest
- 4. Перезапустите Apache.
Готово, вы настроили SSL-сертификат. Теперь настройте переадресацию для вашего сайта.
Настройка HTTPS на Apache
После установки SSL настройте редирект с HTTP на HTTPS. Редирект для Apache настраивается через файл .htaccess.
Чтобы осуществить переадресацию добавьте в конце файла . 443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Подробнее про редирект через .htaccess вы можете узнать в статье: Редирект через .htaccess.
Также по инструкции вы можете настроить редирект с помощью Nginx на VPS.
Проверка установленного SSL
Вы можете проверить корректность установки SSL-сертификата по инструкции: Как проверить правильность установки SSL-сертификата?
Если у вас возникли сложности с установкой SSL-сертификата, вы можете написать заявку в службу поддержки, и наши специалисты вам помогут.
122 раза уже помогла
Apache SSL: как настроить SSL-сертификат для сервера Apache
Защищенное соединение между веб-браузером и сервером – гарантия того, что клиенты могут совершать безопасные транзакции, не опасаясь за кражу своих данных. Идеальный способ создать такое соединение – это воспользоваться связкой из Apache 2 (лидера в области серверного программного обеспечения для Linux) и SSL (протокола безопасной связи). В данной статье мы покажем вам, как защитить соединение между сервером Apache и пользовательским браузером c помощью SSL-сертификата.
SSL – это протокол для безопасной передачи кодированных данных между веб-браузером и веб-сервером. В большинстве случаев процесс аутентификации происходит только на стороне сервера, т.е. клиент видит, что это именно тот сервер, который был заявлен изначально. Как только соединение будет установлено, оно автоматически станет защищенным, поскольку доступ к ключевому материалу будет только у клиента и сервера, и ни у кого другого. Обычно аутентификация клиента в таком случае не требуется, однако в некоторых случаях она все же реализуется при помощи клиентских SSL-сертификатов.
Установка SSL для Apache
Установка SSL для Apache достаточно проста, в ней можно выделить несколько важных шагов. Первый шаг – это получение сертификата. Вы всегда можете приобрести один из следующих SSL-сертификатов на сайте ЛидерТелеком:
- EssentialSSL – один из самых недорогих SSL-сертификатов, который предполагает только проверку по домену.
- InstantSSL – SSL-сертификат, подтверждающий существование той или иной организации.
- EV SSL – SSL-сертификат с расширенной проверкой организации, позволяющий добиться зеленой строки в браузере и максимального доверия со стороны клиентов, а также обеспечивает высочайшую надежность.
Вне зависимости от того, какой сертификат вы выбрали для себя, вам понадобится пройти следующие шаги для его установки на сервер Apache.
После выпуска сертификата вам понадобится провести настройку Apache. Процесс настройки Apache для SSL следующий:
- Сохраняем основной и промежуточный сертификат в отдельную папку на сервере вместе с приватным ключом.
- Открываем конфигурационный файл 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.
- Если вы хотите, чтобы ваш сайт был доступен как через безопасное (https), так и через небезопасное (http) соединение, то в таком случае вам нужно будет создать виртуальный хост для каждого типа соединения. Скопируйте уже существующий виртуальный хост для http-соединения и смените порт с 80 на 443.
- Добавьте к файлу следующие строки (выделены жирным):
<VirtualHost 192.168.0.1:
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>
- Измените имена файлов и путей, чтобы они соответствовали вашим файлам сертификата:
- SSLCertificateFile – файл основного сертификата для вашего домена.
- SSLCertificateKeyFile – файл с ключом, сгенерированный в процессе создания CSR.
- SSLCertificateChainFile – файл промежуточного сертификата (если он имеется), предоставленный вашим центром сертификации. Если эта директива не работает, попробуйте вместо нее использовать SSLCACertificateFile.
- Сохраняем изменения и тестируем конфигурацию Apache. Лучше всего заранее протестировать конфигурацию на наличие различных синтаксических ошибок, иначе Apache просто не запустится. Для тестирования выполняем следующую команду:
apachectl configtest
- Делаем рестарт Apache с помощью команды:
apachectl restart
Или останавливаем и вновь запускаем сервер:
apachectl stop
apachectl start
Если вы столкнулись с проблемами при установке SSL-соединения и вы не в силах самостоятельно устранить их, вы всегда можете связаться с нашими специалистами по представленным на сайте контактам. Мы поможем вам настроить SSL на Apache без лишних проблем.
Настройка https для Apache в Debian
HTTPS (HyperText Transfer Protocol Secure) это — расширение для протокола HTTP, поддерживающее шифрование. Все передаваемые данные по HTTPS шифруются с помощью протокола SSL или TLS.
Перед началом работы, у вас должны быть сертификаты. Если вы их еще не получили — необходимо выбрать поставщика и купить сертификат. Есть масса поставщиков платных сертификатов: Thawte, Comodoro, GlobalSign и другие. Сейчас есть возможность получить бесплатно сертификат от WoSign.
Настройка для веб-сервера Apache 2.2
Все действия надо выполнять под учетной записью root или с помощью sudo.
Скопируйте следующие файлы в директорию /etc/ssl/:- site.ru.key — приватный ключ
- site.ru.crt — ключ удостоверяющего центра
- chain_root_bundle.crt — цепочка ключей
chmod 0600 /etc/ssl/site.ru.keyв конфигурационный файл для виртуального хоста в Apache (/etc/apache2/sites-enabled/site. ru.conf) добавить:
<VirtualHost 2.17.170.232:443> ServerName site.ru ServerAlias www.site.ru DocumentRoot /home/webmaster/domains/site.ru/public_html SSLEngine on SSLCertificateFile /etc/ssl/site.ru.crt SSLCertificateKeyFile /etc/ssl/site.ru.key SSLCertificateChainFile /etc/ssl/chain_root_bundle.crt SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLHonorCipherOrder on SSLCompression off ErrorLog /var/log/apache/site. ru_error.log CustomLog /var/log/apache/site.ru_access.log combined </VirtualHost>
Комментарии к конфигурации
Указываем ip-адрес сервера и порт<VirtualHost 2.17.170.232:443>Указываем, что протокол шифрования включен
SSLEngine onПуть до ключа от удостоверяющего центра
SSLCertificateFile /etc/ssl/site.ru.crtПуть до приватного ключа
SSLCertificateKeyFile /etc/ssl/site.ru.keyПуть до файла с цепочкой ключей
SSLCertificateChainFile /etc/ssl/chain_root_bundle.crtОпределяем допустимые криптографические наборы (алгоритмы обмена ключами и аутентификации). Конкретный набор согласуется клиентом и сервером во время установления соединения
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHAУказываем, что модуль mod_ssl для Apache должен использовать приоритеты наборов шифров, заданные сервером в директиве SSLCipherSuite (а не клиентом, то есть браузеру не удастся навязать свои предпочтения)
SSLHonorCipherOrder onДалее необходимо выключить поддержку небезопасных протоколов SSLv2, SSLv3 в файле /etc/apache2/mods-enabled/ssl. conf:
SSLProtocol all -SSLv2 -SSLv3тестируем синтаксис конфигурационных файлов средствами Apache
apache2ctl configtestесли тест пройден, перезагружаем конфиги
/etc/init.d/apache2 reloadПосле всех манипуляций, сайт должен открываться по адресу https://site.ru и в начале адресной строки должен появится значок “висячий замок”. Выше описана конфигурация виртуального хоста для Apache 2.2. Если у вас отличается версия Apache или вы используете другой веб-сервер, то вам необходимо сгенерировать свою версию конфига. Для этого воспользуйтесь генератором от Mozilla: https://mozilla.github.io/server-side-tls/ssl-config-generator/
Тестирование работы HTTPS
По завершению необходимо выполнить тестирования работы HTTPS. Для этого воспользуйтесь сервисом: https://www.ssllabs.com/ssltest/analyze.html
Введите полный адрес, включая https и запустите проверку. В среднем проверка занимает от 3 до 6 минут. С такой конфигурацией для Apache 2.2 на одном из сайтов клиента удалось получить рейтинг A.
Помните, защита соедиения не менее важная задача, поэтому рекомендую раз в месяц выполнять проверку сайта в сервисе от SSLlabs для поддержания необходимого уровня защиты шифрования. Если рейтинг снижается, то по завершению проверки, выдаются рекомендации для улучшения.
P.S. И да прибудет с вами рейтинг A+Настройка сайта для работы только по https на Apache — VPS.ua Wiki
У TCP протоколов http и https, как и у других, есть стандартные порты. Для http это 80, для https – 443.
После того как посетитель сайта укажет доменное имя в адресной строке, браузер попытается осуществить соединение к порту 80.
Для того, чтобы сайт работал только с SSL шифрованием (по протоколу https), необходимо настроить перенаправления (редиректы) с одного адреса типа http://domain.com на другой — типа https://domain.com. По этой причине также следует отдельно настроить виртуальный хост вебсервера не только для порта 443, но и для 80, — в противном случае при переходе по доменному имени вместо директории необходимого виртуального хоста (domain. com) с портом 80 будет отображено содержимое или первого в списке виртуального хоста (например, domain.net) с портом 80 (первый в списке хост считается виртуальным хостом по умолчанию), или – при отсутствии иных виртуальных хостов – содержимое папки, заданной директивой DocumentRoot. Данная директива, сами виртуальные хосты и другие глобальные настройки веб-сервера определяются в главном конфигурационном файле Apache httpd.conf или apache2.conf. Исходя из выше сказанного, в файл httpd.conf необходимо добавить следующие записи:
#объявление виртуального хоста для порта 80: NameVirtualHost 10.10.10.10:80 #объявление виртуального хоста для порта 443: NameVirtualHost 10.10.10.10:443 #виртуальный хост для домена domain.com, порт 443 <VirtualHost 10.10.10.10:443> SSLEngine on SSLCertificateFile /root/mycertificate/ca.crt SSLCACertificateFile /root/mycertificate/ca-bundle.crt SSLCertificateKeyFile /root/mycertificate/ca. key ServerAdmin [email protected] DocumentRoot /var/www/html/domains/domaincom ServerName domain.com ErrorLog /var/log/domaincom-error_log CustomLog /var/log/domaincom-access_log common </VirtualHost> #виртуальный хост для домена domain.com, порт 80 <VirtualHost 10.10.10.10:80> ServerName domain.com RewriteEngine On RewriteRule (.*) https://domain.com </VirtualHost>
После внесения изменений в файл httpd.conf нужно перезагрузить веб-сервер:
service httpd restart
Результатом данного конфигурирования будет являться то, что после подключения к 80-му порту запрос будет автоматически перенаправляться на порт 443.
Также перенаправление можно выполнить средствами файла .htaccess (включив поддержку его использования в файле httpd.conf – директива AllowOverride All).
Примечание
В указанном выше варианте конфигурирования файла httpd. conf виртуальный хост для домена domain.com – первый в списке, а значит, являющийся виртуальным хостом по умолчанию. Следовательно, при указании в браузере IP адреса сервера (в данном случае, 10.10.10.10) будет отображаться содержимое корневого каталога domain.com. При переходе по всем доменам, направленным на данный IP адрес, также будет отображаться контент сайта domain.com. Для того, чтобы этого не произошло, в качестве первого виртуального хоста необходимо добавить хост по умолчанию:
<VirtualHost 10.10.10.10:80> ServerName * DocumentRoot /var/www/html/default </VirtualHost>
Настройка Apache для работы баз 1С:Предприятие через HTTPS (SSL)
Безопасность для многих всегда идет на первом месте, многие интернет-гиганты, типа Google даже добавляют в свои браузеры предупреждения, что соединение не безопасно, если на сайте не используется SSL-сертификат.1С:Предприятие тоже может работать по протоколу HTTPS.
Мы предлагаем статью-инструкцию, как настроить HTTPS в Apache таким образом, чтобы 1С:Предприятие работало без проблем через SSL.
Установка Apache
Ну что же начнем…Для начала установим Apache. Рассмотрим это для 1С:Предприятие x86-64 и для Windows.
1. Идем на сайт https://www.anindya.com/ и качаем файл apache_2.4.23-x64-openssl-1.0.2h.msi (цифры на момент скачивания могут быть другими).
2. Устанавливаем Apache.
Реквизиты в полях Network Domain, Server Name и Administartor Email произвольные.
Жмем Next > Next > Next. Выбираем Typical.
3. Проверим, что сайт доступен по localhost. Откройте браузер и введите localhost в адресную строку. Должна открыться страница с текстом «It Works!«
Настройка Apache по SSL
4. Отлично. Apache установлен, теперь давайте настроем его работу по SSL.
Находим в папке c:\Program Files\Apache Software Foundation\Apache2.4\conf файл httpd.conf
Дописываем строку Listen 443
Это стандартный порт HTTPS. Заставляем Apache слушать и этот порт тоже. Если нам не нужен стандартный 80-ый порт и мы не планируем его использовать, то строку Listen 80 можно закомментировать добавив символ # (решетки) в начале строки. Так же имейте ввиду, что при изменении файлов в папке Program Files потребуется открытие файла в режиме администратора.
Раскомментируем в файле httpd.conf строчку
#LoadModule ssl_module modules/mod_ssl.so
Убрав символ #. Т.е. строка должна стать такой:
LoadModule ssl_module modules/mod_ssl.so
4. В конце файла httpd.conf изменяем
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLSessionCache none
</IfModule>
5. Из каталога bin установленной папки с Apache cкопируем файлы ssleay32.dll и libeay32.dll в C:\Windows\System32. Так же скопируем файл openssl.cnf из папки c:\Program Files\Apache Software Foundation\Apache2.4\conf\ в папку c:\Program Files\Apache Software Foundation\Apache2.4\bin\.
6. Запустим редактор реестра regedit (Пуск > Выполнить ввести текст regedit и нажать Enter) откроется окно реестра в нем найдем ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Apache2.4
В этой ветке найдем переменную ImagePath и два раза кликнем на ней.
Добавим ключ запуска -D ssl
7. Добавим SSL-сертификаты для домена. Тут есть варианты…
7.1. Если у Вас уже есть SSL-сертификаты для домена, то создайте папку ssl в папке C:\Program Files\Apache Software Foundation\Apache2.4\conf и переместите их туда (файлы *.key и *.cert). Идем на шаг 8.
7.2. Если у Вас нет SSL-сертификатов, то вы можете их сгенерировать самостоятельно.
7.2.1. Открываем командную строку в режиме администратора и переходим в папку bin Apache. Вводим команду:
cd «C:\Program Files\Apache Software Foundation\Apache2.4\bin»
7.2.2. Далее вводим:
openssl req -config openssl.cnf -new -out ssl.csr
Идем по шагам в командной строке и заполняем необходимые поля. То, что вы введете не принципиально. Самое главное на этом этапе надо запомнить пароль (когда спросит pass phrase)
7.2.3. Выполним:
openssl rsa -in privkey.pem -out ssl.key
Спросит пароль, который вы вводили ранее.
7.2.4. Затем:
openssl x509 -in ssl.csr -out ssl.cert -req -signkey ssl.key -days 3000
days — это срок действия сертификата в днях.
7.2.5. Ну и наконец:
openssl x509 -in ssl.cert -out ssl.der.crt -outform DER
7.2.6. Создадим папку ssl в C:\Program Files\Apache Software Foundation\Apache2.4\conf и переместим из папки bin файлы ssl. key и ssl.cert (а вообще можно все сразу туда скопировать, что было получено на шагах 7.2.1. — 7.2.5) из C:\Program Files\Apache Software Foundation\Apache2.4\bin в C:\Program Files\Apache Software Foundation\Apache2.4\conf\ssl.
8. Снова открываем файл httpd.conf из папки C:\Program Files\Apache Software Foundation\Apache2.4\conf и добавляем секцию VirtualHost в самый конец файла httpd.conf:
<VirtualHost demo.soft.ru:443>
SSLEngine On
SSLCertificateFile conf/ssl/ssl.cert
SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>
9. Перезапустим Apache. Открываем Monitor в правом нижнем углу, щелкнем по иконке и нажимаем restart. Если все хорошо, то Apache запустится без ошибок и появится зеленый значок.
10. Пробуем открыть сайт через HTTPS. В нашем случае можно и так https://localhost и вот так https://demo.soft.ru:
Обратите внимание на то, что сертификат самоподписанный и службы типа антивируса Касперского понимают, что дело не очень… Это нормально, так как ваш сертификат не был изготовлен корневыми центрами сертификации. Но если вы захотите использовать https внутри организации, то почему бы и нет?
11. Теперь попробуем запустить 1С. В браузере открывается:
Теперь попробуем открыть базу через тонкий клиент и если мы использовали самодписанный сертификат то тут нас ждет разочарование:
Ошибка HTTP при обращении к серверу … Удаленный узел не прошел проверку.
12. Дело в том, что сервер 1С содержит собственный контроль достоверности HTTPS-соединений и корневых центров.
Необходимо открыть папку сервера 1С:Предприятия c:\Program Files\1cv8\8.3. 15.1747\bin\ и в ней найти файл cacert.pem
Он отвечает как раз за эти центры сертификации.
Открываем командную строку и в ней выполняем команду:
openssl x509 -inform der -in ssl.der.crt -out ssl.pem -text -fingerprint -md5
После выполнения команды на экране Вы увидите Fingerprint. Скопируйте его. Это будет строка вида:
MD5 Fingerprint=64:5C:11:03:46:F1:22:9A:5B:C3:DD:AA:CC:EE:FF:A3
Откройте файл cacert.pem в папка 1С, перейдите в конец файла и с этой строки начинайте добавление своего сертификата в файл cacert.pem. После строки контрольной суммы сертификата, нужно добавить в файл cacert.pem содержимое файла, в который Вы экспортировали сертификат.
После этого запуск тонкого клиента будет работать без ошибок.
Если же и после этого есть ошибки, то можно вообще заставить клиент 1С не проверять сертификат. Для этого необходимо отредактировать информационную базу:
Далее:
Ну и наконец заветное окно:
Пробуем запустить и. ..
Все замечательно работает по https.
Отлично. Вы все настроили!
Настройка ssl в apache на CentOS
Хочу поделиться небольшой информацией о том, как настроить ssl подключение в apache на сервере с CentOS и перевести сайты с http на https. Делается это не сложно, но есть пара нюансов.
Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Курс стоящий, все подробности читайте по ссылке. Есть бесплатные курсы.
Недавно я уже рассказывал о том как получить бесплатный ssl сертификат для подтверждения доменного имени. Мы его использовали для организации ssl/tls соединений в почтовом сервере. Теперь его же мы будем использовать для того, чтобы перевести наш сайт на работу по ssl протоколу.
О том, как получить бесплатный сертификат от let’s encrypt и настроить apache на работу с ним читайте в моей статье по настройке web сервера apache на centos 8.
Установка mod_ssl в apache
В качестве сервера у нас выступает apache на CentOS, хотя это не принципиально, настройка на других linux дистрибутивах будет идентичной. Рабочим web сервером является apache. Использовать ssl протокол в apache мы будем с помощью мода mod_ssl. Первым делом проверим, установлен ли он:
# rpm -qa | grep mod_ssl
Если нет, то устанавливаем:
# yum -y install mod_ssl
После установки мода, идем в директорию /etc/httpd/conf.d и правим там файл настроек ssl.conf. Прописываем пути к сертификатами в директивах SSLCertificateFile и SSLCertificateKeyFile.
Создание виртуального хоста с поддержкой ssl
Далее необходимо либо создать новый виртуальный хост apache, либо отредактировать существующий в файле /etc/httpd/conf/httpd. conf. Добавляем в конец файла:
<VirtualHost *:443> SSLEngine on SSLCertificateFile /root/cert/zeroxzed.ru.crt SSLCertificateKeyFile /root/cert/zeroxzed.ru.kye <Directory /var/www/vhosts/zeroxzed.ru/www> AllowOverride All </Directory> DocumentRoot /var/www/vhosts/zeroxzed.ru/www ServerName zeroxzed.ru </VirtualHost>
После сохранения проверяем конфигурацию apache:
# httpd -t
Если появляется предупреждение:
[warn] _default_ VirtualHost overlap on port 443, the first has precedence
То ищем в /etc/httpd/conf/httpd.conf строчку NameVirtualHost *:80 и добавляем после нее NameVirtualHost *:443
Снова проверяем. Если ошибок нет, перезапускаем апач и заходим на сайт, прописав в адресной строке https, вместо http. Теперь ваш сайт доступен по протоколу https. Но пользователи сайта могут об этом не знать. Было бы разумным сделать переадресацию с открытого протокола на защищенный. (.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
Теперь даже если просто набрать адрес сайта с http откроется его защищенная версия https. Не забудьте проверить, включен ли у вас модуль mod_rewrite в настройках apache. И проверьте фаервол. Для корректной работы сайта по протоколу https необходимо открыть 443 порт на веб сервере.
Онлайн курс по Kubernetes
Онлайн-курс по Kubernetes – для разработчиков, администраторов, технических лидеров, которые хотят изучить современную платформу для микросервисов Kubernetes. Самый полный русскоязычный курс по очень востребованным и хорошо оплачиваемым навыкам. Курс не для новичков – нужно пройти вступительный тест.Если вы ответите «да» хотя бы на один вопрос, то это ваш курс:
- устали тратить время на автоматизацию?
- хотите единообразные окружения?;
- хотите развиваться и использовать современные инструменты?
- небезразлична надежность инфраструктуры?
- приходится масштабировать инфраструктуру под растущие потребности бизнеса?
- хотите освободить продуктовые команды от части задач администрирования и автоматизации и сфокусировать их на развитии продукта?
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.Создание самоподписанных сертификатов SSL для Apache в Ubuntu 18.04
Предыдущая версия данного обучающего руководства была написана Джастином Эллингвудом
Введение
Веб-протокол TLS или протокол безопасности транспортного уровня, а также предшествовавший ему веб-протокол SSL или протокол уровня защищенных сокетов, используются для помещения обычного трафика в защищенную оболочку с шифрованием.
С помощью этой технологии серверы могут обеспечивать безопасный обмен трафиком между серверами и клиентами без возможности перехвата сообщений третьими сторонами. Система сертификатов также помогает пользователям подтверждать подлинность сайтов, к которым они подключаются.
В этом обучающем модуле мы покажем, как создать самоподписанный сертификат SSL для использования с веб-сервером Apache в Ubuntu 18. 04.
Примечание. Самоподписанный сертификат шифрует данные, которыми ваш сервер обменивается с любыми клиентами. Однако поскольку он не подписан доверенным центром сертификации из числа встроенных в браузеры, пользователи не могут использовать этот сертификат для автоматической проверки подлинности вашего сервера.
Самоподписанный сертификат полезен в ситуациях, когда у вашего сервера нет доменного имени, а также в случаях, когда шифрованный веб-интерфейс не предназначен для взаимодействия с пользователями. Если у вас есть доменное имя, в большинстве случае будет полезнее использовать сертификат, подписанный центром сертификации. Вы можете узнать, как создать бесплатный доверенный сертификат с помощью проекта Let’s Encrypt, здесь.
Предварительные требования
Для начала у вас должен быть пользователь без прав root с привилегиями sudo
. Чтобы создать такую учетную запись пользователя, следуйте указаниям руководства «Начальная настройка сервера с Ubuntu 18. 04».
Также вам потребуется установить веб-сервер Apache. Если вы хотите установить на сервере полный комплект LAMP (Linux, Apache, MySQL, PHP), следуйте указаниям обучающего модуля «Установка LAMP в Ubuntu 18.04». Если вы хотите просто установить веб-сервер Apache, пропустите шаги, относящиеся к установке PHP и MySQL.
Когда предварительные требования будут выполнены, переходите к приведенным ниже шагам.
Шаг 1 – Создание сертификата SSL
Протоколы TLS и SSL используют сочетание открытого сертификата и закрытого ключа. Секретный ключ SSL хранится на сервере. Он используется для шифрования отправляемых на клиентские системы данных. Сертификат SSL находится в открытом доступе для всех, кто запрашивает этот контент. Его можно использовать для расшифровки контента, подписанного соответствующим ключом SSL.
Мы можем создать самоподписанный ключ и пару сертификатов OpenSSL с помощью одной команды:
- 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: этот параметр указывает OpenSSL пропустить опцию защиты сертификата с помощью пароля. Для чтения этого файла при запуске сервера без вмешательства пользователя нам потребуется Apache. Кодовая фраза может предотвратить это, поскольку нам придется вводить ее после каждого перезапуска.
- -days 365: данный параметр устанавливает срок, в течение которого сертификат будет считаться действительным. Здесь мы устанавливаем срок действия в один год.
- -newkey rsa:2048: указывает, что мы хотим генерировать новый сертификат и новый ключ одновременно. Мы не создали требуемый ключ для подписи сертификата на предыдущем шаге, и поэтому нам нужно создать его вместе с сертификатом. Часть
rsa:2048
указывает, что мы создаем ключ RSA длиной 2048 бит. - -keyout: эта строка указывает OpenSSL, где мы разместим создаваемый закрытый ключ.
- -out: данный параметр указывает OpenSSL, куда поместить создаваемый сертификат.
Как мы указывали выше, эти опции создают и файл ключа, и сертификат. Нам будет задано несколько вопросов о нашем сервере, чтобы правильно вставить информацию в сертификат.
Укажите подходящие ответы. Самая важная строка — это строка, где запрашивается обычное имя (т. е. FQDN сервера или ВАШЕ имя)
. Вам нужно ввести доменное имя, связанное с вашим сервером или, что более вероятно, публичный IP-адрес вашего сервера.
В целом диалоги выглядят примерно так:
Output
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc.
Organizational Unit Name (eg, section) []:Ministry of Water Slides
Common Name (e.g. server FQDN or YOUR name) []:server_IP_address
Email Address []:admin@your_domain.com
Оба созданных вами файла будут помещены в соответствующие подкаталоги в каталоге /etc/ssl
.
Шаг 2 — Настройка Apache для использования SSL
Мы создали файлы ключа и сертификата в каталоге /etc/ssl
. Теперь нам просто нужно изменить конфигурацию Apache, чтобы воспользоваться их преимуществами.
Внесем несколько небольших изменений в нашу конфигурацию:
- Создадим сниппет конфигурации, чтобы задать надежные параметры SSL по умолчанию.
- Мы изменим входящий в комплект файл виртуального хоста SSL Apache, чтобы он указывал на сгенерированные нами сертификаты SSL.
- (Рекомендуется) Мы изменим незашифрованный файл виртуального хоста, чтобы он автоматически перенаправлял запросы на шифрованный виртуальный хост.
После завершения настройки мы получим защищенную конфигурацию SSL.
Создание сниппета конфигурации Apache с надежными настройками шифрования
Прежде всего, мы создадим сниппет конфигурации Apache для определения некоторых параметров SSL. При этом в Apache будет настроен надежный пакет шифров SSL и будут включены расширенные функции, которые обеспечат безопасность нашего сервера. Настраиваемые нами параметры смогут использовать любые виртуальные хосты с SSL.
Создайте новый сниппет в каталоге /etc/apache2/conf-available
. Мы назовем файл ssl-params.conf
, чтобы сделать его назначение очевидным:
- sudo nano /etc/apache2/conf-available/ssl-params.conf
Для безопасной настройки Apache SSL мы используем рекомендации Реми ван Эльста на сайте Cipherli.st. Этот сайт создан для предоставления удобных настроек шифрования для популярного программного обеспечения.
Рекомендованные настройки на вышеуказанном сайте обеспечивают высокий уровень безопасности. Иногда это достигается за счет совместимости клиентских систем. Если вам требуется поддержка старых версий клиентов, вы можете использовать альтернативный список, нажав на странице ссылку «Да, мне нужны настройки шифрования для устаревшего / старого программного обеспечения». Этот список можно заменить для копируемых ниже элементов.
Выбор конфигурации в основном зависит от того, какие системы вам нужно поддерживать. Оба варианта обеспечивают высокий уровень безопасности.
Для наших целей мы скопируем предоставленные настройки полностью. Мы внесем только одно небольшое изменение. Мы отключим заголовок Strict-Transport-Security
(HSTS).
Предварительная загрузка HSTS повышает безопасность, но может иметь далеко идущие последствия, если ее включить случайно или неправильно. В этом обучающем модуле мы не будем включать настройки, но вы можете изменить их, если понимаете возможные последствия.
Прежде чем принимать решения, прочитайте о строгой безопасности транспорта HTTP или HSTS, в особенности о функции «предварительной загрузки»
Вставьте конфигурацию в открытый нами файл ssl-params.conf
:
/etc/apache2/conf-available/ssl-params.conf
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
# Disable preloading HSTS for now. You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
# Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off
Сохраните файл и закройте его после завершения.
Изменение файла виртуального хоста Apache SSL по умолчанию
Теперь изменим /etc/apache2/sites-available/sl.conf
, используемый по умолчанию файл виртуального хоста Apache SSL. Если вы используете другой файл серверных блоков, используйте имя этого файла в приведенных ниже командах.
Прежде чем продолжить, создадим резервную копию первоначального файла виртуального хоста SSL:
- sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak
Теперь откройте файл виртуального хоста SSL для внесения изменений:
- sudo nano /etc/apache2/sites-available/default-ssl. conf
С удалением большинства комментариев содержание файла виртуального хоста по умолчанию должно выглядеть примерно так:
/etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Мы внесем в файл незначительные изменения. Мы внесем желаемые изменения в файл виртуального хоста (адрес электронной почты администратора сервера, имя сервера и т. д.), а также изменим директив SSL, чтобы они указывали на наши файлы сертификатов и ключей.
После внесения изменений ваш серверный блок должен выглядеть примерно так:
/etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
ServerName server_domain_or_IP
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Сохраните файл и закройте его после завершения.
(Рекомендуется) Изменение файла хоста HTTP для перенаправления на HTTPS
В настоящее время сервер будет предоставлять нешифрованный трафик HTTP и шифрованный трафик HTTPS. В большинстве случаев для обеспечения безопасности рекомендуется включить автоматическое перенаправление HTTP на HTTPS. Если вы не хотите использовать эту функцию, или она вам не нужна, вы можете спокойно пропустить этот раздел.
Чтобы изменить файл нешифрованного виртуального хоста для перенаправления всего трафика для шифрования SSL, мы можем открыть файл /etc/apache2/sites-available/000-default.conf
:
- sudo nano /etc/apache2/sites-available/000-default.conf
Внутри файла в блоках конфигурации VirtualHost
нам нужно добавить директиву Redirect
, которая должна направлять весь трафик на версию сайта с шифрованием SSL:
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
. . .
Redirect "/" "https://your_domain_or_IP/"
. . .
</VirtualHost>
Сохраните файл и закройте его после завершения.
Шаг 3 — Настройка брандмауэра
Если у вас включен брандмаэр ufw
в соответствии с предварительными требованиями, вам может потребоваться изменить настройки для поддержки трафика SSL . К счастью, Apache регистрирует несколько профилей ufw
после установки.
Мы можем просмотреть доступные профили с помощью следующей команды:
Список должен выглядеть примерно так:
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Вы можете просмотреть текущие настройки с помощью следующей команды:
Если вам разрешен только обычный трафик HTTP, результаты могут выглядеть следующий образ:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
Чтобы разрешить дополнительный трафик HTTPS, мы разрешим профиль «Apache Full» и удалим избыточный профиль «Apache»:
- sudo ufw allow 'Apache Full'
- sudo ufw delete allow 'Apache'
Теперь ваш статус должен выглядеть примерно так:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
Шаг 4 — Активация изменений в Apache
Мы внесли изменения и настроили брандмауэр, и теперь можем включить в Apache модули SSL и заголовков, активировать наш виртуальный хост SSL и перезапустить Apache.
Мы можем активровать mod_ssl
, модуль Apache SSL, и модуль mod_headers
, необходимый для некоторых настроек нашего сниппета SSL, с помощью команды a2enmod
:
- sudo a2enmod ssl
- sudo a2enmod headers
Теперь мы можем активировать виртуальный хост SSL с помощью команды a2ensite
:
- sudo a2ensite default-ssl
Также нам нужно будет активировать файл ssl-params.conf
для считывания заданных значений:
Мы активировали наш сайт и все необходимые модули. Теперь нам нужно проверить наши файлы на наличие ошибок в синтаксисе. Для этого можно ввести следующую команду:
- sudo apache2ctl configtest
Если проверка будет успешно пройдена, мы получим результат, выглядящий примерно так:
Output
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 message
Syntax OK
Первая строка — это сообщение о том, что директива ServerName
не задана глобально. Если вы хотите избавиться от этого сообщения, вы можете задать для ServerName
доменное имя вашего сервера или IP-адрес в каталоге /etc/apache2/apache2.conf
. Это необязательно, потому что данное сообщение не наносит никакого вреда.
Если в результатах есть сообщение Syntax OK
, в вашей конфигурации нет синтаксических ошибок. Мы можем безопасно перезапустить Apache для внесения изменений:
- sudo systemctl restart apache2
Шаг 5 — Тестирование шифрования
Теперь мы готовы протестировать наш сервер SSL.
Откройте браузер и введите https://
и доменное имя или IP-адрес вашего сервера в адресную панель:
https://server_domain_or_IP
Поскольку созданный нами сертификат не подписан одним из доверенных центров сертификации вашего браузера, вы увидите пугающее предупреждение, которое будет выглядеть примерно так:
Такое предупреждение нормально, и его следует ожидать. Сертификат нам нужен только для шифрования, а не для подтверждения подлинности нашего хоста третьей стороной. Нажмите «Дополнительно», а затем нажмите на указанную ссылку, чтобы перейти к своему хосту:
Теперь должен открыться ваш сайт. Если вы посмотрите в адресную строку браузера, вы увидите символ замка со знаком «x». В данном случае это означает, что сертификат не удается проверить. Ваше соединение все равно шифруется.
Если вы настроили Apache для перенаправления HTTP на HTTPS, вы можете проверить правильность перенаправления функций:
http://server_domain_or_IP
Если при этом появляется такой же значок, перенаправление работает правильно.
Шаг 6 – Переключение на постоянное перенаправление
Если перенаправление работает правильно, и вы хотите разрешить только шифрованный трафик, вам следует снова изменить файл нешифрованного виртуального хоста Apache и сделать перенаправление постоянным.
Откройте файл конфигурации серверного блока еще раз:
- sudo nano /etc/apache2/sites-available/000-default. conf
Найдите добавленную нами строку Redirect
. Добавьте в эту строку атрибут permanent
, который изменяет тип перенаправления с временного перенаправления 302 на постоянное перенаправление 301:
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
. . .
Redirect permanent "/" "https://your_domain_or_IP/"
. . .
</VirtualHost>
Сохраните и закройте файл.
Проверьте конфигурацию на ошибки синтаксиса:
- sudo apache2ctl configtest
Когда вы будете готовы, перезапустите Apache, чтобы сделать перенаправление постоянным:
- sudo systemctl restart apache2
Заключение
Вы настроили сервер Apache для использования защищенного шифрования клиентских соединений. Это обеспечит безопасное обслуживание запросов и не даст третьим сторонам возможности считывать ваш трафик.
SSL / TLS Strong Encryption: How-To — HTTP-сервер Apache, версия 2.4
Этот документ предназначен для того, чтобы вы начали и кое-что работающий. Мы настоятельно рекомендуем вам прочитать оставшуюся часть SSL. документации, и прийти к более глубокому пониманию материала, прежде чем перейти к продвинутым техникам.
См. Также
Ваша конфигурация SSL должна содержать, как минимум, следующие директивы.
LoadModule модули ssl_module / mod_ssl.так Слушайте 443ServerName www.example.com SSLEngine включен SSLCertificateFile "/path/to/www.example.com.cert" SSLCertificateKeyFile "/path/to/www.example.com.key"
Online Certificate Status Protocol (OCSP) — это механизм для определение того, был ли отозван сертификат сервера, и OCSP Сшивание — это особая форма, при которой сервер, например httpd и mod_ssl, поддерживает текущие ответы OCSP для своих сертификатов и отправляет их клиентам, которые общаются с сервером. Большинство сертификатов содержат адрес ответчика OCSP, поддерживаемый выпускающей Центр сертификации, и mod_ssl может связываться с этим ответчиком на получить подписанный ответ, который может быть отправлен клиентам, общающимся с сервер.
Поскольку клиент может получить статус отзыва сертификата из сервер, не требуя дополнительного подключения от клиента к Центр сертификации, OCSP Stapling является предпочтительным способом для статус отзыва, который необходимо получить.Другие преимущества устранения связь между клиентами и центром сертификации заключается в том, что история просмотра клиентов не предоставляется Центру сертификации и получение статуса более надежно, поскольку не зависит от потенциально сильно загруженные серверы центра сертификации.
Поскольку ответ, полученный сервером, может быть повторно использован для всех клиентов используя тот же сертификат в течение времени, когда ответ действителен, накладные расходы на сервер минимальны.
После правильной настройки общей поддержки SSL включение OCSP Сшивание обычно требует очень незначительных изменений в httpd конфигурация — добавление этих двух директив:
SSL SSLStaplingCache "shmcb: logs / ssl_stapling (32768)"
Эти директивы размещены в глобальном масштабе (т. е., не в виртуальном
определение хоста) везде, где есть другие глобальные директивы конфигурации SSL.
размещены, например, в conf / extra / httpd-ssl.conf
для нормального
сборки с открытым исходным кодом httpd, /etc/apache2/mods-enabled/ssl.conf
для httpd в комплекте с Ubuntu или Debian и т. д.
Путь к директиве SSLStaplingCache
(например, журналов /
) должны совпадать с SSLSessionCache
директива. Этот путь относительный
на ServerRoot
.
Эта конкретная директива SSLStaplingCache
требует mod_socache_shmcb
(из префикса shmcb
на
аргумент директивы). Этот модуль обычно включен уже для SSLSessionCache
или от имени какого-либо модуля, кроме mod_ssl
. Если вы включили кеш сеанса SSL с помощью
механизм, отличный от mod_socache_shmcb
, используйте эту альтернативу
механизм для SSLStaplingCache
. Например:
SSLSessionCache "dbm: logs / ssl_scache" SSLStaplingCache "dbm: logs / ssl_stapling"
Вы можете использовать программу командной строки openssl, чтобы проверить, что ответ OCSP отправлено вашим сервером:
$ openssl s_client -connect www.example.com:443 -status -servername www.example.com ... Ответ OCSP: ====================================== Данные ответа OCSP: Статус ответа OCSP: успешно (0x0) Тип ответа: базовый ответ OCSP ... Статус сертификата: хорошо ...
В следующих разделах описаны наиболее распространенные ситуации, требующие
дальнейшая модификация конфигурации. См. Также mod_ssl
справочное руководство.
Если для сервера используется более нескольких сертификатов SSL
ответов OCSP хранятся в кэше сшивания SSL.Пока ответы обычно имеют размер от нескольких сотен до нескольких тысяч байтов, mod_ssl поддерживает ответы OCSP размером до 10 Кбайт. С более чем несколько сертификатов, размер кэша сшивания (32768 байт в приведенном выше примере) возможно, потребуется увеличить. Сообщение об ошибке AH01929 будет зарегистрировано в случае ошибка при сохранении ответа.
Если сертификат не указывает на респондента OCSP, или если необходимо использовать другой адрес
См. SSLStaplingForceURL
директива.
Вы можете подтвердить, что сертификат сервера указывает на респондента OCSP. используя программу командной строки openssl, как показано ниже:
$ openssl x509 -in ./www.example.com.crt -text | grep 'OCSP. * http' OCSP - URI: http: //ocsp.example.com
Если предоставлен OCSP URI и веб-сервер может связываться с ним напрямую без использования прокси, настройка не требуется. Обратите внимание, что правила брандмауэра, управляющие исходящими соединениями с веб-сервера, могут нужно отрегулировать.
Если не указан URI OCSP, обратитесь в центр сертификации, чтобы
определить, доступен ли он; если да, настройте его с помощью SSLStaplingForceURL
в виртуальном
хост, который использует сертификат.
Если настроено несколько виртуальных хостов с поддержкой SSL и OCSP Сшивание должно быть отключено для некоторых
Добавить SSLUseStapling Off
к виртуальным хостам, для которых OCSP
Сшивание следует отключить.
Если ответчик OCSP медленный или ненадежный
Доступно несколько директив для обработки тайм-аутов и ошибок.Ссылаться
к документации по SSLStaplingFakeTryLater
, SSLStaplingResponderTimeout
и SSLStaplingReturnResponderErrors
директивы.
Если mod_ssl регистрирует ошибку AH02217
AH02217: ssl_stapling_init_cert: не удалось получить сертификат издателя!
Для поддержки OCSP Stapling, когда сертификат конкретного сервера используется, цепочка сертификатов для этого сертификата должна быть настроена. Если оно не был настроен как часть включения SSL, будет выдана ошибка AH02217 когда включено сшивание, и для клиентов не будет предоставлен ответ OCSP используя сертификат.
См. SSLCertificateChainFile
и SSLCertificateFile
для инструкций
для настройки цепочки сертификатов.
Как я могу заставить клиентов аутентифицироваться с помощью сертификатов?
Когда вы знаете всех своих пользователей (например, как это часто бывает на корпоративном
Интранет), вы можете потребовать аутентификацию с использованием простого сертификата. Все вы
необходимо создать клиентские сертификаты, подписанные вашим собственным ЦС
сертификат ( ок.crt
), а затем проверьте клиентов по этому
сертификат.
# требуется сертификат клиента, который должен быть # подписано нашим сертификатом CA в ca.crt SSLVerifyClient требуется SSLVerifyDepth 1 SSLCACertificateFile "conf / ssl.crt / ca.crt"
Как я могу заставить клиентов аутентифицироваться с помощью сертификатов для конкретный URL-адрес, но все же разрешить произвольным клиентам доступ к остальной части сервера?
Чтобы заставить клиентов аутентифицироваться с использованием сертификатов для определенного URL-адреса,
вы можете использовать функции реконфигурации каталогов mod_ssl
:
SSLVerifyClient нет SSLCACertificateFile "conf / ssl. crt / ca.crt " <Местоположение "/ secure / area"> SSLVerifyClient требуется SSLVerifyDepth 1
Как разрешить доступ только клиентам, имеющим сертификаты, к конкретный URL, но разрешить всем клиентам доступ к остальной части сервера?
Ключом к этому является проверка этой части сертификата клиента.
соответствует тому, что вы ожидаете. Обычно это означает проверку всего или части
Отличительное имя (DN), чтобы узнать, содержит ли оно известную строку.
Есть два способа сделать это: либо mod_auth_basic
, либо SSL Требуется
.
Метод mod_auth_basic
обычно требуется, когда
сертификаты полностью произвольны, или когда их DN имеют
нет общих полей (обычно организация и т. д.). В этом случае,
вы должны создать базу паролей, содержащую все разрешены следующие клиенты:
SSLVerifyClient нет SSLCACertificateFile "conf / ssl.crt / ca.crt" SSLCACertificatePath "conf / ssl. crt" <Каталог "/ usr / local / apache2 / htdocs / secure / area"> SSLVerifyClient требуется SSLVerifyDepth 5 SSLOptions + FakeBasicAuth SSLRequireSSL AuthName «Аутентификация змеиного масла» AuthType Basic Файл AuthBasicProvider AuthUserFile "/ usr / local / apache2 / conf / httpd.passwd " Требовать действительного пользователя
Пароль, используемый в этом примере, представляет собой зашифрованную строку DES «пароль».
См. Документацию SSLOptions
для получения дополнительной информации.
Информация.
httpd.passwd
/ C = DE / L = Мюнхен / O = Snake Oil, Ltd./OU=Staff/CN=Foo:xxj31ZMTZzkVA /C=US/L=S.F./O=Snake Oil, Ltd./OU=CA/CN=Bar:xxj31ZMTZzkVA /C=US/L=L.A./O=Snake Oil, Ltd./OU=Dev/CN=Quux:xxj31ZMTZzkVA
Когда все ваши клиенты являются частью общей иерархии, которая закодирована
в DN, вы можете легко сопоставить их с помощью SSLRequire
, а именно:
SSLVerifyClient нет SSLCACertificateFile "conf / ssl. crt / ca.crt " SSLCACertificatePath "conf / ssl.crt" <Каталог "/ usr / local / apache2 / htdocs / secure / area"> SSLVerifyClient требуется SSLVerifyDepth 5 SSLOptions + FakeBasicAuth SSLRequireSSL SSLRequire% {SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \ и% {SSL_CLIENT_S_DN_OU} в {"Staff", "CA", "Dev"}
Как мне потребовать HTTPS с надежными шифрами и базовыми аутентификации или клиентских сертификатов для доступа к части Интернет-сайт для клиентов из Интернета? Я все еще хочу разрешить простой HTTP-доступ для клиентов в интрасети.
В этих примерах предполагается, что клиенты во внутренней сети имеют IP-адреса в диапазоне
192.168.1.0/24, и что часть веб-сайта интрасети, которую вы хотите разрешить
доступ в Интернет: / usr / local / apache2 / htdocs / subarea
.
Эта конфигурация должна оставаться за пределами вашего виртуального хоста HTTPS, поэтому
что это применимо как к HTTPS, так и к HTTP.
SSLCACertificateFile "conf / ssl. 192 \.168 \ .1 \. [0-9] + $ " RewriteCond "% {HTTPS}" "! = On" RewriteRule "." «-» [F] # Разрешить доступ к сети и / или базовую аутентификацию Удовлетворите любого # Контроль доступа к сети Требуется ip 192.168.1.0/24 # Базовая аутентификация HTTP AuthType basic AuthName «Защищенная область интрасети» Файл AuthBasicProvider AuthUserFile "conf / protected.passwd" Требовать действительного пользователя
mod_ssl
может регистрировать чрезвычайно подробную отладочную информацию
в журнал ошибок, когда его LogLevel
установить на более высокие уровни трассировки.С другой стороны, на очень загруженном сервере
уровень инфы
может быть уже многовато. Помните, что вы можете
настроить LogLevel
для каждого модуля на
удовлетворить ваши потребности.
Как создать самоподписанный сертификат SSL для Apache в Ubuntu 16.
04Введение
TLS , или безопасность транспортного уровня, и его предшественник SSL , который обозначает уровень защищенных сокетов, представляют собой веб-протоколы, используемые для упаковки обычного трафика в защищенную зашифрованную оболочку.
Используя эту технологию, серверы могут безопасно отправлять трафик между сервером и клиентами без возможности перехвата сообщений посторонними лицами. Система сертификатов также помогает пользователям проверять подлинность сайтов, к которым они подключаются.
В этом руководстве мы покажем вам, как настроить самозаверяющий сертификат SSL для использования с веб-сервером Apache на сервере Ubuntu 16.04.
Примечание. Самозаверяющий сертификат будет шифровать обмен данными между вашим сервером и любыми клиентами.Однако, поскольку он не подписан ни одним из доверенных центров сертификации, включенных в веб-браузеры, пользователи не могут использовать сертификат для автоматической проверки подлинности вашего сервера.
Самозаверяющий сертификат может быть подходящим, если у вас нет доменного имени, связанного с вашим сервером, и для случаев, когда зашифрованный веб-интерфейс не доступен пользователю. Если у вас и есть доменное имя, во многих случаях лучше использовать сертификат, подписанный ЦС. Вы можете узнать, как настроить бесплатный доверенный сертификат для проекта Let’s Encrypt здесь.
Предварительные требования
Прежде чем вы начнете, у вас должен быть пользователь без полномочий root, настроенный с привилегиями sudo
. Вы можете узнать, как настроить такую учетную запись пользователя, выполнив нашу первоначальную настройку сервера для Ubuntu 16.04.
Вам также потребуется установить веб-сервер Apache. Если вы хотите установить весь стек LAMP (Linux, Apache, MySQL, PHP) на свой сервер, вы можете следовать нашему руководству по настройке LAMP в Ubuntu 16.04. Если вам просто нужен веб-сервер Apache, пропустите шаги, относящиеся к PHP и MySQL в руководстве.
Когда вы выполнили предварительные требования, продолжайте ниже.
Шаг 1. Создайте сертификат SSL
TLS / SSL работает с использованием комбинации открытого сертификата и закрытого ключа. Ключ SSL хранится на сервере в секрете. Он используется для шифрования контента, отправляемого клиентам. Сертификат SSL является общедоступным для всех, кто запрашивает контент. Его можно использовать для расшифровки содержимого, подписанного соответствующим ключом SSL.
Мы можем создать пару самозаверяющих ключей и сертификатов с помощью OpenSSL с помощью одной команды:
- sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout / etc / ssl / private / apache-selfsigned.ключ -out /etc/ssl/certs/apache-selfsigned.crt
Вам будет задан ряд вопросов. Прежде чем мы перейдем к этому, давайте посмотрим, что происходит в команде, которую мы выдаем:
- openssl : это основной инструмент командной строки для создания сертификатов, ключей и других файлов OpenSSL и управления ими.
- req : Эта подкоманда указывает, что мы хотим использовать управление запросом подписи сертификата (CSR) X.509. Значок «X.509 »- это стандарт инфраструктуры открытых ключей, которого придерживаются протоколы SSL и TLS при управлении ключами и сертификатами. Мы хотим создать новый сертификат X.509, поэтому используем эту подкоманду.
- -x509 : Это дополнительно изменяет предыдущую подкоманду, сообщая утилите, что мы хотим создать самозаверяющий сертификат вместо генерации запроса на подпись сертификата, как это обычно бывает.
- -nodes : Это говорит OpenSSL пропустить опцию защиты нашего сертификата парольной фразой.Нам нужно, чтобы Apache мог читать файл без вмешательства пользователя при запуске сервера. Парольная фраза предотвратит это, потому что нам придется вводить ее после каждого перезапуска.
- -дней 365 : этот параметр устанавливает период времени, в течение которого сертификат будет считаться действительным. Мы устанавливаем его здесь на один год.
- -newkey rsa: 2048 : указывает, что мы хотим сгенерировать новый сертификат и новый ключ одновременно. Мы не создали ключ, необходимый для подписи сертификата на предыдущем шаге, поэтому нам нужно создать его вместе с сертификатом.Часть
rsa: 2048
сообщает ему, что нужно создать ключ RSA длиной 2048 бит. - -keyout : Эта строка сообщает OpenSSL, где разместить сгенерированный файл закрытого ключа, который мы создаем.
- -out : Это сообщает OpenSSL, где разместить сертификат, который мы создаем.
Как мы указали выше, эти параметры будут создавать как файл ключа, так и сертификат. Нам зададут несколько вопросов о нашем сервере, чтобы правильно вставить информацию в сертификат.
Заполните все запросы соответствующим образом. Самая важная строка — это та, которая запрашивает общее имя (например, полное доменное имя сервера или ВАШЕ имя)
. Вам необходимо ввести доменное имя, связанное с вашим сервером, или, что более вероятно, публичный IP-адрес вашего сервера.
Все подсказки будут выглядеть примерно так:
Вывод
Название страны (двухбуквенный код) [AU]: США
Название штата или провинции (полное название) [Some-State]: Нью-Йорк
Название населенного пункта (например, город) []: Нью-Йорк.
Название организации (например, компания) [Internet Widgits Pty Ltd]: Bouncy Castles, Inc.Название организационной единицы (например, раздел) []: Министерство водных горок.
Общее имя (например, полное доменное имя сервера или ВАШЕ имя) []: server_IP_address
Адрес электронной почты []: admin@your_domain.com
Оба файла, которые вы создали, будут помещены в соответствующие подкаталоги каталога / etc / ssl
.
Пока мы используем OpenSSL, мы должны также создать сильную группу Диффи-Хеллмана, которая будет использоваться для согласования с клиентами идеальной прямой секретности.
Мы можем сделать это, набрав:
- sudo openssl dhparam -out / etc / ssl / certs / dhparam.pem 2048
Это может занять несколько минут, но когда это будет сделано, у вас будет сильная группа DH по адресу /etc/ssl/certs/dhparam.pem
, которую мы сможем использовать в нашей конфигурации.
Шаг 2. Настройте Apache для использования SSL
Мы создали файлы ключей и сертификатов в каталоге / etc / ssl
. Теперь нам просто нужно изменить нашу конфигурацию Apache, чтобы воспользоваться этим.
Внесем несколько изменений в нашу конфигурацию:
- Мы создадим фрагмент конфигурации, чтобы указать надежные параметры SSL по умолчанию.
- Мы изменим включенный файл виртуального хоста SSL Apache, чтобы он указывал на наши сгенерированные сертификаты SSL.
- (рекомендуется) Мы изменим незашифрованный файл виртуального хоста для автоматического перенаправления запросов на зашифрованный виртуальный хост.
Когда мы закончим, у нас должна быть безопасная конфигурация SSL.
Создание фрагмента конфигурации Apache с настройками надежного шифрования
Сначала мы создадим фрагмент конфигурации Apache, чтобы определить некоторые настройки SSL.Это установит Apache с надежным набором шифров SSL и включит некоторые расширенные функции, которые помогут обеспечить безопасность нашего сервера. Установленные нами параметры могут использоваться любыми виртуальными хостами, поддерживающими SSL.
Создайте новый фрагмент в каталоге / etc / apache2 / conf-available
. Мы назовем файл ssl-params.conf
, чтобы прояснить его назначение:
- sudo nano /etc/apache2/conf-available/ssl-params.conf
Для безопасной настройки Apache SSL мы будем использовать рекомендации Реми ван Элста по Cipherli.ул. Этот сайт предназначен для предоставления простых в использовании настроек шифрования для популярного программного обеспечения. Вы можете узнать больше о его решениях относительно выбора Apache здесь.
Предлагаемые настройки на сайте, ссылка на который приведена выше, обеспечивают надежную защиту. Иногда это происходит за счет большей совместимости с клиентами. Если вам нужна поддержка старых клиентов, есть альтернативный список, к которому можно получить доступ, щелкнув ссылку на странице с надписью «Да, дайте мне набор шифров, который работает с устаревшим / старым программным обеспечением.”Этот список может быть заменен элементами, скопированными ниже.
Выбор используемой конфигурации во многом зависит от того, что вам нужно поддерживать. Оба они обеспечат большую безопасность.
Для наших целей мы можем полностью скопировать предоставленные настройки. Мы просто сделаем два небольших изменения.
Установите директиву SSLOpenSSLConfCmd DHParameters
, чтобы она указывала на файл Диффи-Хеллмана, который мы создали ранее. Также найдите время, чтобы прочитать о HTTP Strict Transport Security, или HSTS, и, в частности, о функции «предварительной загрузки». Предварительная загрузка HSTS обеспечивает повышенную безопасность, но может иметь далеко идущие последствия при случайном или неправильном включении. В этом руководстве мы не будем предварительно загружать настройки, но вы можете изменить их, если уверены, что понимаете последствия:
/etc/apache2/conf-available/ssl-params.conf
# с https://cipherli.st/
# и https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html
SSLCipherSuite EECDH + AESGCM: EDH + AESGCM: AES256 + EECDH: AES256 + EDH
SSLProtocol Все -SSLv2 -SSLv3
SSLHonorCipherOrder On
# На данный момент отключите предварительную загрузку HSTS.Вы можете использовать закомментированную строку заголовка, которая включает
# директиву "preload", если вы понимаете последствия.
#Header всегда устанавливает Strict-Transport-Security "max-age = 63072000; includeSubdomains; preload"
Заголовок всегда установлен Strict-Transport-Security «max-age = 63072000; includeSubdomains»
Заголовок всегда установлен X-Frame-Options DENY
Заголовок всегда установлен X-Content-Type-Options nosniff
# Требуется Apache> = 2. 4
SSLCompression выключен
SSLSessionTickets Off
SSLUseStapling на
SSLStaplingCache "shmcb: logs / stapling-cache (150000)"
SSLOpenSSLConfCmd DHParameters "/ etc / ssl / certs / dhparam.pem "
Сохраните и закройте файл, когда закончите.
Изменение файла виртуального хоста Apache SSL по умолчанию
Затем давайте изменим /etc/apache2/sites-available/default-ssl.conf
, файл виртуального хоста Apache SSL по умолчанию. Если вы используете другой файл блока сервера, замените его имя в приведенных ниже командах.
Прежде чем мы продолжим, давайте сделаем резервную копию исходного файла виртуального хоста SSL:
- sudo cp / etc / apache2 / sites-available / default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak
Теперь откройте файл виртуального хоста SSL, чтобы внести изменения:
- sudo nano /etc/apache2/sites-available/default-ssl. conf
Внутри, после удаления большей части комментариев, файл виртуального хоста по умолчанию должен выглядеть примерно так:
/etc/apache2/sites-available/default-ssl.conf
ServerAdmin веб-мастер @ localhost
DocumentRoot / var / www / html
ErrorLog $ {APACHE_LOG_DIR} / error.бревно
CustomLog $ {APACHE_LOG_DIR} /access.log объединены
SSLEngine включен
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLOptions + StdEnvVars
<Каталог / usr / lib / cgi-bin>
SSLOptions + StdEnvVars
# BrowserMatch "MSIE [2-6]" \
# nokeepalive ssl-unclean-shutdown \
# downgrade-1. 0 сила-реакция-1.0
Мы будем вносить небольшие изменения в файл. Мы установим обычные вещи, которые мы хотели бы настроить в файле виртуального хоста (адрес электронной почты ServerAdmin, имя сервера и т. Д.), Настроим директивы SSL, чтобы они указывали на наши файлы сертификата и ключей, и раскомментировали один раздел, который обеспечивает совместимость для более старых браузеры.
После внесения этих изменений ваш серверный блок должен выглядеть примерно так:
/ etc / apache2 / sites-available / default-ssl.conf
ServerAdmin [email protected]
ServerName server_domain_or_IP
DocumentRoot / var / www / html
ErrorLog $ {APACHE_LOG_DIR} /error.log
CustomLog $ {APACHE_LOG_DIR} /access.log объединены
SSLEngine включен
SSLCertificateFile /etc/ssl/certs/apache-selfsigned. crt
SSLCertificateKeyFile / etc / ssl / private / apache-selfsigned.ключ
SSLOptions + StdEnvVars
<Каталог / usr / lib / cgi-bin>
SSLOptions + StdEnvVars
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
Сохраните и закройте файл, когда закончите.
(рекомендуется) Измените незашифрованный файл виртуального хоста для перенаправления на HTTPS
В настоящее время сервер будет предоставлять как незашифрованный HTTP, так и зашифрованный HTTPS-трафик. Для большей безопасности рекомендуется в большинстве случаев автоматически перенаправлять HTTP на HTTPS. Если вы не хотите или не нуждаетесь в этой функции, можете пропустить этот раздел.
Чтобы настроить незашифрованный файл виртуального хоста для перенаправления всего трафика на шифрование SSL, мы можем открыть файл / etc / apache2 / sites-available / 000-default.conf
файл:
- sudo nano /etc/apache2/sites-available/000-default.conf
Внутри блоков конфигурации VirtualHost
нам просто нужно добавить директиву Redirect
, направляя весь трафик на SSL-версию сайта:
/etc/apache2/sites-available/000-default.conf
. . .
Перенаправить "/" "https: // your_domain_or_IP /"
.. .
Сохраните и закройте файл, когда закончите.
Шаг 3. Настройте брандмауэр
Если у вас включен брандмауэр ufw
, как рекомендовано в руководствах по предварительным требованиям, может потребоваться изменить настройки, чтобы разрешить трафик SSL. К счастью, Apache регистрирует несколько профилей с ufw
при установке.
Мы можем увидеть доступные профили, набрав:
Вы должны увидеть список вроде этого:
Выход
Доступные приложения:
Apache
Apache Full
Apache Secure
OpenSSH
Вы можете увидеть текущую настройку, набрав:
Если ранее вы разрешили только обычный HTTP-трафик, ваш результат может выглядеть следующим образом:
Выход
Статус: активен
К действию от
- ------ ----
OpenSSH РАЗРЕШИТЬ В любом месте
Apache РАЗРЕШИТЬ В любом месте
OpenSSH (v6) РАЗРЕШИТЬ В любом месте (v6)
Apache (v6) РАЗРЕШИТЬ В любом месте (v6)
Чтобы дополнительно пропустить HTTPS-трафик, мы можем разрешить профиль «Apache Full», а затем удалить избыточный профиль «Apache»:
- sudo ufw разрешить Apache Full
- sudo ufw удалить разрешить 'Apache'
Теперь ваш статус должен выглядеть так:
Выход
Статус: активен
К действию от
- ------ ----
OpenSSH РАЗРЕШИТЬ В любом месте
Apache Full ALLOW Anywhere
OpenSSH (v6) РАЗРЕШИТЬ В любом месте (v6)
Apache Full (v6) РАЗРЕШИТЬ В любом месте (v6)
Шаг 4.
Включите изменения в ApacheТеперь, когда мы внесли наши изменения и настроили наш брандмауэр, мы можем включить модули SSL и заголовков в Apache, включить наш виртуальный хост с поддержкой SSL и перезапустить Apache.
Мы можем включить mod_ssl
, модуль Apache SSL и mod_headers
, необходимые для некоторых настроек в нашем фрагменте SSL, с помощью команды a2enmod
:
- sudo a2enmod SSL
- sudo a2enmod заголовки
Затем мы можем включить наш виртуальный хост SSL с помощью команды a2ensite
:
- sudo a2ensite default-ssl
Нам также нужно будет включить наши ssl-params.conf
, чтобы прочитать значения, которые мы установили:
На этом этапе наш сайт и необходимые модули включены. Мы должны убедиться, что в наших файлах нет синтаксических ошибок. Мы можем сделать это, набрав:
- sudo apache2ctl configtest
Если все прошло успешно, вы получите следующий результат:
Выходные данные
AH00558: apache2: Не удалось надежно определить полное доменное имя сервера, используя 127.0.1.1. Установите глобальную директиву ServerName, чтобы подавить это сообщение.
Синтаксис ОК
Первая строка — это просто сообщение о том, что директива ServerName
не установлена глобально. Если вы хотите избавиться от этого сообщения, вы можете установить ServerName
на доменное имя или IP-адрес вашего сервера в /etc/apache2/apache2.conf
. Это необязательно, так как сообщение не причинит вреда.
Если ваш вывод содержит Syntax OK
, ваш файл конфигурации не содержит синтаксических ошибок.Мы можем безопасно перезапустить Apache для реализации наших изменений:
- sudo systemctl перезапустить apache2
Шаг 5.
Тестирование шифрованияТеперь мы готовы протестировать наш SSL-сервер.
Откройте веб-браузер и введите https: //
, а затем доменное имя или IP-адрес вашего сервера в адресной строке:
https: // server_domain_or_IP
Поскольку созданный нами сертификат не подписан одним из доверенных центров сертификации вашего браузера, вы, скорее всего, увидите пугающее предупреждение, подобное приведенному ниже:
Это ожидаемо и нормально.Нас интересует только аспект шифрования нашего сертификата, а не сторонняя проверка подлинности нашего хоста. Нажмите «РАСШИРЕННЫЙ», а затем предоставленную ссылку, чтобы в любом случае перейти на ваш хост:
Вы должны попасть на ваш сайт. Если вы посмотрите в адресную строку браузера, вы увидите замок со знаком «x» над ним. В данном случае это просто означает, что сертификат нельзя проверить. Он все еще шифрует ваше соединение.
Если вы настроили Apache для перенаправления HTTP на HTTPS, вы также можете проверить, правильно ли работает перенаправление:
http: // server_domain_or_IP
Если это приводит к тому же значку, это означает, что перенаправление сработало правильно.
Шаг 6. Переход на постоянное перенаправление
Если ваше перенаправление сработало правильно и вы уверены, что хотите разрешить только зашифрованный трафик, вам следует снова изменить незашифрованный виртуальный хост Apache, чтобы сделать перенаправление постоянным.
Снова откройте файл конфигурации серверного блока:
- sudo nano /etc/apache2/sites-available/000-default.conf
Найдите строку Redirect
, которую мы добавили ранее. Добавьте к этой строке постоянный
, который изменяет перенаправление с временного перенаправления 302 на постоянное перенаправление 301:
/ etc / apache2 / sites-available / 000-default.conf
. . .
Постоянное перенаправление "/" "https: // your_domain_or_IP /"
. . .
Сохраните и закройте файл.
Проверьте свою конфигурацию на наличие синтаксических ошибок:
- sudo apache2ctl configtest
Когда будете готовы, перезапустите Apache, чтобы сделать перенаправление постоянным:
- sudo systemctl перезапустить apache2
Заключение
Вы настроили сервер Apache для использования надежного шифрования для клиентских подключений. Это позволит вам безопасно обслуживать запросы и предотвратит чтение вашего трафика посторонними лицами.
Установка CSR и SSL (OpenSSL)
Создайте CSR с помощью OpenSSL и установите сертификат SSL на свой сервер Apache
Используйте инструкции на этой странице, чтобы использовать OpenSSL для создания запроса на подпись сертификата (CSR), а затем для установки сертификата SSL на сервере Apache.
Примечание о перезапуске: После установки сертификата SSL / TLS и настройки сервера для его использования необходимо перезапустить экземпляр Apache.
Инструкции для Ubuntu см. В разделе Сервер Ubuntu с Apache2: создание CSR и установка сертификата SSL (OpenSSL). Инструкции по другим ОС / платформе см. В разделе Создание CSR (запроса на подпись сертификата).
Вы можете использовать эти инструкции для создания OpenSSL CSR и установки всех типов SSL-сертификатов DigiCert на вашем сервере Apache: Стандартный SSL, EV SSL, Многодоменный SSL, EV Многодоменный SSL и Wildcard SSL.
Чтобы создать запрос на подпись сертификата (CSR), см. Apache: Создание CSR с помощью OpenSSL.
Для учебника на испанском посетите страницу Apache Crear CSR.
Чтобы установить сертификат SSL, см. Apache: установка и настройка сертификата SSL.
Посетите новые инструкции на испанском языке для Apache Instalar Certificado SSL.
I. Apache: создание CSR с помощью OpenSSL
Используйте инструкции в этом разделе, чтобы создать свои собственные команды оболочки для генерации CSR Apache с помощью OpenSSL.
Рекомендовано: Сэкономьте время.Используйте DigiCert OpenSSL CSR Wizard, чтобы сгенерировать команду OpenSSL для создания вашего Apache CSR. Просто заполните форму, нажмите Создать , а затем вставьте настроенную команду OpenSSL в свой терминал.
Как создать CSR для Apache с помощью OpenSSL
Если вы предпочитаете создавать собственные команды оболочки для генерации CSR Apache, следуйте приведенным ниже инструкциям.
Войдите на свой сервер через терминальный клиент (ssh).
Команда запуска
В командной строке введите следующую команду:
Примечание: Не забудьте заменить server именем вашего сервера.
openssl req –new –newkey rsa: 2048 –nodes –keyout server.key –out server.csr
Создать файлы
Теперь вы начали процесс создания следующих двух файлов:
- Файл закрытого ключа : используется для создания CSR и более поздних версий для защиты и проверки соединений с помощью сертификата.
- Файл запроса на подпись сертификата (CSR) : используется для заказа вашего сертификата SSL, а затем для шифрования сообщений, которые может расшифровать только соответствующий закрытый ключ.
Когда будет предложено ввести общее имя (доменное имя), введите полный домен (FQDN) для сайта, который вы собираетесь защищать.
Примечание. Если вы создаете CSR Apache для сертификата Wildcard, убедитесь, что ваше общее имя начинается со звездочки (например, * .example.com ).
При появлении запроса введите информацию об организации, начиная с географической информации.
Примечание: Возможно, вы уже установили информацию по умолчанию.
Теперь ваш файл OpenSSL .csr создан.
Закажите сертификат SSL / TLS
Открой .csr, который вы создали в текстовом редакторе.
Скопируйте текст, включая теги —— НАЧАТЬ НОВЫЙ ЗАПРОС СЕРТИФИКАТА —— и —— КОНЕЦ НОВОГО ЗАПРОСА СЕРТИФИКАТА ——, и вставьте его в форму заказа DigiCert.
Сохранить закрытый ключ
Сохраните (сделайте резервную копию) сгенерированный. ключевой файл. Он понадобится вам позже, чтобы установить сертификат SSL.
Установить сертификат
После того, как вы получили сертификат SSL от DigiCert, вы можете установить его на свой сервер.
II.Apache: установка и настройка сертификата SSL
Если вам все еще нужно создать запрос на подпись сертификата (CSR) и заказать сертификат, см. Apache: Создание CSR с помощью OpenSSL.
После того, как мы проверили и выпустили ваш сертификат SSL, вы можете установить его на свой сервер Apache (где был сгенерирован CSR) и настроить сервер для использования сертификата.
Как установить и настроить сертификат SSL на сервере Apache
Скопируйте файлы сертификатов на свой сервер.
Войдите в свою учетную запись DigiCert и загрузите файлы промежуточного (DigiCertCA.crt) и основного сертификата ( your_domain_name.crt ).
Скопируйте эти файлы вместе с файлом .key, созданным при создании CSR, в каталог на сервере, где вы храните файлы сертификата и ключей.
Примечание: Сделайте их доступными для чтения только root, чтобы повысить безопасность.
Найдите файл конфигурации Apache (httpd. conf), который нужно отредактировать.
Расположение и имя файла конфигурации могут отличаться от сервера к серверу, особенно если вы используете специальный интерфейс для управления конфигурацией сервера.
Основной файл конфигурации Apache обычно называется httpd.conf или apache2.conf . Возможные места для этого файла: / etc / httpd / или / etc / apache2 / .Полный список макетов установки по умолчанию для Apache HTTPD в различных операционных системах и дистрибутивах см. В Httpd Wiki — DistrosDefaultLayout.
Часто конфигурация сертификата SSL находится в блоке
Один из способов найти конфигурацию SSL в дистрибутивах Linux — это выполнить поиск с помощью grep, как показано в примере ниже.
Выполните следующую команду:
grep -i -r "SSLCertificateFile" / etc / httpd /
Примечание: Обязательно замените / etc / httpd / базовым каталогом для вашей установки Apache.
Определите блок SSL
, который необходимо настроить. Если ваш сайт должен быть доступен как через защищенное (https), так и через незащищенное (http) соединение, вам понадобится виртуальный хост для каждого типа соединения. Сделайте копию существующего незащищенного виртуального хоста и настройте его для SSL, как описано в шаге 4.
Если к вашему сайту требуется только безопасный доступ, настройте существующий виртуальный хост для SSL, как описано в шаге 4.
Настройте блок
для сайта с поддержкой SSL Ниже приведен очень простой пример виртуального хоста, настроенного для SSL.Части, указанные синим цветом, являются частями, которые необходимо добавить для настройки SSL.
DocumentRoot / var / www / html2 ServerName www.yourdomain.com SSLEngine включен SSLCertificateFile /path/to/your_domain_name.crt SSLCertificateKeyFile /path/to/your_private.key SSLCertificateChainFile /path/to/DigiCertCA.crt Обязательно измените имена файлов, чтобы они соответствовали вашим файлам сертификатов.
SSLCertificateFile — это ваш файл сертификата DigiCert (например, your_domain_name.crt ).
SSLCertificateKeyFile — это файл. ключевой файл, созданный при создании CSR (например, your_private.key ).
SSLCertificateChainFile — это промежуточный файл сертификата DigiCert (например, DigiCertCA.crt ).
Примечание: Если директива SSLCertificateChainFile не работает, попробуйте вместо нее использовать директиву SSLCACertificateFile.
Перед перезапуском проверьте файл конфигурации Apache.
Перед перезапуском Apache рекомендуется проверить файл конфигурации Apache на наличие ошибок.
Внимание: Apache не запустится снова, если в ваших файлах конфигурации есть синтаксические ошибки.
Выполните следующую команду, чтобы проверить файл конфигурации (в некоторых системах это apache2ctl ):
конфигурация apachectl
Перезапустите Apache.
Вы можете использовать команды apachectl для остановки и запуска Apache с поддержкой SSL.
apachectl stop начало apachectl
Заметки о перезапуске:
Если Apache не перезагружается с поддержкой SSL, попробуйте использовать apachectl startssl вместо apachectl start . Если поддержка SSL загружается только с apachectl startssl , мы рекомендуем вам настроить конфигурацию запуска apache, включив поддержку SSL в обычную команду apachectl start . В противном случае вашему серверу может потребоваться вручную перезапустить Apache с помощью apachectl startssl в случае перезагрузки сервера. Обычно это включает удаление тегов
и , которые содержат вашу конфигурацию SSL.Поздравляю! Вы успешно установили свой сертификат SSL.
Проверка установки сертификата SSL / TLS
Тест браузера
Для достижения наилучших результатов обязательно сначала закройте веб-браузер, а затем снова запустите его.
Посетите свой сайт с защищенным URL-адресом https (т.например, перейдите по адресу https://www.example.com , а не http://www.example.com ).
Обязательно протестируйте свой сайт не только с помощью Internet Explorer. IE загружает недостающие промежуточные сертификаты; тогда как другие браузеры выдают ошибку, если все сертификаты в цепочке сертификатов не установлены должным образом.
DigiCert ® Инструмент диагностики установки SSL
Если ваш сайт общедоступен, используйте наш Тестер сертификатов сервера для проверки установки сертификата SSL / TLS; он обнаруживает типичные проблемы при установке.
Устранение неполадок
Если ваш веб-сайт общедоступен, наш инструмент проверки сертификатов SSL может помочь вам диагностировать распространенные проблемы.
Если вы получили предупреждение «не доверенный», просмотрите сведения о сертификате, чтобы убедиться, что это тот сертификат, который вы ожидаете.Проверьте поля Subject , Issuer и Valid To .
Если это тот сертификат, который вы ожидаете, и сертификат SSL выпущен DigiCert, значит, ваш SSLCertificateChainFile настроен неправильно.
Если вы не видите ожидаемый сертификат, возможно, у вас есть еще один блок SSL
Виртуальные хосты на основе имен невозможны с https, если вы не используете один и тот же сертификат для всех виртуальных хостов (например, — подстановочный знак или многодоменный SSL-сертификат ).
Это не ограничение Apache, а ограничение протокола SSL. Apache должен отправить сертификат во время подтверждения SSL, прежде чем он получит HTTP-запрос, содержащий заголовок Host.Следовательно, Apache всегда отправляет SSLCertificateFile из первого блока
Чтобы получить помощь в переносе сертификатов на дополнительные серверы или между серверными платформами, см. Наши инструкции по экспорту OpenSSL.
Если вам нужно отключить совместимость SSL версии 2, чтобы соответствовать требованиям PCI, добавьте следующую директиву в файл конфигурации Apache:
SSLCipherSuite HIGH: + MEDIUM:! SSLv2:! EXP:! ADH:! ANULL:! ENULL:! NULL
Если директива уже существует, вам может потребоваться изменить ее, чтобы отключить SSL версии 2.
Инструкции по исправлению распространенных ошибок и дополнительные советы см. В разделе Устранение ошибок SSL-сертификата Apache.
Конфигурация сервера Apache
Для получения информации о конфигурациях сервера Apache, которые могут усилить вашу среду SSL, см. Следующие ресурсы:
Как настроить Apache HTTP с сертификатом SSL?
Защитим Apache с помощью сертификата SSL / TLS.
После внедрения сертификата настроенный домен / IP-адрес будет доступен через HTTPS.
Приступим.
На высоком уровне мы сделаем следующее.
- Скомпилируйте Apache HTTP 2.4.5 с модулем SSL
- Получить сертификат SSL
- Настройте Apache для поддержки SSL
Установить Apache с SSL из исходного кода
Для настройки SSL Apache HTTP должен быть скомпилирован с mod_ssl. Я буду использовать виртуальную машину CentOS 7 от Digital Ocean, чтобы продемонстрировать это.
- Войдите на сервер Linux с правами root и загрузите последнюю версию Apache
wget http://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz.
Примечание : последнюю версию можно найти здесь.
- Извлечь командой gunzip
gunzip -c httpd-2. 4.25.tar.gz | tar xvf -
- У вас появится новая папка « httpd-2.4.25 »
- Войдите внутрь и выполните следующую команду настройки
./ configure --enable-ssl –-enable-so
Примечание : Если вы делаете это на совершенно новом сервере, у вас могут возникнуть проблемы, связанные с APR, PCRE, OpenSSL, и вы можете обратиться к руководству по устранению неполадок.
Убедитесь, что вы не получили никаких ошибок при выполнении указанной выше команды configure, а затем выполните установку с помощью команд make.
марка
сделать установку
Как обычно, убедитесь в отсутствии ошибок в приведенных выше командах. Это означает, что у вас установлен веб-сервер Apache с поддержкой SSL.
Получение сертификата SSL
Существует несколько способов создания и получения сертификата SSL, подписанного центром сертификации.
Если вы хотите внедрить SSL на веб-сервере интрасети, то в большинстве организаций есть внутренняя группа по выдаче сертификатов, так что вам нужно проконсультироваться с ними. Но вам все равно нужно сгенерировать CSR (запрос на подпись сертификата), и вы можете сделать это с помощью OpenSSL.
Однако, если вы хотите защитить URL с выходом в Интернет, вы можете купить сертификат у VeriSign, GoDaddy, Namecheap и т. Д.или получите БЕСПЛАТНЫЙ сертификат от Let’s Encrypt.
Let’s Encrypt — это совместный проект Linux Foundation, который предлагает БЕСПЛАТНЫХ сертификатов SSL / TLS . Я воспользуюсь Let’s Encrypt, чтобы получить один сертификат для моего домена — Chandan.io
Существует несколько способов создания CSR, но самый простой , который я нашел, — это использование онлайн-инструмента «SSL бесплатно».
Введите URL-адрес, который вы хотите защитить.
Подтвердите право собственности на домен одним из перечисленных способов и загрузите файлы сертификата домена.
Вы получите три файла, которые мы будем использовать в дальнейшем для настройки веб-сервера Apache.
- ключ — это ваш ключевой файл, и его нельзя раскрывать никому.
- Certificate — актуальный SSL-сертификат для вашего домена
- Ca_bundle — корневой / промежуточный сертификат подписывающей стороны
Перенесите загруженный файл на веб-сервер. Вскоре они нам понадобятся.
Конфигурация Apache SSL
И последний шаг — настроить Apache, чтобы он мог обслуживать запросы по HTTPS.
- Войдите на веб-сервер Apache
- Сделайте резервную копию файла httpd.conf (расположение по умолчанию / usr / local / apache2 / conf /)
- Откройте файл с помощью редактора vi и убедитесь, что модуль mod_ssl и httpd-ssl.conf существуют и не прокомментированы
LoadModule модули ssl_module / mod_ssl.so
Включите conf / extra / httpd-ssl.conf
Мы будем использовать файл httpd-ssl.conf для настройки деталей сертификата. Чтобы убедиться в наличии правильных параметров, необходимо выполнить следующие действия.
- SSLCertificateFile — Путь к файлу CRT сертификата, который вы скачали ранее
- SSLCertificateKeyFile — путь к файлу ключей private.a
- SSLCertificateChainFile — путь к файлу ca_bundle.crt
Совет : вы можете создать новую папку с именем «ssl» и хранить в ней все файлы, связанные с сертификатом.
- При необходимости сделайте резервную копию и используйте редактор vi для изменения файла.
SSLCertificateFile "/ usr / local / apache2 / conf / ssl / certificate.crt "
SSLCertificateChainFile "/usr/local/apache2/conf/ssl/ca_bundle.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/private.key"
Затем вам необходимо настроить директиву « ServerName ». Обычно это ваш домен или URL-имя
. Имя сервера chandan.io
- Сохраните файл и перезапустите веб-сервер Apache
компакт-диск / usr / local / apache2 / bin
. /apachectl stop
./apachectl start
И, наконец, вы должны убедиться, что ваш домен сопоставлен с недавно настроенным IP-адресом веб-сервера.После этого попробуйте получить доступ к своему домену с помощью https.
Как видите, Chandan.io доступен по https с настроенным мной сертификатом.
Вышеупомянутые шаги необходимы для настройки сертификата SSL, и вы должны настроить SSL дальше, чтобы укрепить и защитить, что я объяснил здесь. Перед запуском вы также можете протестировать SSL / TLS своего веб-сервера, чтобы убедиться, что он не подвержен распространенным уязвимостям безопасности.
Надеюсь, это дает вам представление о том, как реализовать сертификат SSL на вашем веб-сервере Apache, чтобы URL-адрес был доступен через HTTPS.
Как включить https в Apache CentOS
Для некоторых предприятий обслуживание веб-сайтов через HTTPS является обязательным. Вот как настроить безопасный http Apache на CentOS.
Изображение: Джек Уоллен
Если вы начинаете переносить свои веб-серверы на Linux (или уже сделали это) и хотите обслуживать эти страницы по защищенному http (также известному как https), вам нужно знать, как это сделать. .Хотя https не гарантирует безопасность вашего веб-сервера, это хороший первый шаг в этом процессе. Настроить Apache для https в CentOS несложно, но нужно выполнить несколько шагов. Давайте рассмотрим процесс, чтобы вы могли более уверенно обслуживать свои страницы для своих клиентов.
В этом пошаговом руководстве будет использоваться CentOS 7 и работать с самозаверяющим сертификатом. Самозаверяющий вариант отлично подходит для личных сайтов или в целях тестирования. Для официального развертывания бизнеса вам нужно будет приобрести сертификат SSL в уважаемой компании (например, Digicert, Network Solutions или GlobalSign). Я также предполагаю, что у вас уже работает Apache на сервере.
С учетом сказанного, приступим к процессу.
Установка и использование OpenSSL
Первым шагом в процессе является установка OpenSSL и создание сертификата, который будет использоваться. Чтобы установить OpenSSL, откройте окно терминала и введите команду:
sudo yum install mod_ssl openssl
Выполнение вышеуказанной команды приведет к обнаружению всех необходимых зависимостей ( Рисунок A ).
Рисунок A
Установить OpenSSL на CentOS можно с помощью одной команды.
Теперь мы генерируем ключ SSL с помощью следующих команд:
Сгенерировать закрытый ключ
sudo openssl genrsa -out ca.key 2048
Создать CSR
sudo openssl req -new -key ca.key -out ca.csr
Создать самоподписанный ключ
sudo openssl x509 -req -days 365 -in ca. csr -signkey ca.key -out ca.crt
Теперь нам нужно скопировать вновь сгенерированные файлы в правильные места с помощью следующих команд:
sudo cp ca.crt / etc / pki / tls / certs sudo cp ca.key /etc/pki/tls/private/ca.key sudo cp ca.csr /etc/pki/tls/private/ca.csr
Когда вы вводите команду для создания CSR, вам будет задан ряд вопросов для ключа (например, название страны, штат или провинция, населенный пункт, название организации, организационная единица, общее имя, адрес электронной почты и т. Д.). OpenSSL также потребует от вас ввести пароль проверки для CSR.
Следующий шаг требует редактирования файла /etc/httpd/conf.d/ssl.conf . Откройте этот файл для редактирования, найдите и измените следующие строки:
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
изменяется на:
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost. key
изменяется на:
SSLCertificateKeyFile / etc / pki / tls / private / ca.ключ
Наконец, перезапустите демон Apache с помощью команды:
sudo systemctl restart httpd
Создайте виртуальный хост
Давайте создадим виртуальный хост, который использует SSL. Для этого создадим необходимые каталоги с помощью следующих команд:
sudo mkdir -p / var / www / html / adorkable Sudo mkdir -p / etc / httpd / sites-available Sudo mkdir -p / etc / httpd / с поддержкой сайтов
Я использую в качестве примера «adorkable». Вы можете использовать любое имя, которое вам нравится / нужно.
Затем мы должны отредактировать файл httpd.conf, чтобы он узнал о каталоге с поддержкой сайтов. Для этого откройте /etc/httpd/conf/httpd.conf и добавьте следующую строку в конец файла:
IncludeOptional sites-enabled / *. Conf
Сохраните и закройте этот файл.
Теперь нам нужно создать наш файл виртуального хоста. Мы сделаем это в файле /etc/httpd/sites-available/adorkable.conf . Опять же, замените adorkable.conf именем вашего виртуального хоста.В этот файл мы добавим следующее содержимое (при необходимости настройте):
Адрес электронной почты администратора сервера @ адрес DocumentRoot "/ var / www / html / adorkable /" Имя сервера AdorkableDesigns ServerAlias adorkable ErrorLog /var/www/html/adorkable/error.log <Каталог "/ var / www / html / adorkable /"> DirectoryIndex index.html index.php Параметры FollowSymLinks AllowOverride All Требовать все предоставлено
Сохраните и закройте этот файл.
Чтобы Apache узнал о новом виртуальном хосте, мы должны создать символическую ссылку от сайтов, доступных к сайтам, с поддержкой, с помощью команды:
sudo ln -s / etc / httpd / sites-available / adorkable.conf /etc/httpd/sites-enabled/adorkable.conf
Перезапустите Apache с помощью команды:
sudo systemctl restart httpd
Теперь ваш виртуальный хост должен быть виден серверу. Все, что вам нужно сделать, это добавить контент в каталог / var / www / html / adorkable , и все готово.
Быстрый тест
Вот и все, что нужно для настройки https на Apache с CentOS. Вы можете провести быструю проверку, указав в браузере адрес https: // IP_OF_SERVER. Вы должны получить предупреждение системы безопасности (поскольку мы используем самозаверяющий сертификат. Хорошо, это предупреждение, и Apache будет обслуживать ваш сайт по https. Укажите в браузере https: // IP_OF_SERVER / adorkable, чтобы посетить вновь созданный виртуальный хост. В зависимости от на каком типе сайта вы обслуживаете, вам, возможно, придется проделать небольшую дополнительную работу с этой конкретной платформой.
Easy peasy https
Вы официально настроили свой сервер Apache для работы с https. Как я уже упоминал ранее, если вы планируете использовать его для общедоступных бизнес-сайтов, я настоятельно рекомендую приобрести сертификаты SSL у надежного дилера (или с помощью Let’s Encrypt).
См .: Как установить и использовать Let’s Encrypt на сервере Ubuntu для обеспечения безопасности SSL (TechRepublic)
Информационный бюллетень для инсайдеров Cybersecurity
Усильте защиту ИТ-безопасности вашей организации, следя за последними новостями, решениями и передовыми практиками в области кибербезопасности.Доставка по вторникам и четвергам
Зарегистрироваться СегодняСм. Также
Как установить сертификат SSL / TLS в Apache Open SSL
Следующие инструкции проведут вас через процесс установки SSL на Apache OpenSSL. Если у вас более одного сервера или устройства, вам нужно будет установить сертификат на каждый сервер или устройство, которое необходимо защитить. Если вы все еще не сгенерировали свой сертификат и не завершили процесс проверки, ознакомьтесь с нашими Инструкциями по созданию CSR, прежде чем выполнять следующие шаги.
Что вам понадобится
1. Сертификат вашего сервера
Это сертификат, который вы получили от ЦС для своего домена. Возможно, вы получили это по электронной почте. Если нет, вы можете загрузить его, посетив панель управления своей учетной записью и нажав на свой заказ.
2. Ваши промежуточные сертификаты
Эти файлы позволяют устройствам, подключенным к вашему серверу, идентифицировать выдающий ЦС. Таких сертификатов может быть несколько. Если вы получили свой сертификат в ZIP-папке, он также должен содержать промежуточные сертификаты, которые иногда называют пакетом CA. Если нет, загрузите соответствующий пакет CA для своего сертификата.
3. Ваш закрытый ключ
Этот файл должен быть на вашем сервере или у вас, если вы сгенерировали CSR с помощью бесплатного инструмента-генератора.На некоторых платформах, таких как Microsoft IIS, закрытый ключ не сразу виден вам, но сервер отслеживает его.
Примечание : Вышеупомянутые файлы должны быть сохранены в каталоге сервера, где хранятся все файлы сертификатов / ключей.
Инструкции по установке
1. Найдите файл конфигурации apache для редактирования
Основной файл конфигурации обычно называется httpd.conf или apache2.conf и находится через / etc / httpd или / etc / apache2 /.
Примечание : файл конфигурации SSL может находиться в блоке
2. Настроить файл и ввести команды
Настройте файл httpd. conf и введите следующие команды на своем VirtualHost для успешного включения SSL:
DocumentRoot / var / www / html2 ServerName www.yourdomain.com SSLEngine включен SSLCertificateFile /path/to/your_domain_name.crt SSLCertificateKeyFile /path/to/your_private.key SSLCertificateChainFile /path/to/cabundle.crt
Примечание : Если вам нужно, чтобы сайт загружался через https и http, создайте еще один виртуальный хост для http. Вы можете просто скопировать существующий файл конфигурации, прежде чем делать что-либо на этом этапе.
3. Запустите команду test
Проверьте свой новый файл конфигурации, выполнив следующую команду: apachectl configtest
4. Перезапустите Apache
. В случае успешного тестирования перезапустите Apache, выполнив следующие команды: apachectl stop
apachectl start
Примечание: Вас могут попросить ввести пароль, который вы создали с помощью ключа RSA. Если вы не хотите, чтобы вас просили ввести пароль, вам нужно будет заново сгенерировать файл ключа RSA.
Поздравляем! Вы успешно установили свой сертификат SSL! Чтобы проверить свою работу, посетите веб-сайт в своем браузере по адресу https: //yourdomain.tld и просмотрите информацию о сертификате / сайте, чтобы узнать, правильно ли работает HTTPS / SSL. Помните, что вам может потребоваться перезагрузить сервер, чтобы изменения вступили в силу.
Для более тщательной проверки конфигурации вашего сервера воспользуйтесь нашим инструментом проверки SSL или обратитесь в наш отдел по работе с клиентами за дополнительной помощью.
Redirect HTTP to HTTPS в Apache
HTTP-сервер Apache — один из самых популярных веб-серверов в мире. Это кроссплатформенный HTTP-сервер с открытым исходным кодом, который обслуживает большую часть веб-сайтов в Интернете. Apache предоставляет множество мощных функций, которые можно расширить с помощью дополнительных модулей.
Если вы владелец веб-сайта или системный администратор, скорее всего, вы регулярно имеете дело с Apache. Одна из наиболее распространенных задач, которую вы, вероятно, будете выполнять, — это перенаправление HTTP-трафика на защищенную (HTTPS) версию вашего веб-сайта.
В отличие от HTTP, где запросы и ответы отправляются и возвращаются в виде открытого текста, HTTPS использует TLS / SSL для шифрования связи между клиентом и сервером.
Использование HTTPS по сравнению с HTTP дает множество преимуществ, например:
- Все данные шифруются в обоих направлениях. В результате конфиденциальная информация не может быть прочитана в случае перехвата.
- Google Chrome и все другие популярные браузеры отметят ваш сайт как безопасный.
- HTTPS позволяет использовать протокол HTTP / 2, что значительно повышает производительность сайта.
- Google отдает предпочтение HTTPS-сайтам. Ваш сайт будет лучше ранжироваться, если обслуживается через HTTPS.
В этом руководстве рассказывается, как перенаправить HTTP-трафик на HTTPS в Apache.
Есть несколько способов перенаправления на HTTPS в Apache. Если у вас есть root-доступ к серверу Linux, на котором работает Apache, предпочтительным способом является настройка перенаправления в файле конфигурации виртуального хоста домена. В противном случае вы можете настроить перенаправление в файле .htaccess
домена.
Некоторые панели управления, такие как cPanel, позволяют принудительно перенаправлять HTTPS несколькими щелчками мыши.
Перенаправление HTTP на HTTPS с использованием виртуального хоста #
Виртуальные хосты Apache определяет настройки одного или нескольких доменов, размещенных на сервере. В директиве виртуального хоста вы можете указать корень документа сайта (каталог, содержащий файлы веб-сайта), создать отдельную политику безопасности для каждого сайта, использовать разные сертификаты SSL, настроить перенаправление и многое другое.
Обычно, когда сертификат SSL установлен в домене, у вас будет две директивы виртуального хоста для этого домена.Первый для HTTP-версии сайта на порту 80, а другой для HTTPS-версии на порту 443.
В дистрибутивах на основе Red Hat, таких как CentOS и Fedora, файлы виртуальных хостов хранятся в каталоге / etc / httpd / conf.d
. В Debian и его производных, таких как Ubuntu, файлы хранятся в каталоге / etc / apache2 / sites-available
.
Чтобы перенаправить веб-сайт на HTTPS, используйте директиву Redirect
, как показано в примере ниже:
Пример ServerName.com
ServerAlias www.example.com
Перенаправление постоянное / https://example.com/
ServerName example.com
ServerAlias www.example.com
Протоколы h3 http / 1.1
# Конфигурация SSL
# Другая конфигурация Apache
Поясним код. Мы используем две директивы виртуального хоста: одну для HTTP и одну для HTTPS-версии сайта.
-
VirtualHost *: 80
— Сервер Apache прослушивает входящие соединения на порту 80 (HTTP) для указанного домена. -
VirtualHost *: 443
— Сервер Apache прослушивает входящие соединения на порту 443 (HTTPS) для указанного домена.
Директивы ServerName
и ServerAlias
определяют доменные имена виртуального хоста. Убедитесь, что вы заменили его на свое доменное имя.
Выделенная строка, Redirect постоянный / https://example.com/
внутри виртуального HTTP-хоста, перенаправляет трафик на HTTPS-версию сайта.
Обычно вы также хотите перенаправить HTTPS-версию сайта с www на версию без www или наоборот. Вот пример конфигурации:
ServerName example.com
ServerAlias www.example.com
Перенаправление постоянное / https://example.com/
ServerName example.com
ServerAlias www.example. com
Протоколы h3 http / 1.1
<Если "% {HTTP_HOST} == 'www.example.com'">
Перенаправление постоянное / https: // example.com /
# Конфигурация SSL
# Другая конфигурация Apache
Код внутри виртуального хоста HTTPS (выделенные строки) проверяет, содержит ли заголовок запроса домен www и перенаправляет на версию без www.
Каждый раз, когда вы вносите изменения в файлы конфигурации, вам необходимо перезапустить или перезагрузить службу Apache, чтобы изменения вступили в силу:
Перенаправить HTTP на HTTPS, используя
.htaccess
# .htaccess
— это файл конфигурации для каждого каталога веб-сервера Apache. Этот файл можно использовать для определения того, как Apache обслуживает файлы из каталога, в котором они размещены, а также для включения / отключения дополнительных функций.
Обычно файл .htaccess
помещается в корневой каталог домена, но вы можете иметь другие файлы .