Разное

Apache https: wiki:apache_d0_b8_https | Русскоязычная документация по Ubuntu

13.05.2020

Содержание

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 с помощью команды:

a2enmod ssl.

Чтобы установить SSL:

  1. 1.

    Создайте на вашем сервере в каталоге /etc/ssl/ файлы domain_name.crt, private.key и chain.crt со следующим содержимым:

    • domain_name.crt — сам сертификат;
    • private.key — приватный ключ;
    • chain.crt — цепочка сертификатов, которая содержит сначала промежуточный сертификат и следом за ним корневой (с новой строки без пробелов и пустых строк).
  2. 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. 3.

    Проверьте конфигурацию Apache до перезапуска командой: apachectl configtest

  4. 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 следующий:

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

grep -i -r «SSLCertificateFile» /etc/httpd/

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

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

<VirtualHost 192.168.0.1:

443>

DocumentRoot /var/www/leader_site

ServerName www.leader_site.com

SSLEngine on

SSLCertificateFile /etc/ssl/crt/bazov_cert.crt

SSLCertificateKeyFile /etc/ssl/crt/private.key

SSLCertificateChainFile /etc/ssl/crt/promejut_cert.crt

</VirtualHost>

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

apachectl configtest

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

apachectl restart

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

apachectl stop

apachectl start

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


Настройка 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 — цепочка ключей
Основными являются приватный ключи и ключ центра, цепочки ключей может не быть, но чаще всего он идет в комплекте. Установите на приватный ключ права на чтение только для root
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, для https443.

После того как посетитель сайта укажет доменное имя в адресной строке, браузер попытается осуществить соединение к порту 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>

Записываем файл httpd. conf

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>

Вместо адреса demo.soft.ru замените на свой сайт или IP-адрес, а можно вообще поставить звездочку (*) и будет *:443 (это означает, что сработает для всех запросов). Ну и если у вас есть свои ключи, и вы их не генерировали сами, то переименуйте ssl.cert и ssl.key

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, чтобы воспользоваться их преимуществами.

Внесем несколько небольших изменений в нашу конфигурацию:

  1. Создадим сниппет конфигурации, чтобы задать надежные параметры SSL по умолчанию.
  2. Мы изменим входящий в комплект файл виртуального хоста SSL Apache, чтобы он указывал на сгенерированные нами сертификаты SSL.
  3. (Рекомендуется) Мы изменим незашифрованный файл виртуального хоста, чтобы он автоматически перенаправлял запросы на шифрованный виртуальный хост.

После завершения настройки мы получим защищенную конфигурацию 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.так

Слушайте 443

    ServerName 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, чтобы воспользоваться этим.

Внесем несколько изменений в нашу конфигурацию:

  1. Мы создадим фрагмент конфигурации, чтобы указать надежные параметры SSL по умолчанию.
  2. Мы изменим включенный файл виртуального хоста SSL Apache, чтобы он указывал на наши сгенерированные сертификаты SSL.
  3. (рекомендуется) Мы изменим незашифрованный файл виртуального хоста для автоматического перенаправления запросов на зашифрованный виртуальный хост.

Когда мы закончим, у нас должна быть безопасная конфигурация 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.

  1. Чтобы создать запрос на подпись сертификата (CSR), см. Apache: Создание CSR с помощью OpenSSL.

    Для учебника на испанском посетите страницу Apache Crear CSR.

  2. Чтобы установить сертификат 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, следуйте приведенным ниже инструкциям.

  1. Войдите на свой сервер через терминальный клиент (ssh).

  2. Команда запуска

    В командной строке введите следующую команду:

    Примечание: Не забудьте заменить server именем вашего сервера.

       openssl req –new –newkey rsa: 2048 –nodes –keyout server.key –out server.csr 
      

  3. Создать файлы

    1. Теперь вы начали процесс создания следующих двух файлов:

      • Файл закрытого ключа : используется для создания CSR и более поздних версий для защиты и проверки соединений с помощью сертификата.
      • Файл запроса на подпись сертификата (CSR) : используется для заказа вашего сертификата SSL, а затем для шифрования сообщений, которые может расшифровать только соответствующий закрытый ключ.
    2. Когда будет предложено ввести общее имя (доменное имя), введите полный домен (FQDN) для сайта, который вы собираетесь защищать.

      Примечание. Если вы создаете CSR Apache для сертификата Wildcard, убедитесь, что ваше общее имя начинается со звездочки (например, * .example.com ).

    3. При появлении запроса введите информацию об организации, начиная с географической информации.

      Примечание: Возможно, вы уже установили информацию по умолчанию.

    4. Теперь ваш файл OpenSSL .csr создан.

  4. Закажите сертификат SSL / TLS

    1. Открой .csr, который вы создали в текстовом редакторе.

    2. Скопируйте текст, включая теги —— НАЧАТЬ НОВЫЙ ЗАПРОС СЕРТИФИКАТА —— и —— КОНЕЦ НОВОГО ЗАПРОСА СЕРТИФИКАТА ——, и вставьте его в форму заказа DigiCert.

  5. Сохранить закрытый ключ

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

  6. Установить сертификат

    После того, как вы получили сертификат SSL от DigiCert, вы можете установить его на свой сервер.

