Apache установка ssl сертификата: Как установить SSL сертификат на Apache?
Как установить SSL сертификат на Apache?
Чтобы установить сертификат для сайта на Apache, следуйте шагам ниже:
1. Загрузите файлы сертификата на сервер любым удобным вам способом, например, по FTP или SFTP.
2. В файле конфигурации Apache внесите изменения согласно примера ниже.
Обратите внимание: по умолчанию данный файл находится по пути: /etc/httpd/httpd.conf . В этом файле для каждого добавленного домена созданы отдельные блоки (которые могут быть внизу файла httpd.conf). Также иногда блоки указываются отдельно, например, в поддиректориях /etc/httpd/vhosts.d/ или /etc/httpd/sites/ или в файле ssl.conf. Перед изменением файла проверьте наличие этих блоков. Файл, в который собираетесь вносить изменения лучше скопировать и изменить его имя (например, на httpd.conf_old), чтобы в случае необходимости вернуться к старым настройкам.
В конфигурационный файл должны быть добавлены строки по примеру тех, которые выделены жирным:
DocumentRoot /var/www/html2
ServerName www.yourdomain.com
SSLEngine on
SSLCertificateFile /path/to/your_domain_name.crt
SSLCertificateKeyFile /path/to/your_private.key
SSLCertificateChainFile /path/to/.сa-bundle
Указывать здесь необходимо точные пути и названия файлов сертификатов в соответствии с тем, где они находятся и как называются.
SSLCertificateFile
– файл основного сертификата, т.е. сертификата для вашего домена (например: your_domain_name.crt). SSLCertificateKeyFile
– файл с приватным ключом — RSA. Если вы генерировали CSR-запрос в нашей панели управления SSL, то данный ключ был отправлен вам на почту (если опция отправки на почту не была отключена). Необходимо скопировать данный ключ с тегами BEGIN/ENDPRIVATE KEY, вставить в текстовый документ и сохранить с расширением .key. SSLCertificateChainFile
– файл, в котором находится цепочка сертификатов – промежуточных и корневого (файл с названием: gd_bundle, ca_bundle, ca_cert и т.д.)
Обратите внимание: для случаев, если нужно, чтобы сайт открывался как с защищенным соединением, так и без него, для обоих типов соединения необходимы отдельные виртуальные хосты. Для этого скопируйте существующий незащищенный виртуальный хост и отредактируйте для защищенного SSL-сертификатом соединения.
3. Проверьте настройки Apache.
Для того чтобы заработало защищенное соединение, нужно перезагрузить веб-сервер Apache. Перезапуск не удастся, если были допущены ошибки в конфигурационном файле. Вы можете проверить работу веб-сервера командой apachectl configtest, чтобы предупредить какие-либо неполадки.
4. Перезагрузите Apache.
Как установить SSL-сертификат на Apache
О том, что такое SSL-сертификат, мы рассказывали раньше. Эта статья поможет вам установить SSL-сертификат на Apache.
Установка SSL-сертификата
Для установки сертификата потребуется:
- Файл сертификата и цепочка сертификата. Центр сертификации присылает эти данные на почтовый ящик владельца сертификата.
- Ключ сертификата. Он у вас должен быть. Ключ генерируется перед подачей запроса на выпуск сертификата вместе с CSR-запросом.
- Root доступ к серверу.
Итак, рассмотрим детальнее.
1. Копируем файлы сертификата на ваш сервер (например, через FTP-клиент).
2. Редактируем файл конфигурации Apache.
Примечание: по умолчанию путём к этому файлу является /etc/httpd/httpd.conf, где для каждого домена созданы блоки (они могут находиться в нижней части файла httpd.conf.), но иногда блоки прописаны отдельно — например, в под-директориях /etc/httpd/vhosts.d/или /etc/httpd/sites/или в файле ssl.conf. Перед редактированием файла необходимо убедиться в наличии этих блоков, а сам файл лучше скопировать и сохранить под другим именем (например, httpd.conf_old), чтобы иметь возможность откатиться к предыдущей конфигурации.
Итак, редактируем настройки работы виртуального хоста для установления SSL-соединения. Строки, прописанные жирным шрифтом должны быть добавлены в конфигурационный файл:
DocumentRoot /var/www/html2
ServerName www.yourdomain.com
SSLEngine on
SSLCertificateFile /path/to/your_domain_name.crt
SSLCertificateKeyFile /path/to/your_private.key
SSLCertificateChainFile /path/to/.сa-bundle
Имена файлов и пути к ним должны соответствовать именам и расположению файлов сертификатов:
- SSLCertificateFile — файл вашего сертификата (например: your_domain_name.crt).
- SSLCertificateKeyFile — файл ключа, который был создан при генерации CSR и начинается тегом ——BEGIN PRIVATE KEY——. Для получения такого файла необходимо скопировать ключ в созданный на компьютере обычный текстовый документ и сохранить файл таким образом, чтобы его название заканчивалось на «.key». Если для генерирования CSR-запроса использовалась наша панель SSL, связка ключей CSR-RSA была отправлена вам на почту (если только вы не убрали эту опцию).
- SSLCertificateChainFile — файл цепочки сертификатов (корневой + промежуточный сертификаты).
Примечание: Если необходимо, чтобы сайт работал и с защищенным соединением, и с незащищенным, вам необходим виртуальный хост для каждого соединения. Сделайте копию существующего незащищенного виртуального хоста и создайте его для SSL-соединения.
3. Проверяем конфигурацию Apache.
Для того, чтобы изменения вступили в силу, Вам необходимо будет перезапустить Apache, однако, если в конфигурационном файле есть ошибки — Вам это не удастся. Чтобы избежать лишних затруднений, проверяем работоспособность веб-сервера следующей командой:
apachectl configtest
4. Перезапускаем Apache.
Нужен SSL-сертификат для сайта? Мы предлагаем сертификаты от известных центров сертификации: Comodo, GeoTrust, Thawte и Symantec. У нас также можно заказать ssl-сертификат wildcard и мультидоменный ssl-сертификат.
Установка SSL сертификата: Apache (OpenSSL)
1. Скопируйте полученный сертификат в файл на вашем сервере Apache
Когда процесс выдачи SSL сертификата завершится, на указанный вами e-mail придет электронное письмо, содержащее ваш сертификат. Файл с сертификатом будет называться vash-domain.crt. Если вы просмотрите файл с SSL сертификатом в текстовом редакторе, он будет выглядеть примерно так:
——BEGIN CERTIFICATE——
AGC-SqGSIb3DqvHAqCAMIACAQExALBgkqhkiG9w0BBwGg&gDCCAmowggHXAh
Ub7e50M63v1Z2A/5O5MA0GCSqGSIb3DQBAs+klMF8xCzAJBgNBAlVflqTMd54vSA
(…………)
E+cFEpf0WForA+eRP6XraWw8rTN8102zGrcJgg4P6XVS4l39+l5aCEGGbauLP5W6
K99c93ku3QrlX2+KeDi+xBG2cSLsdSiXeQS/16S36ITclu4AADEA+&A5dfAtHS
——END CERTIFICATE——
Скопируйте сертификат в ту же директорию, где находится ваш частный (закрытый) ключ, назовем ее, например /etc/ssl/crt/. Частный ключ в нашем примере будет называться private.key, а публичный – это и есть vash-domain.crt.
2. Установите корневой и промежуточный сертификат
Чтобы браузеры и устройства доверяли вашему сертификату, следует установить сертификаты корневых и промежуточных центров сертификации. Эти сертификаты находятся вместе с файлом Вашего основного сертификата. Для Apache их нужно скомбинировать в ca_bundle.
Чтобы ссылка на этот файл была правильной, следует сделать следующее в соответствующем разделе Virtual Host (Виртуальный хост) для вашего веб-сайта:
a. Для начала скопируйте файл vash-server.ca-bundle в ту же директорию, где находятся файлы сертификата и ключа (в нашем примере /etc/ssl/crt/).
b. Далее добавьте следующую строку в раздел SSL в файле httpd.conf. Напомним, что /etc/ssl/crt/ — директория, в которую мы скопировали файл промежуточного центра сертификации. Если такая строка уже существует, отредактируйте ее, чтобы она выглядела следующим образом:
SSLCertificateChainFile /etc/ssl/crt/vash-server.ca-bundle
c. Если вы используете другое расположение и другие названия файлов, вам нужно изменить путь и названия файлов в строке или отобразить путь и названия файлов, которые вы используете. Раздел SSL в обновленном файле config теперь должен выглядеть так:
<VirtualHost 192.168.0.1:443>
DocumentRoot /var/www/html2
ServerName www.vash-domain.com
SSLEngine on
SSLCertificateFile /etc/ssl/crt/vash-domain.crt
SSLCertificateKeyFile /etc/ssl/crt/private.key
SSLCertificateChainFile /etc/ssl/crt/vash-server.ca-bundle ***
</VirtualHost>
*** Для Apache 1.x используйте: SSLCACertificateFile /etc/ssl/crt/ vash-server.ca-bundle
d. Сохраните файл config и перезапустите Apache.
Установка SSL-сертификата на Apache — HOSTiQ Wiki
Прочтите сначала, что такое SSL-сертификат.
1. Сначала на сервер необходимо скопировать файлы сертификата при помощи FTP-клиента.
2. На втором этапе подлежит редактированию конфигурационный файл Apache.
Примечание: как правило, этот файл можно найти, указав следующий путь /etc/httpd/httpd.conf. Здесь каждому домену присваивается отдельный блок. Блоки могут располагаться в нижней части конфигурационного файла httpd.conf. Однако, в некоторых случаях они прописываются в субдиректориях, таких как /etc/httpd/vhosts.d/ или /etc/httpd/sites/, а также в файле ssl.conf. Перед тем, как приступить к редактированию файла, пожалуйста, убедитесь, что данные блоки присутствуют в наличии. Чтобы избежать потери данных и сделать возможным возврат к первоначальным настройкам, мы рекомендуем сделать копию конфигурационного файла и переименовать его, например, в httpd.conf_old.
Переходим непосредственно к редактированию. Настройка SSL на Apache для того, что виртуальный хост мог работать по защищенному соединению, требует добавления в файл httpd.conf следующих строк (добавляются 4 нижние строки под записью ServerName с вашим доменом):
DocumentRoot /var/www/html2 ServerName www.yourdomain.com SSLEngine on SSLCertificateFile /path/to/your_domain_name.crt SSLCertificateKeyFile /path/to/your_private.key SSLCertificateChainFile /path/to/.сa-bundle
Требуется, чтобы названия файлов и пути к ним совпадали с названиями и путями к файлам сертификатов.
SSLCertificateFile – содержимое вашего SSL-сертификата, имеет вид your_domain_name.crt
SSLCertificateKeyFile – RSA-ключ, который генерируется одновременно с CSR-запросом.
SSLCertificateChainFile – цепочка сертификатов, которая включает в себя корневой и промежуточный сертификаты.
Примечание: если вы хотите, чтобы сайт открывался как по соединению https, так и по http, Вам необходимо скопировать ранее созданный для незашифрованного соединения виртуальный хост и расположить его ниже виртуалхоста, в который внесли изменения при выполнении указанной выше инструкции.
3. Обязательно проверьте текущие настройки Apache.
Чтобы Apache начал работать с новыми настройками, необходимо его перезапустить, однако, это вам сделать не удастся при наличии ошибок в конфигурационном файле. Для того чтобы упростить Вам работу, мы рекомендуем выполнить следующую команду для проверки работоспособности вебсервера:
apachectl configtest
4. Теперь можно перезапустить Apache при помощи команды:
Debian, Ubuntu:
service apache2 restart
CentOS, Fedora:
service httpd restart
или
apachectl restart
На этом процесс установки закончен — ваш SSL-сертификат установлен. Если же настройка https на Apache все еще вызывает у вас вопросы – обращайтесь в нашу поддержку.
Еще не решили какой купить сертификат? Мы предлагаем сертификаты от Центров сертификации Comodo, Symantec и GeoTrust. У нас вы можете купить хостинг недорого. Также аренда мощных серверов в Европе и США еще никогда не была настолько доступна.
Читайте также:
Помогла ли эта статья решить вашу проблему?
Ваш ответ поможет улучшить статьи в будущем.
Как установить SSL-сертификат на веб-сервер Apache под Linux?
Зачем нужен SSL-сертификат
Secure Sockets Layer — уровень защищённых сокетов. По сути это означает: шифрование, аутентификацию и проверку целостности данных.
Без SSL-сертификата:
- веб-сервер может отдавать контент по протоколу https, но браузер будет слева в адресной строке подсвечивать протокол красным и сообщать, что соединение не защищено;
- поисковики Яндекс и Google будут ранжировать ваш сайт ниже конкурентов с валидными SSL-сертификатами;
- страницу вашего сайта смогут за дефейсить хакеры, т.е. открыть сайт, который в доменном имене будет отличаться от вашего на один символ;
- если не включить принудительный редирект на https в настройках веб-сервера, то трафик будет идти по http без шифрования;
- без SSL-сертификата вы не сможете принимать платежи на сайте.
Хакеры, конечно, могут получить SSL-сертификат и на схожий домен, но для серьёзного сертификата им потребуется компания, а это уже целая история, время, расходы и куча следов.
И не факт, что они ещё получат сертификат на домен, который до степени смешения похож на другой, на сайт, которого нет в поисковиках.
Какие бывают SSL-сертификаты и чем они отличаются
- Self-Signed Certificate (cамоподписанный) — бесполезный и бесплатный. Его можно сгенерировать самому и тут нет удостоверяющего центра. Уровень доверия нулевой.
- SGC (Server Gated Cryptography) — сертификат с высоким уровнем шифрования для старых браузеров. Браузеры настолько старые, что смысла в нём нет.
- SAN/UCC (United Communications Certificate) — мультидоменный сертификат для Microsoft Exchange.
- Code Signing — для разработчиков, чтобы подписывать программное обеспечение, чтобы была гарантия, что это оригинальный дистрибутив и никто не внёс туда изменений.
- Wildcard SSL Certificate (и на все поддомены) — на домен и все поддомены. Но это не может быть сертификат с расширенной проверкой организации.
- Domain Validation (DV SSL) — проверка домена — проверяется только то, что вы собственник домена. Подойдёт физическим лицам, у которых на сайте нет передачи данных пользователей, коммерческой деятельности.
- Organization Validation (OV SSL) — проверка организации. В браузере не будет в адресной строке отображаться зелёным цветом сертификат.
- Extended Validation (EV SSL) — с расширенной проверкой организации. Зелёным будет отображаться в адресной строке.
Такой сертификат следует приобретать, если ведётся коммерческая деятельность или передаются персональные данные. Есть варианты Multi-Domain,
т.е. включить заданный список дополнительных доменов, которые не обязательно должны быть поддоменами.
Цена SSL-сертификатов слабо зависит от его типа, поэтому, если у вас организация, то получайте Extended Validation (EV SSL) сертификат.
При покупке SSL-сертификата полезно, чтобы он распространялся и на поддомены, если они у вас, конечно, есть.
Ещё у SSL-сертификатов есть такой параметр как гарантия. Это количество денег, которое вам выплатит удостоверяющий центр, если ваш сайт взломают именно по причине дыры в SSL-сертификате.
Пока о подобных случаях слышать не приходилось. Сайты взламывают из-за кривых рук и разгильдяйства разработчиков. Перехватить и расшифровать трафик — задача совершенно другого порядка сложности.
Установка SSL-сертификата
Итак, вы приобрели сертификат. Теперь его нужно установить к вам на сайт. Здесь мы рассмотрим установку на сайт под управлением веб-сервера Apache.
yum install mod_ssl #устанавливаем модуль SSL веб-сервера Apache vi /etc/httpd/conf.d/puzzle.itsoft.ru.conf # редактируем конфиг сайта добавляем строки с SSL и Redirect <VirtualHost *:80> ServerName puzzle.itsoft.ru ServerAlias www.puzzle.itsoft.ru Redirect 301 / https://puzzle.itsoft.ru/ </VirtualHost> <VirtualHost *:443> ServerName puzzle.itsoft.ru ServerAlias www.puzzle.itsoft.ru DocumentRoot /site/puzzle/public SSLEngine on SSLCertificateFile /etc/ssl/itsoft.ru-wc-dv/itsoft_star.crt SSLCertificateKeyFile /etc/ssl/itsoft.ru-wc-dv/itsoft_star.key SSLCertificateChainFile /etc/ssl/itsoft.ru-wc-dv/itsoft_star.crt <Directory /site/puzzle/public> Options FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog /site/puzzle/logs/error.log CustomLog /site/puzzle/logs/access.log common </VirtualHost> #сохраняем конфиг apachectl configtest #тестируем конфиги веб-сервера Apache systemctl restart httpd #перезапускаем веб-сервер Apache
В браузере вводим адрес нашего сервера и проверяем, что Apache работает и есть сертификат.
Важно учесть
Весь контент на сайте должен отдаваться по https и загружаться тоже по https. Это касается каких-то внешних библиотек, шрифтов, картинок, где есть внешняя ссылка http://.
Веб-мастер Яндекса подскажет вам есть ли у вас такой контент. Если есть, то сайт не получит значок Защищённое соединение.
Если хотя бы какая-то часть контента страницы подгружается по http://, то вся страница уже не может считаться безопасной.
В интернет встречаются и другие советы как сделать редирект. Например, с помощью mod_rewrite. Но это всё же не то. Этот модуль предназначен для других целей.
Создание самоподписанных сертификатов SSL для Apache в Ubuntu 18.04
Предыдущая версия данного обучающего руководства была написана Джастином Эллингвудом
Введение
Веб-протокол TLS или протокол безопасности транспортного уровня, а также предшествовавший ему веб-протокол SSL или протокол уровня защищенных сокетов, используются для помещения обычного трафика в защищенную оболочку с шифрованием.
С помощью этой технологии серверы могут обеспечивать безопасный обмен трафиком между серверами и клиентами без возможности перехвата сообщений третьими сторонами. Система сертификатов также помогает пользователям подтверждать подлинность сайтов, к которым они подключаются.
В этом обучающем модуле мы покажем, как создать самоподписанный сертификат SSL для использования с веб-сервером Apache в Ubuntu 18.04.
Примечание. Самоподписанный сертификат шифрует данные, которыми ваш сервер обменивается с любыми клиентами. Однако поскольку он не подписан доверенным центром сертификации из числа встроенных в браузеры, пользователи не могут использовать этот сертификат для автоматической проверки подлинности вашего сервера.
Самоподписанный сертификат полезен в ситуациях, когда у вашего сервера нет доменного имени, а также в случаях, когда шифрованный веб-интерфейс не предназначен для взаимодействия с пользователями. Если у вас есть доменное имя, в большинстве случае будет полезнее использовать сертификат, подписанный центром сертификации. Вы можете узнать, как создать бесплатный доверенный сертификат с помощью проекта Let’s Encrypt, здесь.
Предварительные требования
Для начала у вас должен быть пользователь без прав root с привилегиями sudo
. Чтобы создать такую учетную запись пользователя, следуйте указаниям руководства «Начальная настройка сервера с Ubuntu 18.04».
Также вам потребуется установить веб-сервер Apache. Если вы хотите установить на сервере полный комплект LAMP (Linux, Apache, MySQL, PHP), следуйте указаниям обучающего модуля «Установка LAMP в Ubuntu 18.04». Если вы хотите просто установить веб-сервер Apache, пропустите шаги, относящиеся к установке PHP и MySQL.
Когда предварительные требования будут выполнены, переходите к приведенным ниже шагам.
Шаг 1 – Создание сертификата SSL
Протоколы TLS и SSL используют сочетание открытого сертификата и закрытого ключа. Секретный ключ SSL хранится на сервере. Он используется для шифрования отправляемых на клиентские системы данных. Сертификат SSL находится в открытом доступе для всех, кто запрашивает этот контент. Его можно использовать для расшифровки контента, подписанного соответствующим ключом SSL.
Мы можем создать самоподписанный ключ и пару сертификатов OpenSSL с помощью одной команды:
- sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
Вам будет предложено ответить на ряд вопросов. Прежде чем перейти к этому шагу, посмотрим, что делает отправляемая нами команда:
- openssl: это базовый инструмент командной строки для создания и управления сертификатами OpenSSL, ключами и другими файлами.
- req: данная субкоманда указывает, что мы хотим использовать управление запросами подписи сертификатов X.509 (CSR). X.509 — это стандарт инфраструктуры открытых ключей, используемый SSL и TLS для управления ключами и сертификатами. Вы хотим создать новый сертификат X.509, и поэтому используем эту субкоманду.
- -x509: это дополнительно изменяет предыдущую субкоманду, сообщая утилите, что мы хотим создать самоподписанный сертификат, а не сгенерировать запрос на подпись сертификата, как обычно происходит.
- -nodes: этот параметр указывает OpenSSL пропустить опцию защиты сертификата с помощью пароля. Для чтения этого файла при запуске сервера без вмешательства пользователя нам потребуется Apache. Кодовая фраза может предотвратить это, поскольку нам придется вводить ее после каждого перезапуска.
- -days 365: данный параметр устанавливает срок, в течение которого сертификат будет считаться действительным. Здесь мы устанавливаем срок действия в один год.
- -newkey rsa:2048: указывает, что мы хотим генерировать новый сертификат и новый ключ одновременно. Мы не создали требуемый ключ для подписи сертификата на предыдущем шаге, и поэтому нам нужно создать его вместе с сертификатом. Часть
rsa:2048
указывает, что мы создаем ключ RSA длиной 2048 бит. - -keyout: эта строка указывает OpenSSL, где мы разместим создаваемый закрытый ключ.
- -out: данный параметр указывает OpenSSL, куда поместить создаваемый сертификат.
Как мы указывали выше, эти опции создают и файл ключа, и сертификат. Нам будет задано несколько вопросов о нашем сервере, чтобы правильно вставить информацию в сертификат.
Укажите подходящие ответы. Самая важная строка — это строка, где запрашивается обычное имя (т. е. FQDN сервера или ВАШЕ имя)
. Вам нужно ввести доменное имя, связанное с вашим сервером или, что более вероятно, публичный IP-адрес вашего сервера.
В целом диалоги выглядят примерно так:
Output
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc.
Organizational Unit Name (eg, section) []:Ministry of Water Slides
Common Name (e.g. server FQDN or YOUR name) []:server_IP_address
Email Address []:admin@your_domain.com
Оба созданных вами файла будут помещены в соответствующие подкаталоги в каталоге /etc/ssl
.
Шаг 2 — Настройка Apache для использования SSL
Мы создали файлы ключа и сертификата в каталоге /etc/ssl
. Теперь нам просто нужно изменить конфигурацию Apache, чтобы воспользоваться их преимуществами.
Внесем несколько небольших изменений в нашу конфигурацию:
- Создадим сниппет конфигурации, чтобы задать надежные параметры SSL по умолчанию.
- Мы изменим входящий в комплект файл виртуального хоста SSL Apache, чтобы он указывал на сгенерированные нами сертификаты SSL.
- (Рекомендуется) Мы изменим незашифрованный файл виртуального хоста, чтобы он автоматически перенаправлял запросы на шифрованный виртуальный хост.
После завершения настройки мы получим защищенную конфигурацию SSL.
Создание сниппета конфигурации Apache с надежными настройками шифрования
Прежде всего, мы создадим сниппет конфигурации Apache для определения некоторых параметров SSL. При этом в Apache будет настроен надежный пакет шифров SSL и будут включены расширенные функции, которые обеспечат безопасность нашего сервера. Настраиваемые нами параметры смогут использовать любые виртуальные хосты с SSL.
Создайте новый сниппет в каталоге /etc/apache2/conf-available
. Мы назовем файл ssl-params.conf
, чтобы сделать его назначение очевидным:
- sudo nano /etc/apache2/conf-available/ssl-params.conf
Для безопасной настройки Apache SSL мы используем рекомендации Реми ван Эльста на сайте Cipherli.st. Этот сайт создан для предоставления удобных настроек шифрования для популярного программного обеспечения.
Рекомендованные настройки на вышеуказанном сайте обеспечивают высокий уровень безопасности. Иногда это достигается за счет совместимости клиентских систем. Если вам требуется поддержка старых версий клиентов, вы можете использовать альтернативный список, нажав на странице ссылку «Да, мне нужны настройки шифрования для устаревшего / старого программного обеспечения». Этот список можно заменить для копируемых ниже элементов.
Выбор конфигурации в основном зависит от того, какие системы вам нужно поддерживать. Оба варианта обеспечивают высокий уровень безопасности.
Для наших целей мы скопируем предоставленные настройки полностью. Мы внесем только одно небольшое изменение. Мы отключим заголовок Strict-Transport-Security
(HSTS).
Предварительная загрузка HSTS повышает безопасность, но может иметь далеко идущие последствия, если ее включить случайно или неправильно. В этом обучающем модуле мы не будем включать настройки, но вы можете изменить их, если понимаете возможные последствия.
Прежде чем принимать решения, прочитайте о строгой безопасности транспорта HTTP или HSTS, в особенности о функции «предварительной загрузки»
Вставьте конфигурацию в открытый нами файл ssl-params.conf
:
/etc/apache2/conf-available/ssl-params.conf
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
# Disable preloading HSTS for now. You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
# Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off
Сохраните файл и закройте его после завершения.
Изменение файла виртуального хоста Apache SSL по умолчанию
Теперь изменим /etc/apache2/sites-available/sl.conf
, используемый по умолчанию файл виртуального хоста Apache SSL. Если вы используете другой файл серверных блоков, используйте имя этого файла в приведенных ниже командах.
Прежде чем продолжить, создадим резервную копию первоначального файла виртуального хоста SSL:
- sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak
Теперь откройте файл виртуального хоста SSL для внесения изменений:
- sudo nano /etc/apache2/sites-available/default-ssl.conf
С удалением большинства комментариев содержание файла виртуального хоста по умолчанию должно выглядеть примерно так:
/etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Мы внесем в файл незначительные изменения. Мы внесем желаемые изменения в файл виртуального хоста (адрес электронной почты администратора сервера, имя сервера и т. д.), а также изменим директив SSL, чтобы они указывали на наши файлы сертификатов и ключей.
После внесения изменений ваш серверный блок должен выглядеть примерно так:
/etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
ServerName server_domain_or_IP
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Сохраните файл и закройте его после завершения.
(Рекомендуется) Изменение файла хоста HTTP для перенаправления на HTTPS
В настоящее время сервер будет предоставлять нешифрованный трафик HTTP и шифрованный трафик HTTPS. В большинстве случаев для обеспечения безопасности рекомендуется включить автоматическое перенаправление HTTP на HTTPS. Если вы не хотите использовать эту функцию, или она вам не нужна, вы можете спокойно пропустить этот раздел.
Чтобы изменить файл нешифрованного виртуального хоста для перенаправления всего трафика для шифрования SSL, мы можем открыть файл /etc/apache2/sites-available/000-default.conf
:
- sudo nano /etc/apache2/sites-available/000-default.conf
Внутри файла в блоках конфигурации VirtualHost
нам нужно добавить директиву Redirect
, которая должна направлять весь трафик на версию сайта с шифрованием SSL:
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
. . .
Redirect "/" "https://your_domain_or_IP/"
. . .
</VirtualHost>
Сохраните файл и закройте его после завершения.
Шаг 3 — Настройка брандмауэра
Если у вас включен брандмаэр ufw
в соответствии с предварительными требованиями, вам может потребоваться изменить настройки для поддержки трафика SSL . К счастью, Apache регистрирует несколько профилей ufw
после установки.
Мы можем просмотреть доступные профили с помощью следующей команды:
Список должен выглядеть примерно так:
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Вы можете просмотреть текущие настройки с помощью следующей команды:
Если вам разрешен только обычный трафик HTTP, результаты могут выглядеть следующий образ:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
Чтобы разрешить дополнительный трафик HTTPS, мы разрешим профиль «Apache Full» и удалим избыточный профиль «Apache»:
- sudo ufw allow 'Apache Full'
- sudo ufw delete allow 'Apache'
Теперь ваш статус должен выглядеть примерно так:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
Шаг 4 — Активация изменений в Apache
Мы внесли изменения и настроили брандмауэр, и теперь можем включить в Apache модули SSL и заголовков, активировать наш виртуальный хост SSL и перезапустить Apache.
Мы можем активровать mod_ssl
, модуль Apache SSL, и модуль mod_headers
, необходимый для некоторых настроек нашего сниппета SSL, с помощью команды a2enmod
:
- sudo a2enmod ssl
- sudo a2enmod headers
Теперь мы можем активировать виртуальный хост SSL с помощью команды a2ensite
:
- sudo a2ensite default-ssl
Также нам нужно будет активировать файл ssl-params.conf
для считывания заданных значений:
Мы активировали наш сайт и все необходимые модули. Теперь нам нужно проверить наши файлы на наличие ошибок в синтаксисе. Для этого можно ввести следующую команду:
- sudo apache2ctl configtest
Если проверка будет успешно пройдена, мы получим результат, выглядящий примерно так:
Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Первая строка — это сообщение о том, что директива ServerName
не задана глобально. Если вы хотите избавиться от этого сообщения, вы можете задать для ServerName
доменное имя вашего сервера или IP-адрес в каталоге /etc/apache2/apache2.conf
. Это необязательно, потому что данное сообщение не наносит никакого вреда.
Если в результатах есть сообщение Syntax OK
, в вашей конфигурации нет синтаксических ошибок. Мы можем безопасно перезапустить Apache для внесения изменений:
- sudo systemctl restart apache2
Шаг 5 — Тестирование шифрования
Теперь мы готовы протестировать наш сервер SSL.
Откройте браузер и введите https://
и доменное имя или IP-адрес вашего сервера в адресную панель:
https://server_domain_or_IP
Поскольку созданный нами сертификат не подписан одним из доверенных центров сертификации вашего браузера, вы увидите пугающее предупреждение, которое будет выглядеть примерно так:
Такое предупреждение нормально, и его следует ожидать. Сертификат нам нужен только для шифрования, а не для подтверждения подлинности нашего хоста третьей стороной. Нажмите «Дополнительно», а затем нажмите на указанную ссылку, чтобы перейти к своему хосту:
Теперь должен открыться ваш сайт. Если вы посмотрите в адресную строку браузера, вы увидите символ замка со знаком «x». В данном случае это означает, что сертификат не удается проверить. Ваше соединение все равно шифруется.
Если вы настроили Apache для перенаправления HTTP на HTTPS, вы можете проверить правильность перенаправления функций:
http://server_domain_or_IP
Если при этом появляется такой же значок, перенаправление работает правильно.
Шаг 6 – Переключение на постоянное перенаправление
Если перенаправление работает правильно, и вы хотите разрешить только шифрованный трафик, вам следует снова изменить файл нешифрованного виртуального хоста Apache и сделать перенаправление постоянным.
Откройте файл конфигурации серверного блока еще раз:
- sudo nano /etc/apache2/sites-available/000-default.conf
Найдите добавленную нами строку Redirect
. Добавьте в эту строку атрибут permanent
, который изменяет тип перенаправления с временного перенаправления 302 на постоянное перенаправление 301:
/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
. . .
Redirect permanent "/" "https://your_domain_or_IP/"
. . .
</VirtualHost>
Сохраните и закройте файл.
Проверьте конфигурацию на ошибки синтаксиса:
- sudo apache2ctl configtest
Когда вы будете готовы, перезапустите Apache, чтобы сделать перенаправление постоянным:
- sudo systemctl restart apache2
Заключение
Вы настроили сервер Apache для использования защищенного шифрования клиентских соединений. Это обеспечит безопасное обслуживание запросов и не даст третьим сторонам возможности считывать ваш трафик.
Установка SSL сертификата
Установка SSL на Apache & mod_ssl OpenSSL
Шаг первый: Скопируйте Ваш сертификат в файл на Ваш apache сервер
Вы получите email от Comodo c сертификатом. Сертификат будет называться ‘Вашдомен.crt’ и содержать в zip архиве. Как видно в текстовом редакторе сертификат будет выглядеть примерно так:
——BEGIN CERTIFICATE——
MIAGCSqGSIb3DQEHAqCAMIACAQExADALBgkqhkiG9w0BBwGggDCCAmowggHXAhAF UbM77e50M63v1Z2A/5O5MA0GCSqGSIb3DQEOBAUAMF8xCzAJBgNVBAYTAlVTMSAw
(…….)
E+cFEpf0WForA+eRP6XraWw8rTN8102zGrcJgg4P6XVS4l39+l5aCEGGbauLP5W6 K99c42ku3QrlX2+KeDi+xBG2cEIsdSiXeQS/16S36ITclu4AADEAAAAAAAAA
——END CERTIFICATE——
Скопируйте Ваш сертификат в ту же директорию (папку), в которой содержится Private Key (приватный ключ). В этом примере мы используем ‘/etc/ssl/crt/’. The private key (приватный ключ), используемый в примере, помечен как ‘private.key’ и public key будет ‘yourDOMAINNAME.crt’.
Примечание: Рекомендуем Вам создать директорию (папку), которая содержит файл private key (приватного ключа), видимую только корневым каталогом.
Шаг 2: Установите корневой каталог и промежуточные сертификаты
Вам нужно установить корневой каталог и Промежуточные CA сертификаты для того, чтобы браузеры и устройства доверяли Вашему сертификату. Корневой каталог и Промежуточные CA сертификаты содержаться в ‘ca-bundle’ файле, который был прикреплен к email в виде zip-архива (он должен называться ‘yourSERVERNAME.ca-bundle’). В соответствующем разделе Вашего сайта ‘Virtual Host’ Вам необходимо будет проделать следующее, чтобы правильно ссылаться на этот файл:
a. Для начала скопируйте файл ‘yourSERVERNAME.ca-bundle’ в ту же самую директорию (папку), в которой содержится сертификат и файлы ключей. Как напоминание, в этом примере мы назвали директорию (папку) ‘/etc/ssl/crt/’.
б. Далее, добавьте следующую строку в раздел SSL файла ‘httpd.conf’. Мы снова предполагаем, что директорией (папкой), в которую Вы скопировали файл промежуточного CA, является ‘/etc/ssl/crt/’. Если строка уже существует, то исправьте ее, чтобы она выглядела так:
SSLCertificateChainFile /etc/ssl/crt/yourSERVERNAME.ca-bundle
в. Если Вы используете разное расположение и разные названия файла сертификата, Вам необходимо поменять путь и название файла, чтобы показать путь и название файла, которые Вы используете. В обновленном файле конфигурации раздела SSL теперь должно быть следующее:
SSLCertificateFile /etc/ssl/crt/yourDOMAINNAME.crt
SSLCertificateKeyFile /etc/ssl/crt/private.key
SSLCertificateChainFile /etc/ssl/crt/yourSERVERNAME.ca-bundle ***
г. Сохранить Ваш ‘config’ файл и перезагрузите Apache.
*** Для Apache 1.x: Используйте: SSLCACertificateFile /etc/ssl/crt/yourSERVERNAME.ca-bundle
Примечание: Файл конфигурации apache всегда должен ссылаться на файл конфигурации SSL, если конфигурация не включена в него. Просмотрите строки, начинающиеся с ‘include’, которые указывают на те файл, которые включены. Например, они могут называться ssl.conf, httpd-ssl.conf и т.д., в зависимости от дистрибутива.
Установка SSL на Plesk Server Administrator
Важно: Процесс установки включает 2 этапа, убедитесь, что Вы проделали оба этих этапа, руководствуясь нижеследующей инструкцией.
Шаг 1: Загрузите Ваш SSL сертификат
В PSA выберите домен, для которого Вы будете устанавливать SSL сертификат.
Зайдите в раздел SSL домена путем нажатия на кнопку ‘certificate’.
При генерации CSR (запрос на подписание сертификата) есть 2 разных текстовых раздела, RSA Private Key (который был прислан Вам по email Plesk’ом) и Certificate Request. В процессе установки сертификата, текст RSA Private Key должен быть вставлен в блок, предшествующий сертификату сайта веб сервера. Например:
——BEGIN RSA PRIVATE KEY——
[[ENCODED BLOCK OF TEXT]]
——END RSA PRIVATE KEY——
——BEGIN CERTIFICATE——
[[ENCODED BLOCK OF TEXT]]
——END CERTIFICATE——
Вставьте Private Key с текстом Сертификата в Enter Certificate Text: текстовое поле и нажмите кнопку Send Text.
Если все было сделано успешно, то появится сообщение ‘Certificate Successfully Installed’. Если есть какие либо ошибки, то новый сертификат будет заменен старым, который Вы уже отправляли на сервер и у Вас будет запрошено ввести его снова. Теперь нажмите Up Level для возврата на Domain Administration page.
Шаг 2: Загрузка Rootchain Certificate
Для того чтобы убедиться, что Вашему сертификату доверяют все браузеры, Вам необходимо установить rootchain certificate для домена.
В PSA выберите домен, для которого Вы будете устанавливать SSL сертификат. Зайдите в раздел SSL домена путем нажатия на кнопку ‘certificate’.
Появится следующая иконка для Use rootchain certificate for this domain appears on this page.
Если иконка установлена на [ON] , значит rootchain certificate будет активирован для этого домена. А если — [X], значит отключен.
Убедитесь, что зиконка установлена на [X] перед тем, как продолжать далее (возможно Вам необходимо будет нажать кнопку ON/OFF, если появиться иконка [ON]):
Нажмите кнопку browse и разместите файл Intermediate CA (находится в zip архиве, который Вы получили по email и также доступен для загрузки в секции support вебсайта comodo), который Вы сохранили ранее из email от Comodo.
Затем нажмите кнопку Send File. Тем самым Вы загрузите Intermediate certificate на сервер.
Нажмите значок снова, чтобы установить на положение [ON] .
Теперь нажмите Up Level для возврата на Domain Administration page.
Использование Вашего SSL сертификата для безопасного входа в Plesk Administrator
Если Вы используете ваш сертификат в Plesk control panel (для безопасного входа), Вам необходимо зайти в Plesk Administrator и выбрать Server.
Выберите Certificate и следуйте тем же инструкциям, что и для использования SSL сертификата для домена.
Как установить сертификат SSL на Apache — HelpDesk
После того, как ваш сертификат будет выпущен центром сертификации, вы готовы начать установку на свой сервер Apache. Выполните следующие действия:
Шаг 1. Загрузите файлы сертификатов на сервер
Центр сертификации отправит вам по электронной почте zip-архив с несколькими файлами .crt.
Вы также можете загрузить файлы сертификатов в своей учетной записи. В zip-архиве будет находиться Сертификат для вашего доменного имени (.crt) и файл CA-Bundle ( .ca-bundle). Они известны как цепочка промежуточных и корневых сертификатов.
Если вы загрузили промежуточные сертификаты отдельно на свой сервер, вам нужно будет связать их в один файл CA-Bundle.
Для сертификата PositiveSSL используйте следующую команду, чтобы объединить промежуточный и корневой сертификаты:
cat COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt >> bundle.crt
Вы можете загрузить полные файлы CA-Bundle для наших сертификатов здесь.
Шаг 2. Найдите файл конфигурации Apache
Местоположение и имя файла конфигурации Apache могут отличаться в зависимости от используемого сервера и версии ОС. Файл может называться httpd.conf , apache2.conf или ssl.conf и может располагаться по адресу / etc / httpd / , / etc / apache2 / или / etc / httpd / conf. .d / ssl.conf .
Файл конфигурации содержит виртуальные хосты для всех доменов, размещенных на сервере.
Примечание: , если у вас установлен сервер Apache в операционной системе Ubuntu, каждый сайт имеет отдельную конфигурацию, которую можно найти в / etc / apache2 / sites-enabled / . Чтобы ваш сайт был доступен через безопасное и незащищенное соединение, вам потребуются два отдельных файла конфигурации: один для порта 80, а другой — для порта 443.
Шаг 3. Настройка раздела виртуального хоста
Вам необходимо добавить или изменить виртуальный хост для порта 443 в файле конфигурации.
Мы рекомендуем сделать резервную копию файла конфигурации перед тем, как вносить в него какие-либо изменения. Таким образом, вы можете отменить изменения, если что-то пойдет не так. Просто скопируйте и сохраните текущий файл * .conf как * .conf_backup :
cp default-ssl.conf default-ssl.conf_backup
Убедитесь, что виртуальный хост имеет следующие директивы без # перед ними:
- SSLEngine на
- SSLCertificateFile указывал на расположение сертификата, выданного для вашего доменного имени.
- SSLCertificateKeyFile указывал на расположение вашего закрытого ключа на сервере.
- SSLCertificateChainFile указывает на расположение файла CA-Bundle.
Виртуальный хост для порта 443 должен выглядеть следующим образом:
ServerAdmin [email protected] DocumentRoot var / www ServerName www.ssl-tutorials.com Журнал ошибок www / home / logs / error_log SSLEngine включен SSLCertificateFile /etc/ssl/ssl-tutorials_com.crt SSLCertificateKeyFile /etc/ssl/ssl-tutorials.key SSLCertificateChainFile / etc / ssl / ssl-tutorials_com.ca-bundle
Примечание. , начиная с Apache 2.4.8, директива SSLCertificateChainFile устарела. Промежуточные сертификаты теперь можно добавить в SSLCertificateFile.
Шаг 4. Включение сшивания OCSP
OCSP Stapling повышает производительность, предоставляя клиентам актуальный статус вашего сертификата.
Если вы хотите включить сшивание OCSP для веб-сайта, добавьте следующую директиву на виртуальный хост:
SSL Использование скоб на
Также укажите местоположение и размер ответа кэша OCSP за пределами раздела виртуального хоста, используя SSLStaplingCache директивы:
SSLStaplingCache shmcb: / tmp / stapling_cache (128000)
Примечание. Сшивание OCSP доступно только для конфигурации с HTTP-сервера Apache 2.3.3 и выше.
Шаг 5 : Сохранить и перезапустить
Проверьте, имеет ли новая конфигурация вашей службы Apache правильный синтаксис, используя эту команду:
apachectl -t
Если синтаксис в порядке, сохраните изменения в файле конфигурации и перезапустите Apache.
Вы можете перезапустить, используя эти команды apachectl:
перезапуск apachectl apachectl stop apachectl start
Если не удается перезапустить службу Apache или не удается установить SSL, убедитесь, что файл конфигурации создан правильно.Кроме того, вы можете обратиться за помощью в нашу службу поддержки.
Вы можете в любое время удалить измененный файл конфигурации и вернуться к резервной конфигурации, созданной на шаге 3.
Молодец! Ваш SSL-сертификат установлен. Вы можете подтвердить это с помощью инструмента SSL Checker.
Как установить сертификат SSL / TLS в Apache Open SSL
Следующие инструкции проведут вас через процесс установки SSL на Apache OpenSSL.Если у вас несколько серверов или устройств, вам нужно будет установить сертификат на каждый сервер или устройство, которое необходимо защитить. Если вы все еще не сгенерировали свой сертификат и не завершили процесс проверки, ознакомьтесь с нашими Инструкциями по созданию CSR, прежде чем выполнять следующие шаги.
Что вам понадобится
1. Сертификат вашего сервера
Это сертификат, который вы получили от ЦС для своего домена. Возможно, вы получили это по электронной почте. Если нет, вы можете загрузить его, посетив панель управления своей учетной записью и нажав на свой заказ.
2. Ваши промежуточные сертификаты
Эти файлы позволяют устройствам, подключенным к вашему серверу, идентифицировать выдающий ЦС. Таких сертификатов может быть несколько. Если вы получили сертификат в ZIP-папке, он также должен содержать промежуточные сертификаты, которые иногда называют пакетом CA. Если нет, загрузите соответствующий пакет CA для своего сертификата.
3. Ваш закрытый ключ
Этот файл должен быть на вашем сервере или у вас, если вы сгенерировали CSR с помощью бесплатного инструмента-генератора.На некоторых платформах, таких как Microsoft IIS, закрытый ключ не сразу виден вам, но сервер отслеживает его.
Примечание : Вышеупомянутые файлы должны быть сохранены в каталоге сервера, где хранятся все файлы сертификатов / ключей.
Инструкции по установке
1. Найдите файл конфигурации apache для редактирования
Основной файл конфигурации обычно называется httpd.conf или apache2.conf и находится через / etc / httpd или / etc / apache2 /.
Примечание : файл конфигурации SSL может находиться в блоке
2. Настроить файл и ввести команды
Настройте файл httpd.conf и введите следующие команды на своем VirtualHost для успешного включения SSL:
DocumentRoot / var / www / html2 ServerName www.yourdomain.com SSLEngine включен SSLCertificateFile /path/to/your_domain_name.crt SSLCertificateKeyFile /path/to/your_private.key SSLCertificateChainFile /path/to/cabundle.crt
Примечание : Если вам нужно, чтобы сайт загружался через https и http, создайте еще один виртуальный хост для http. Вы можете просто скопировать существующий файл конфигурации, прежде чем делать что-либо на этом этапе.
3. Запустите команду test
Проверьте свой новый файл конфигурации, выполнив следующую команду: apachectl configtest
4. Перезапустите Apache
.
В случае успешного тестирования перезапустите Apache, выполнив следующие команды: apachectl stop
apachectl start
Примечание: Вас могут попросить ввести пароль, который вы сгенерировали с помощью вашего ключа RSA. Если вы не хотите, чтобы вас спрашивали пароль, вам нужно будет заново сгенерировать файл ключа RSA.
Поздравляем! Вы успешно установили свой сертификат SSL! Чтобы проверить свою работу, посетите веб-сайт в своем браузере по адресу https: //yourdomain.tld и просмотрите информацию о сертификате / сайте, чтобы узнать, правильно ли работает HTTPS / SSL. Помните, что вам может потребоваться перезагрузить сервер, чтобы изменения вступили в силу.
Для более тщательной проверки конфигурации вашего сервера воспользуйтесь нашим инструментом проверки SSL или обратитесь в наш отдел по работе с клиентами за дополнительной помощью.
Руководство по установке сертификата
SSL / TLS: Apache для Windows
Цель: Руководство по установке сертификата SSL / TLS
Для сервера Apache2 (в Windows)
Перейти к установке
Нужна помощь в создании запроса на подпись сертификата (CSR) с этим сервером? CSR для Apache2 для Windows создаются с использованием OpenSSL. Смотрите нашу статью здесь.
Если вы являетесь пользователем учетной записи ECS Enterprise, вы можете использовать инструмент ACME Services for Entrust для автоматического создания CSR.
Шаги по установке сертификата SSL на веб-сервере Windows Apache.
Перейти к шагам
Перед тем, как начать …
- Убедитесь, что вы создали резервную копию файлов конфигурации Apache, прежде чем вносить какие-либо изменения. Если вы заменяете существующий сертификат, не удаляйте существующие файлы сертификата или закрытого ключа, если вам нужно отменить предыдущую конфигурацию.
- Никогда не делитесь файлами закрытых ключей.
- Если вы планируете использовать один и тот же сертификат на нескольких серверах, всегда передавайте закрытый ключ безопасным способом (электронная почта не считается безопасным методом передачи).
- Лучше всего убедиться, что у вас есть актуальные шифры и протоколы, чтобы обеспечить максимальную безопасность при развертывании нового закрытого ключа и сертификата сервера.
- Обязательно запустите тест SSL-сервера в конце процесса установки, чтобы проверить конфигурацию сертификата на соответствие рекомендациям SSL / TLS.
- Для получения дополнительной информации о передовых методах использования SSL / TLS щелкните здесь.
Установка состоит из четырех частей
1) Скопируйте файлы сертификатов на свой сервер
2) Настройте сервер Apache так, чтобы он указывал на файлы сертификатов
3) Проверка конфигурации прошла успешно
4) Перезапустите сервер Apache
Часть 1 из 4. Скопируйте файлы сертификатов на свой сервер
1.Загрузите файлы сертификата. Вы получите файл .zip, содержащий:
- ChainBundle1.crt
- ServerCertificate.crt
2. Скопируйте два файла в каталог wwwroot \ conf \ (который, скорее всего, «c: \ Program Files \ Apache Software Foundation \ Apache2.2 \ conf») .
Часть 2 из 4: Настройте сервер Apache так, чтобы он указывал на файлы сертификатов
1. Чтобы Apache работал с SSL / TLS, вы должны изменить файлы конфигурации и перезапустить th.Обратите внимание, что пользователи Vista должны отключить контроль учетных записей пользователей, чтобы сохранить новые файлы конфигурации.
В файле httpd.conf измените следующие строки, удалив ведущий знак #, чтобы раскомментировать строку:
#Loadmodule ssl_module modules / mod_ssl.so
и
#Include conf / extra / httpd-default.conf
Итак, эти две строки должны теперь выглядеть как:
Loadmodule ssl_module modules / mod_ssl.so
и
Include conf / extra / httpd-default.conf
Часть 3 из 4: Проверка конфигурации прошла успешно
Проверьте свою Настройте Apache с помощью следующей команды:
apachectl configtest
Часть 4 из 4: Перезагрузите сервер Apache
Перезагрузите сервер Apache, выполнив следующую команду:
sudo apachectl restart
Теперь ваш сертификат SSL / TLS должен быть установлен .Если у вас есть какие-либо вопросы или проблемы, свяжитесь с отделом поддержки Entrust Certificate Services для получения дополнительной помощи.
Часы работы:
Воскресенье с 20:00 по восточноевропейскому времени по пятницу с 20:00 по восточноевропейскому времени
Северная Америка (бесплатно): 1-866-267-9297
За пределами Северной Америки: 1-613-270-2680 ( или см. список ниже)
ПРИМЕЧАНИЕ. Очень важно, чтобы международные абоненты набирали формат UITF точно так, как указано. Не набирайте дополнительную цифру «1» перед цифрой «800», иначе ваш звонок не будет принят как бесплатный звонок UITF.
Страна | Номер |
Австралия | 0011-800-3687-7863 1-800-767-513 |
Австрия | 00-800-3687-7863 |
00-800-3687-7863 | |
Дания | 00-800-3687-7863 |
Финляндия | 990-800-3687-7863 (Telecom Финляндия) 00-800-3687-7863 (Finnet ) |
Франция | 00-800-3687-7863 |
Германия | 00-800-3687-7863 |
Гонконг | 001-800-3687-7863 (голос) 002 — 800-3687-7863 (факс) |
Ирландия | 00-800-3687-7863 |
Израиль | 014-800-3687-7863 |
Италия | 00-800-3687-7863 |
Япония | 001-800-3687-7863 (KDD) 004-800-368 7-7863 (ITJ) 0061-800-3687-7863 (IDC) |
Корея | 001-800-3687-7863 (Korea Telecom) 002-800-3687-7863 (Dacom) |
Малайзия | 00-800-3687-7863 |
Нидерланды | 00-800-3687-7863 |
Новая Зеландия | 00-800-3687-7863 0800-4413101 |
Норвегия 00-800-3687-7863 | |
Сингапур | 001-800-3687-7863 |
Испания | 00-800-3687-7863 |
Швеция | 00-800-3687-7863 ( Telia) 00-800-3687-7863 (Tele2) |
Швейцария | 00-800-3687-7863 |
Тайвань | 00-800-3687-7863 |
Соединенное Королевство | 00 — 800-3687-7863 0800 121 6078 +44 (0) 118 953 3088 |
Как пользоваться tup Apache HTTP с сертификатом SSL?
Давайте защитим Apache с помощью сертификата SSL / TLS.
После внедрения сертификата настроенный домен / IP-адрес будет доступен через HTTPS.
Приступим.
На высоком уровне мы сделаем следующее.
- Скомпилируйте Apache HTTP 2.4.5 с модулем SSL
- Получить сертификат SSL
- Настройте Apache для поддержки SSL
Установить Apache с SSL из исходного кода
Чтобы настроить SSL, Apache HTTP должен быть скомпилирован с mod_ssl. Я буду использовать виртуальную машину CentOS 7 от Digital Ocean, чтобы продемонстрировать это.
- Войдите на сервер Linux с правами root и загрузите последнюю версию Apache
wget http://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz.
Примечание : последнюю версию вы можете найти здесь.
- Извлечение командой gunzip
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
- У вас появится новая папка « httpd-2.4.25 »
- Войдите внутрь и выполните следующую команду настройки
./ configure --enable-ssl –-enable-so
Примечание : Если вы делаете это на совершенно новом сервере, у вас могут возникнуть проблемы, связанные с APR, PCRE, OpenSSL, и вы можете обратиться к руководству по устранению неполадок.
Убедитесь, что вы не получили никаких ошибок при выполнении указанной выше команды configure, а затем выполните установку с помощью команд make.
марка
сделать установку
Как обычно, убедитесь в отсутствии ошибок в приведенных выше командах. Это означает, что у вас установлен веб-сервер Apache с поддержкой SSL.
Получение сертификата SSL
Существует несколько способов создания и получения сертификата SSL, подписанного центром сертификации.
Если вы хотите внедрить SSL на веб-сервере интрасети, то в большинстве организаций есть внутренняя группа по выдаче сертификатов, так что вам нужно проконсультироваться с ними. Но вам все равно нужно сгенерировать CSR (запрос на подпись сертификата), и вы можете сделать это с помощью OpenSSL.
Однако, если вы хотите защитить URL-адрес , доступный в Интернете, , тогда вы можете купить сертификат у VeriSign, GoDaddy, Namecheap и т. Д.или получите БЕСПЛАТНЫЙ сертификат от Let’s Encrypt.
Let’s Encrypt — это совместный проект Linux Foundation, который предлагает БЕСПЛАТНЫЙ сертификат SSL / TLS . Я воспользуюсь Let’s Encrypt, чтобы получить один сертификат для моего домена — Chandan.io
Существует несколько способов создания CSR, но самый простой , который я нашел, — это использование онлайн-инструмента «SSL бесплатно».
Введите URL-адрес, который вы хотите защитить.
Подтвердите право собственности на домен одним из перечисленных способов и загрузите файлы сертификата домена.
Вы получите три файла, которые мы будем использовать в дальнейшем для настройки веб-сервера Apache.
- ключ — это ваш ключевой файл, и его нельзя никому раскрывать.
- Certificate — актуальный SSL-сертификат для вашего домена
- Ca_bundle — корневой / промежуточный сертификат подписывающей стороны
Перенесите загруженный файл на веб-сервер. Вскоре они нам понадобятся.
Конфигурация Apache SSL
И последний шаг — настроить Apache, чтобы он мог обслуживать запросы по HTTPS.
- Войдите на веб-сервер Apache
- Сделайте резервную копию файла httpd.conf (расположение по умолчанию / usr / local / apache2 / conf /)
- Откройте файл с помощью редактора vi и убедитесь, что модуль mod_ssl и httpd-ssl.conf существуют и не прокомментированы
LoadModule модули ssl_module / mod_ssl.so
Включите conf / extra / httpd-ssl.conf
Мы будем использовать файл httpd-ssl.conf для настройки деталей сертификата. Чтобы убедиться в наличии правильных параметров, необходимо выполнить следующие действия.
- SSLCertificateFile — Путь к файлу CRT сертификата, который вы скачали ранее
- SSLCertificateKeyFile — путь к файлу ключей private.a
- SSLCertificateChainFile — путь к файлу ca_bundle.crt
Совет : вы можете создать новую папку с именем «ssl» и хранить в ней все файлы, связанные с сертификатом.
- При необходимости сделайте резервную копию и измените файл с помощью редактора vi.
SSLCertificateFile "/ usr / local / apache2 / conf / ssl / certificate.crt "
SSLCertificateChainFile "/usr/local/apache2/conf/ssl/ca_bundle.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/private.key"
Затем вам необходимо настроить директиву « ServerName ». Обычно это ваш домен или URL-имя
.
Имя сервера chandan.io
- Сохраните файл и перезапустите веб-сервер Apache
компакт-диск / usr / local / apache2 / bin
./apachectl stop
./apachectl start
И, наконец, вы должны убедиться, что ваш домен сопоставлен с недавно настроенным IP-адресом веб-сервера.После этого попробуйте получить доступ к своему домену с помощью https.
Как видите, Chandan.io доступен по https с настроенным мной сертификатом.
Вышеупомянутые шаги необходимы для настройки сертификата SSL, и вы должны настроить SSL, чтобы усилить и защитить, что я объяснил здесь. Перед запуском вы также можете протестировать SSL / TLS своего веб-сервера, чтобы убедиться, что он не подвержен распространенным уязвимостям безопасности.
Надеюсь, это дает вам представление о том, как реализовать сертификат SSL на вашем веб-сервере Apache, чтобы URL-адрес был доступен через HTTPS.
Apache Open SSL Configuration для установки сертификата
Установка SSL-сертификата в Apache.
Скопируйте файлы сертификатов на свой сервер.
Установка SSL-сертификата сервера Apache
- Загрузите файлы промежуточного (XYZ.crt) и основного сертификата (your_domain_name.crt) из своей клиентской области, затем скопируйте их в каталог на своем сервере, где вы будете хранить свой сертификат. и ключевые файлы. Сделайте их доступными для чтения только root.
- Найдите файл конфигурации Apache для редактирования.
Расположение и имя файла конфигурации могут отличаться от сервера к серверу, особенно если вы используете специальный интерфейс для управления конфигурацией сервера.
Основной файл конфигурации Apache обычно называется httpd.conf или apache2.conf . Возможные места для этого файла: / etc / httpd / или / etc / apache2 / . Полный список макетов установки по умолчанию для Apache HTTPD в различных операционных системах и дистрибутивах см. В Httpd Wiki — DistrosDefaultLayout.
Часто конфигурация сертификата SSL находится в блоке
Один из способов найти конфигурацию SSL в дистрибутивах Linux — выполнить поиск с помощью grep, как показано в примере ниже.
Введите следующую команду:
grep -i -r «SSLCertificateFile» / etc / httpd /
Где « / etc / httpd / » — это базовый каталог для вашей установки Apache.
- Определите блок SSL
для настройки. Если вам нужно, чтобы ваш сайт был доступен как через защищенные (https), так и через незащищенные (http) соединения, вам понадобится виртуальный хост для каждого типа соединения. Сделайте копию существующего незащищенного виртуального хоста и настройте его для SSL, как описано в шаге 4.
Если вам нужен только безопасный доступ к вашему сайту, настройте существующий виртуальный хост для SSL, как описано в шаге 4.
- Настройте блок
для сайта с поддержкой SSL. Ниже приведен очень простой пример виртуального хоста, настроенного для SSL. Части, выделенные жирным шрифтом, являются частями, которые необходимо добавить для конфигурации SSL:
443 >
DocumentRoot / var / www / html2
ServerName www.yourdomain.com
… on
SSLCertificateFile /path/to/your_domain_name.crt
SSLCertificateKeyFile /path/to/your_private.key
SSLCertificateChainFile /path/to/XYZ.crt
Отрегулируйте имена файлов:
для соответствия вашим файлам сертификата
SSLCertificateFile должен быть вашим файлом сертификата (например,your_domain_name.crt).
- SSLCertificateKeyFile должен быть ключевым файлом, сгенерированным при создании CSR.
- SSLCertificateChainFile должен быть промежуточным файлом сертификата (XYZ.crt). Если директива SSLCertificateChainFile не работает, попробуйте вместо нее использовать директиву SSLCACertificateFile.
- Перед перезапуском проверьте конфигурацию Apache.
Перед перезапуском всегда лучше проверять файлы конфигурации Apache на наличие ошибок, потому что Apache не запустится снова, если в файлах конфигурации есть синтаксические ошибки.Выполните следующую команду: (в некоторых системах это apache2ctl)
apachectl configtest
- Перезапустите Apache.
Вы можете использовать команды apachectl для остановки и запуска Apache с поддержкой SSL:
apachectl stop
apachectl startПримечание: Если Apache не запускается с поддержкой SSL, попробуйте использовать apachectl startssl вместо apachectl start. Если поддержка SSL загружается только с «apachectl startssl», мы рекомендуем вам настроить конфигурацию запуска apache, включив поддержку SSL в обычную команду «apachectl start».В противном случае вашему серверу может потребоваться перезапустить Apache вручную с помощью «apachectl startssl» в случае перезагрузки сервера. Обычно это связано с удалением тегов
и , содержащих вашу конфигурацию SSL.
Установите сертификат SSL на Apache Mod_SSL
Настройка Apache с использованием SSL
В следующих инструкциях предполагается, что вы хотите запустить как защищенный сервер (на порту 443
), так и обычный сервер (на порт 80
) .Во-первых, вам нужно настроить сервер на прослушивание обоих портов. Отредактируйте /etc/apache2/ports.conf
(в Debian; он включен в apache2.conf
) или отредактируйте /etc/apache2/apache2.conf
напрямую, включив в него строки:
Listen 80 Слушайте 443
Затем отредактируйте / etc / apache2 / sites-enabled / yoursite
, чтобы использовать настройки SSL. Разделение обычных и безопасных настроек сервера с помощью VirtualHosts — самый простой вариант с точки зрения ремонтопригодности.Любая конфигурация вне разделов VirtualHosts (например, установка ServerAdmin) будет применяться как к (и к любым другим) VirtualHosts.
Примечание: Начиная с Apache 2.4.8, практика хранения сертификата сервера и промежуточной цепочки сертификатов в отдельных файлах устарела. Текущие и устаревшие методы подробно описаны на интерактивных вкладках ниже.
Apache 2.4.8 или выше Apache 2.4.7 или ниже
Версии Apache 2.4.8 и выше ожидайте, что ваш сертификат сервера будет объединен с любыми промежуточными сертификатами в одном файле. Чтобы загрузить связанный файл с SSL.com, выберите ссылку для загрузки Nginx
в своей учетной записи портала:
В качестве альтернативы вы можете объединить существующий сертификат и промежуточные файлы с помощью следующей команды:
$ cat / etc / ssl / private / ca-bundle-client.crt >> /etc/ssl/private/yourdomain.crt
Добавьте следующий раздел в свой файл конфигурации:
# =========== ====================================== # Настройки SSL / TLS # ================================================= ИмяVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine включен SSLCertificateFile / etc / ssl / private / yourdomain.chained.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key
Несколько примечаний по этой конфигурации:
-
SSLEngine
должен быть включен, чтобы сервер использовал SSL. -
DocumentRoot
устанавливает корневой каталог для этого виртуального хоста. Это означает, что вы можете полностью отделить защищенный контент от обычного контента. -
SSLCertificateFile
должен быть установлен в то место, куда вы помещаете файл с сертификатом сервера и промежуточной цепочкой. -
SSLCertificateKeyFile
должен быть установлен в то место, где вы помещаете файл закрытого ключа.
Добавьте следующий раздел в свой файл конфигурации:
# =================================== ============== # Настройки SSL / TLS # ================================================= ИмяVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine включен SSLCertificateFile /etc/ssl/private/yourdomain.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key SSLCertificateChainFile / etc / ssl / private / ca-bundle-client.crt
Несколько примечаний по этой конфигурации:
-
SSLEngine
должен быть включен, чтобы сервер использовал SSL. -
DocumentRoot
устанавливает корневой каталог для этого виртуального хоста. Это означает, что вы можете полностью отделить защищенный контент от обычного контента. -
SSLCertificateFile, SSLCertificateChainFile,
иSSLCertificateKeyFile
должны быть установлены в места, куда вы помещаете файлы сертификата, промежуточного и закрытого ключей, соответственно.
Чтобы запустить обычный сервер на 80-м порту, добавьте в файл конфигурации следующий раздел:
NameVirtualHost *: 80 DocumentRoot "/ var / www / yoursite" # Настройка каталога для конкретного хоста, параметры и т.д. # Большинство этих параметров, скорее всего, будет установлено вне VirtualHosts # разделов.
После сохранения отредактированного файла конфигурации перезапустите веб-сервер. Если вы использовали парольную фразу при создании сертификата, вам нужно будет ввести ее, когда возникнет вопрос.
Тестирование
Создайте базовый индекс.html, где бы ни находился корневой каталог вашего веб-сервера, если у вас еще нет там содержимого.
Затем укажите в браузере https://www.yoursite.com
. Вы должны увидеть открытое SSL-соединение и доставку страницы. Если вы используете самозаверяющий сертификат, в вашем браузере появится всплывающее окно с предупреждением о том, что подлинность сервера не может быть подтверждена. Вы можете просмотреть и принять сертификат. При использовании внешнего сертификата все должно происходить без вмешательства.
Также убедитесь, что у вас нет доступа к защищенному контенту с помощью http: //. Если вы попытаетесь, вы должны получить сообщение об ошибке.
Устранение неполадок
Если он не работает должным образом, сначала проверьте, действительно ли ваш сервер работает, используя ps -a | grep apache
. Если это ничего не вернет, попробуйте перезапустить его и проверьте сообщения об ошибках на терминале.
Также убедитесь, что права доступа к файлам ключа и сертификата установлены правильно (см. Выше), а также права доступа к вашему тестовому файлу HTML и его родительскому каталогу.
Далее проверьте логи. Вы должны проверить как основные журналы сервера, так и журналы SSL, которые вы настроили в своем файле конфигурации выше. Если вы не получили ничего полезного, попробуйте изменить значение LogLevel в файле конфигурации Apache2 на «отладка», перезапустите Apache2 и повторите попытку. Это должно дать больше данных файла журнала.
Если вы также используете обычный веб-сервер на 80-м порту, попробуйте загрузить тестовую страницу через http: //, а не https: //, чтобы определить, связана ли проблема с веб-сервером или с SSL-соединением.Обратите внимание, что в приведенной выше настройке корневой каталог веб-сервера отличается для http: // и https: //, поэтому у вас не будет (или не должно быть!) Доступа к одному и тому же контенту. Если ваша тестовая страница в корневом каталоге http: // работает нормально, а ваша тестовая страница в корневом каталоге https: // — нет, это может помочь вам определить проблему.
Если проблема заключается в соединении SSL, полезным инструментом является s_client
, который представляет собой диагностический инструмент для устранения неполадок соединений TLS / SSL.Базовое использование: / usr / bin / openssl s_client -connect localhost: 443
. Есть также множество других вариантов, о которых вы можете ознакомиться в документации. Если вы получаете сообщения об ошибках, это должно помочь вам найти проблему.
Спасибо, что выбрали SSL.com! Если у вас есть какие-либо вопросы, свяжитесь с нами по электронной почте [email protected], позвоните по телефону 1-877-SSL-SECURE или просто нажмите ссылку чата в правом нижнем углу этой страницы.
Как создать самоподписанный сертификат 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.key -out /etc/ssl/certs/apache-selfsigned.crt
Вам будет задан ряд вопросов.Прежде чем мы перейдем к этому, давайте посмотрим, что происходит в команде, которую мы выдаем:
- openssl : это основной инструмент командной строки для создания сертификатов, ключей и других файлов OpenSSL и управления ими.
- req : Эта подкоманда указывает, что мы хотим использовать управление запросом подписи сертификата (CSR) X.509. «X.509» — это стандарт инфраструктуры открытых ключей, которого придерживаются SSL и TLS при управлении ключами и сертификатами. Мы хотим создать новый сертификат X.509 cert, поэтому мы используем эту подкоманду.
- -x509 : Это дополнительно изменяет предыдущую подкоманду, сообщая утилите, что мы хотим создать самозаверяющий сертификат вместо генерации запроса на подпись сертификата, как это обычно бывает.
- -nodes : Это говорит OpenSSL пропустить опцию защиты нашего сертификата парольной фразой. Нам нужно, чтобы Apache мог читать файл без вмешательства пользователя при запуске сервера. Парольная фраза предотвратит это, потому что нам придется вводить ее после каждого перезапуска.
- -дней 365 : этот параметр устанавливает период времени, в течение которого сертификат будет считаться действительным. Мы устанавливаем его здесь на один год.
- -newkey rsa: 2048 : указывает, что мы хотим сгенерировать новый сертификат и новый ключ одновременно. Мы не создали ключ, необходимый для подписи сертификата на предыдущем шаге, поэтому нам нужно создать его вместе с сертификатом. Часть
rsa: 2048
сообщает ему о создании ключа RSA длиной 2048 бит. - -keyout : Эта строка сообщает OpenSSL, где разместить сгенерированный файл закрытого ключа, который мы создаем.
- -out : Это сообщает OpenSSL, где разместить сертификат, который мы создаем.
Как было сказано выше, эти параметры будут создавать как файл ключа, так и сертификат. Нам зададут несколько вопросов о нашем сервере, чтобы правильно вставить информацию в сертификат.
Заполните все запросы соответствующим образом. Самая важная строка — это та, которая запрашивает общее имя (например, полное доменное имя сервера или ВАШЕ имя)
. Вам необходимо ввести доменное имя, связанное с вашим сервером, или, что более вероятно, публичный IP-адрес вашего сервера.
Все подсказки будут выглядеть примерно так:
Вывод
Название страны (двухбуквенный код) [Австралия]: США
Название штата или провинции (полное название) [Some-State]: Нью-Йорк
Название населенного пункта (например, город) []: Нью-Йорк.
Название организации (например, компания) [Internet Widgits Pty Ltd]: Bouncy Castles, Inc.Название организационной единицы (например, раздел) []: Министерство водных горок.
Общее имя (например, полное доменное имя сервера или ВАШЕ имя) []: server_IP_address
Адрес электронной почты []: admin@your_domain.com
Оба созданных вами файла будут помещены в соответствующие подкаталоги каталога / etc / ssl
.
Пока мы используем OpenSSL, мы должны также создать сильную группу Диффи-Хеллмана, которая будет использоваться для согласования с клиентами идеальной прямой секретности.
Мы можем сделать это, набрав:
- sudo openssl dhparam -out / etc / ssl / certs / dhparam.pem 2048
Это может занять несколько минут, но когда это будет сделано, у вас будет сильная группа DH по адресу /etc/ssl/certs/dhparam.pem
, которую мы сможем использовать в нашей конфигурации.
Шаг 2. Настройте Apache для использования SSL
Мы создали наши файлы ключей и сертификатов в каталоге / etc / ssl
. Теперь нам просто нужно изменить нашу конфигурацию Apache, чтобы воспользоваться этим.
Внесем несколько изменений в нашу конфигурацию:
- Мы создадим фрагмент конфигурации, чтобы указать надежные параметры SSL по умолчанию.
- Мы изменим включенный файл виртуального хоста SSL Apache, чтобы он указывал на наши сгенерированные сертификаты SSL.
- (рекомендуется) Мы изменим незашифрованный файл виртуального хоста для автоматического перенаправления запросов на зашифрованный виртуальный хост.
Когда мы закончим, у нас должна быть безопасная конфигурация SSL.
Создание фрагмента конфигурации Apache с настройками надежного шифрования
Сначала мы создадим фрагмент конфигурации Apache, чтобы определить некоторые настройки SSL.Это установит Apache с надежным набором шифров SSL и включит некоторые расширенные функции, которые помогут обеспечить безопасность нашего сервера. Установленные нами параметры могут использоваться любыми виртуальными хостами, поддерживающими SSL.
Создайте новый фрагмент в каталоге / etc / apache2 / conf-available
. Мы назовем файл ssl-params.conf
, чтобы прояснить его назначение:
- sudo nano /etc/apache2/conf-available/ssl-params.conf
Для безопасной настройки Apache SSL мы будем использовать рекомендации Реми ван Элста по Cipherli.ул. Этот сайт предназначен для предоставления простых в использовании настроек шифрования для популярного программного обеспечения. Вы можете узнать больше о его решениях относительно выбора Apache здесь.
Предлагаемые настройки на сайте, ссылка на который приведена выше, обеспечивают надежную защиту. Иногда это происходит за счет большей совместимости с клиентами. Если вам нужна поддержка старых клиентов, есть альтернативный список, к которому можно получить доступ, щелкнув ссылку на странице с надписью «Да, дайте мне набор шифров, который работает с устаревшим / старым программным обеспечением.”Этот список может быть заменен элементами, скопированными ниже.
Выбор используемой конфигурации во многом зависит от того, что вам нужно поддерживать. Оба они обеспечат большую безопасность.
Для наших целей мы можем полностью скопировать предоставленные настройки. Мы просто внесем два небольших изменения.
Установите директиву SSLOpenSSLConfCmd DHParameters
, чтобы она указывала на файл Диффи-Хеллмана, который мы создали ранее. Кроме того, найдите время, чтобы прочитать о HTTP Strict Transport Security, или HSTS, и, в частности, о функции «предварительной загрузки».Предварительная загрузка HSTS обеспечивает повышенную безопасность, но может иметь далеко идущие последствия при случайном или неправильном включении. В этом руководстве мы не будем предварительно загружать настройки, но вы можете изменить их, если уверены, что понимаете последствия:
/etc/apache2/conf-available/ssl-params.conf
# с https://cipherli.st/
# и https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html
SSLCipherSuite EECDH + AESGCM: EDH + AESGCM: AES256 + EECDH: AES256 + EDH
SSLProtocol Все -SSLv2 -SSLv3
SSLHonorCipherOrder On
# На данный момент отключите предварительную загрузку HSTS.Вы можете использовать закомментированную строку заголовка, которая включает
# директиву "preload", если вы понимаете последствия.
#Header всегда устанавливает Strict-Transport-Security "max-age = 63072000; includeSubdomains; preload"
Заголовок всегда установлен Strict-Transport-Security «max-age = 63072000; includeSubdomains»
Заголовок всегда установлен X-Frame-Options DENY
Заголовок всегда установлен X-Content-Type-Options nosniff
# Требуется Apache> = 2.4
SSLCompression выключен
SSLSessionTickets Off
SSLUseStapling на
SSLStaplingCache "shmcb: logs / stapling-cache (150000)"
SSLOpenSSLConfCmd DHParameters "/ etc / ssl / certs / dhparam.pem "
Сохраните и закройте файл, когда закончите.
Изменение файла виртуального хоста Apache SSL по умолчанию
Затем давайте изменим /etc/apache2/sites-available/default-ssl.conf
, файл виртуального хоста Apache SSL по умолчанию. Если вы используете другой файл блока сервера, замените его имя в приведенных ниже командах.
Прежде чем мы продолжим, создадим резервную копию исходного файла виртуального хоста SSL:
- sudo cp / etc / apache2 / sites-available / default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak
Теперь откройте файл виртуального хоста SSL, чтобы внести изменения:
- sudo nano /etc/apache2/sites-available/default-ssl.conf
Внутри, после удаления большей части комментариев, файл виртуального хоста по умолчанию должен выглядеть примерно так:
/etc/apache2/sites-available/default-ssl.conf
ServerAdmin веб-мастер @ localhost
DocumentRoot / var / www / html
ErrorLog $ {APACHE_LOG_DIR} / error.бревно
CustomLog $ {APACHE_LOG_DIR} /access.log объединены
SSLEngine включен
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLOptions + StdEnvVars
<Каталог / usr / lib / cgi-bin>
SSLOptions + StdEnvVars
# BrowserMatch "MSIE [2-6]" \
# nokeepalive ssl-unclean-shutdown \
# downgrade-1.0 сила-реакция-1.0
Мы будем вносить небольшие изменения в файл. Мы установим обычные вещи, которые мы хотели бы настроить в файле виртуального хоста (адрес электронной почты ServerAdmin, имя сервера и т. Д.), Настроим директивы SSL, чтобы они указывали на наши файлы сертификата и ключей, и раскомментировали один раздел, который обеспечивает совместимость для более старых браузеры.
После внесения этих изменений ваш серверный блок должен выглядеть примерно так:
/ etc / apache2 / sites-available / default-ssl.conf
ServerAdmin [email protected]
ServerName server_domain_or_IP
DocumentRoot / var / www / html
ErrorLog $ {APACHE_LOG_DIR} /error.log
CustomLog $ {APACHE_LOG_DIR} /access.log объединены
SSLEngine включен
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile / etc / ssl / private / apache-selfsigned.ключ
SSLOptions + StdEnvVars
<Каталог / usr / lib / cgi-bin>
SSLOptions + StdEnvVars
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
Сохраните и закройте файл, когда закончите.
(рекомендуется) Измените незашифрованный файл виртуального хоста для перенаправления на HTTPS
В настоящее время сервер будет предоставлять как незашифрованный HTTP, так и зашифрованный HTTPS-трафик. Для большей безопасности рекомендуется в большинстве случаев автоматически перенаправлять HTTP на HTTPS. Если вы не хотите или не нуждаетесь в этой функции, можете пропустить этот раздел.
Чтобы настроить незашифрованный файл виртуального хоста для перенаправления всего трафика на шифрование SSL, мы можем открыть файл / etc / apache2 / sites-available / 000-default.conf
файл:
- sudo nano /etc/apache2/sites-available/000-default.conf
Внутри блоков конфигурации VirtualHost
нам просто нужно добавить директиву Redirect
, указывающую весь трафик на SSL-версию сайта:
/etc/apache2/sites-available/000-default.conf
. . .
Перенаправить "/" "https: // your_domain_or_IP /"
.. .
Сохраните и закройте файл, когда закончите.
Шаг 3. Настройте брандмауэр
Если у вас включен брандмауэр ufw
, как рекомендовано в руководствах по предварительным требованиям, может потребоваться изменить настройки, чтобы разрешить трафик SSL. К счастью, Apache регистрирует несколько профилей с ufw
при установке.
Мы можем увидеть доступные профили, набрав:
Вы должны увидеть следующий список:
Выход
Доступные приложения:
Apache
Apache Full
Apache Secure
OpenSSH
Вы можете увидеть текущую настройку, набрав:
Если ранее вы разрешили только обычный HTTP-трафик, ваш результат может выглядеть следующим образом:
Выход
Статус: активен
К действию от
- ------ ----
OpenSSH РАЗРЕШИТЬ В любом месте
Apache РАЗРЕШИТЬ В любом месте
OpenSSH (v6) РАЗРЕШИТЬ В любом месте (v6)
Apache (v6) РАЗРЕШИТЬ В любом месте (v6)
Чтобы дополнительно пропустить HTTPS-трафик, мы можем разрешить профиль «Apache Full», а затем удалить избыточный профиль «Apache»:
- sudo ufw разрешить 'Apache Full'
- sudo ufw удалить разрешить 'Apache'
Теперь ваш статус должен выглядеть так:
Выход
Статус: активен
К действию от
- ------ ----
OpenSSH РАЗРЕШИТЬ В любом месте
Apache Full ALLOW Anywhere
OpenSSH (v6) РАЗРЕШИТЬ В любом месте (v6)
Apache Full (v6) РАЗРЕШИТЬ В любом месте (v6)
Шаг 4. Включите изменения в Apache
Теперь, когда мы внесли наши изменения и настроили наш брандмауэр, мы можем включить модули SSL и заголовков в Apache, включить наш виртуальный хост с поддержкой SSL и перезапустить Apache.
Мы можем включить mod_ssl
, модуль Apache SSL и mod_headers
, необходимые для некоторых настроек в нашем фрагменте SSL, с помощью команды a2enmod
:
- sudo a2enmod SSL
- заголовки sudo a2enmod
Затем мы можем включить наш виртуальный хост SSL с помощью команды a2ensite
:
- sudo a2ensite default-ssl
Нам также нужно будет включить наши ssl-params.conf
, чтобы прочитать значения, которые мы установили:
На этом этапе наш сайт и необходимые модули включены. Мы должны убедиться, что в наших файлах нет синтаксических ошибок. Мы можем сделать это, набрав:
- sudo apache2ctl configtest
Если все прошло успешно, вы получите следующий результат:
Выходные данные
AH00558: apache2: Не удалось надежно определить полное доменное имя сервера, используя 127.0.1.1. Установите глобальную директиву ServerName, чтобы подавить это сообщение.
Синтаксис ОК
Первая строка — это просто сообщение о том, что директива ServerName
не установлена глобально. Если вы хотите избавиться от этого сообщения, вы можете установить ServerName
на доменное имя или IP-адрес вашего сервера в /etc/apache2/apache2.conf
. Это необязательно, так как сообщение не причинит вреда.
Если ваш вывод содержит Syntax OK
, ваш файл конфигурации не содержит синтаксических ошибок.Мы можем безопасно перезапустить Apache для реализации наших изменений:
- sudo systemctl перезапустить apache2
Шаг 5. Тестирование шифрования
Теперь мы готовы протестировать наш SSL-сервер.
Откройте веб-браузер и введите https: //
, а затем доменное имя или IP-адрес вашего сервера в адресной строке:
https: // server_domain_or_IP
Поскольку созданный нами сертификат не подписан одним из доверенных центров сертификации вашего браузера, вы, скорее всего, увидите пугающее предупреждение, подобное приведенному ниже:
Это ожидаемо и нормально.Нас интересует только аспект шифрования нашего сертификата, а не сторонняя проверка подлинности нашего хоста. Нажмите «РАСШИРЕННЫЙ», а затем предоставленную ссылку, чтобы в любом случае перейти на ваш хост:
Вы должны попасть на ваш сайт. Если вы посмотрите в адресную строку браузера, вы увидите замок со знаком «x» над ним. В данном случае это просто означает, что сертификат нельзя проверить. Он по-прежнему шифрует ваше соединение.
Если вы настроили Apache для перенаправления HTTP на HTTPS, вы также можете проверить, правильно ли работает перенаправление:
http: // server_domain_or_IP
Если это приводит к тому же значку, это означает, что перенаправление сработало правильно.
Шаг 6. Переход на постоянное перенаправление
Если ваше перенаправление сработало правильно и вы уверены, что хотите разрешить только зашифрованный трафик, вам следует снова изменить незашифрованный виртуальный хост Apache, чтобы сделать перенаправление постоянным.
Снова откройте файл конфигурации серверного блока:
- sudo nano /etc/apache2/sites-available/000-default.conf
Найдите строку Redirect
, которую мы добавили ранее. Добавьте к этой строке постоянных
, что изменяет перенаправление с временного перенаправления 302 на постоянное перенаправление 301:
/ etc / apache2 / sites-available / 000-default.conf
. . .
Постоянное перенаправление "/" "https: // your_domain_or_IP /"
. . .
Сохраните и закройте файл.
Проверьте свою конфигурацию на наличие синтаксических ошибок:
- sudo apache2ctl configtest
Когда будете готовы, перезапустите Apache, чтобы сделать перенаправление постоянным:
- sudo systemctl перезапустить apache2
Заключение
Вы настроили сервер Apache для использования надежного шифрования для клиентских подключений.