II.Apache: установка и настройка сертификата SSL

Если вам все еще нужно создать запрос на подпись сертификата (CSR) и заказать сертификат, см. Apache: Создание CSR с помощью OpenSSL.

После того, как мы проверили и выпустили ваш сертификат SSL, вы можете установить его на свой сервер Apache (где был сгенерирован CSR) и настроить сервер для использования сертификата.

Как установить и настроить сертификат SSL на сервере Apache

  1. Скопируйте файлы сертификатов на свой сервер.

    1. Войдите в свою учетную запись DigiCert и загрузите файлы промежуточного (DigiCertCA.crt) и основного сертификата ( your_domain_name.crt ).

    2. Скопируйте эти файлы вместе с файлом .key, созданным при создании CSR, в каталог на сервере, где вы храните файлы сертификата и ключей.

      Примечание: Сделайте их доступными для чтения только root, чтобы повысить безопасность.

  2. Найдите файл конфигурации Apache (httpd. conf), который нужно отредактировать.

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

    • Основной файл конфигурации Apache обычно называется httpd.conf или apache2.conf . Возможные места для этого файла: / etc / httpd / или / etc / apache2 / .Полный список макетов установки по умолчанию для Apache HTTPD в различных операционных системах и дистрибутивах см. В Httpd Wiki — DistrosDefaultLayout.

    • Часто конфигурация сертификата SSL находится в блоке в другом файле конфигурации. Файлы конфигурации могут находиться в каталоге, например, / etc / httpd / vhosts.d / , / etc / httpd / sites / или в файле с именем httpd-ssl.conf .

    Один из способов найти конфигурацию SSL в дистрибутивах Linux — это выполнить поиск с помощью grep, как показано в примере ниже.

    Выполните следующую команду:

       grep -i -r "SSLCertificateFile" / etc / httpd / 
      

    Примечание: Обязательно замените / etc / httpd / базовым каталогом для вашей установки Apache.

  3. Определите блок SSL , который необходимо настроить.

    Если ваш сайт должен быть доступен как через защищенное (https), так и через незащищенное (http) соединение, вам понадобится виртуальный хост для каждого типа соединения. Сделайте копию существующего незащищенного виртуального хоста и настройте его для SSL, как описано в шаге 4.

    Если к вашему сайту требуется только безопасный доступ, настройте существующий виртуальный хост для SSL, как описано в шаге 4.

  4. Настройте блок для сайта с поддержкой SSL

    1. Ниже приведен очень простой пример виртуального хоста, настроенного для 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
             
    2. Обязательно измените имена файлов, чтобы они соответствовали вашим файлам сертификатов.

      • SSLCertificateFile — это ваш файл сертификата DigiCert (например, your_domain_name.crt ).

      • SSLCertificateKeyFile — это файл. ключевой файл, созданный при создании CSR (например, your_private.key ).

      • SSLCertificateChainFile — это промежуточный файл сертификата DigiCert (например, DigiCertCA.crt ).

        Примечание: Если директива SSLCertificateChainFile не работает, попробуйте вместо нее использовать директиву SSLCACertificateFile.

  5. Перед перезапуском проверьте файл конфигурации Apache.

    Перед перезапуском Apache рекомендуется проверить файл конфигурации Apache на наличие ошибок.

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

    Выполните следующую команду, чтобы проверить файл конфигурации (в некоторых системах это apache2ctl ):

       конфигурация apachectl   
  6. Перезапустите Apache.

    Вы можете использовать команды apachectl для остановки и запуска Apache с поддержкой SSL.

       apachectl stop 
      начало apachectl   

    Заметки о перезапуске:

    Если Apache не перезагружается с поддержкой SSL, попробуйте использовать apachectl startssl вместо apachectl start . Если поддержка SSL загружается только с apachectl startssl , мы рекомендуем вам настроить конфигурацию запуска apache, включив поддержку SSL в обычную команду apachectl start . В противном случае вашему серверу может потребоваться вручную перезапустить Apache с помощью apachectl startssl в случае перезагрузки сервера. Обычно это включает удаление тегов и , которые содержат вашу конфигурацию SSL.

  7. Поздравляю! Вы успешно установили свой сертификат SSL.

Проверка установки сертификата SSL / TLS

  1. Тест браузера

    1. Для достижения наилучших результатов обязательно сначала закройте веб-браузер, а затем снова запустите его.

    2. Посетите свой сайт с защищенным URL-адресом https (т.например, перейдите по адресу https://www.example.com , а не http://www.example.com ).

    3. Обязательно протестируйте свой сайт не только с помощью Internet Explorer. IE загружает недостающие промежуточные сертификаты; тогда как другие браузеры выдают ошибку, если все сертификаты в цепочке сертификатов не установлены должным образом.

  2. DigiCert ® Инструмент диагностики установки SSL

    Если ваш сайт общедоступен, используйте наш Тестер сертификатов сервера для проверки установки сертификата SSL / TLS; он обнаруживает типичные проблемы при установке.

Устранение неполадок

  1. Если ваш веб-сайт общедоступен, наш инструмент проверки сертификатов SSL может помочь вам диагностировать распространенные проблемы.

  2. Если вы получили предупреждение «не доверенный», просмотрите сведения о сертификате, чтобы убедиться, что это тот сертификат, который вы ожидаете.Проверьте поля Subject , Issuer и Valid To .

    1. Если это тот сертификат, который вы ожидаете, и сертификат SSL выпущен DigiCert, значит, ваш SSLCertificateChainFile настроен неправильно.

    2. Если вы не видите ожидаемый сертификат, возможно, у вас есть еще один блок SSL перед тем, который вы недавно настроили.

      Виртуальные хосты на основе имен невозможны с https, если вы не используете один и тот же сертификат для всех виртуальных хостов (например, — подстановочный знак или многодоменный SSL-сертификат ).

      Это не ограничение Apache, а ограничение протокола SSL. Apache должен отправить сертификат во время подтверждения SSL, прежде чем он получит HTTP-запрос, содержащий заголовок Host.Следовательно, Apache всегда отправляет SSLCertificateFile из первого блока , который соответствует IP и порту запроса.

  3. Чтобы получить помощь в переносе сертификатов на дополнительные серверы или между серверными платформами, см. Наши инструкции по экспорту OpenSSL.

  4. Если вам нужно отключить совместимость SSL версии 2, чтобы соответствовать требованиям PCI, добавьте следующую директиву в файл конфигурации Apache:

       SSLCipherSuite HIGH: + MEDIUM:! SSLv2:! EXP:! ADH:! ANULL:! ENULL:! NULL   

    Если директива уже существует, вам может потребоваться изменить ее, чтобы отключить SSL версии 2.

  5. Инструкции по исправлению распространенных ошибок и дополнительные советы см. В разделе Устранение ошибок 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.

  1. ключ — это ваш ключевой файл, и его нельзя раскрывать никому.
  2. Certificate — актуальный SSL-сертификат для вашего домена
  3. 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 для настройки деталей сертификата. Чтобы убедиться в наличии правильных параметров, необходимо выполнить следующие действия.

  1. SSLCertificateFile — Путь к файлу CRT сертификата, который вы скачали ранее
  2. SSLCertificateKeyFile — путь к файлу ключей private.a
  3. 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 может находиться в блоке в другом файле конфигурации. Вы всегда можете найти файл SSL conf в дистрибутивах Linux, используя эту команду grep: grep -i -r «SSLCertificateFile» / etc / httpd /

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 помещается в корневой каталог домена, но вы можете иметь другие файлы .

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *