DataLife Engine — Softnews Media Group
Настройка HTTPS в Apache на Windows 8.1
Автор: genadie от 4-02-2014, 20:41, посмотрело: 60145
Представленная статья написана, как продолжение Установка веб-сервера Apache + PHP + MySQL на Windows 8.1 , соответственно все, приведенные там настройки остаются в силе, мы лишь дополним наш веб-сервер защищенным HTTPS-соединением и рассмотрим вопрос как создать самоподписанный SSL-сертификат.
Для начала переходим в C:\server\Apache24\conf и открываем для редактирования файл конфигурации Apache – «httpd.conf»:
Под строкой Listen 172.16.1.3:80
Находим и раскоментируем строчку:
Далее идем в конец фала и видим там блок:
Приводим его к следующему виду:
Сохраните изменения и закройте файл «httpd.conf»
Теперь откройте файл «C:\server\Apache24\conf\extra\httpd-vhosts.conf» и произведите в нем следующие изменения:
Коментируем созданный нами в прошлой статье блок:
И вставляем следующее:
Так же добавим блок для перенаправления, если кто-то придёт на сайт по протоколу HTTP:
В итоге должно получится как-то так:
ServerName local.malwselennaia.ru
Redirect permanent / https://local.malwselennaia.ru
#
# DocumentRoot «C:/sait/local.malwselennaia.ru/www»
# ServerName local.malwselennaia.ru
# ErrorLog «C:/sait/local.malwselennaia.ru/error.log»
# CustomLog «C:/sait/local.malwselennaia.ru/access.log» common
#
SSLEngine On
SSLCertificateFile conf/ssl/my-server.cert
SSLCertificateKeyFile conf/ssl/my-server.key
DocumentRoot «C:/sait/local.malwselennaia.ru/www»
ServerName local.malwselennaia.ru
ErrorLog «C:/sait/local.malwselennaia.ru/error.log»
CustomLog «C:/sait/local.malwselennaia.ru/access.log» common
Сохраните изменения и закройте файл «httpd-vhosts.conf»
В данном примере «local.malwselennaia.ru»- имя моего сайта, у себя вставляете свои данные.
DocumentRoot «C:/sait/local.malwselennaia.ru/www»- директория, в которой находится скрипт сайта.
ServerName local.malwselennaia.ru- имя, которое вводим в браузере.
SSLCertificateFile conf/ssl/my-server.cert
SSLCertificateKeyFile conf/ssl/my-server.key-директория, где лежит сертификат.
Далее необходимо создать самоподписанный сертификат и хотя браузеры начнут ругаться, что такой сертификат не является доверенным, но свою задачу выполнять он всё таки будет. И что немаловажно — такой сертификат не будет стоить ни копейки, в отличии от сертификатов, подписанных компаниями-сертификаторами.
Копируем файлик openssl.cnf из каталога C:\server\Apache24\conf в каталог C:\server\Apache24\bin .
Создаем сертификат для нашего сервера.
Для этого заходим в каталог C:\server\Apache24\bin и открываем командную строку от имени администратора.
Теперь вводим следующее:
Видим ответ с предложением ввести пароль:
Вводим свой пароль и видим предложение ввести пароль еще раз:
Теперь необходимо ввести название страны (2 буквы кода):
Далее нужно ввести Штат или Провинция (необязательный параметр, я оставлю пустым):
Теперь название местности (оставлю пусто):
Название организации (опять пропущу):
Название Подразделения (оставлю пусто):
Дошли до: «Common Name (e.g. server FQDN or YOUR name) []:» Сдесь нужно прописать свое доменное имя (название сайта, в моем случае это local.malwselennaia.ru):
Вводим почту админа:
Вводим необязательное название компании (оставлю пусто):
После этого в каталоге C:\server\Apache24\bin образуется файлик my-server.csr
Далее последовательно даем команды:
Видим ответ с предложением ввести пароль:
Вводим пароль, получаем ответ:
Создаем каталог ssl в каталоге C:\server\Apache24\conf и перемещаем туда файлики my-server.key и my-server.cert из каталога C:\server\Apache24\bin .
Вот собственно и все, проверяем результат:
Вводим в браузере:
Получаем вот такой ответ:
Жмем «продолжить открытие веб-сайта»:
Как видим в адресной строке браузера , нас перенаправили уже по протоколу https на страницу входа.
Установка сертификата от Windows Server CA на веб-сервер Apache
Рассмотрим пример установки цифрового сертификата X509 на веб-сервер Apache, выданного локальным корневым Центром сертификации, работающим на Windows Server 2008. Пошагово решение задачи состоит из нескольких последовательных шагов:
- Генерация запроса на сертификат средствами OpenSSL к ЦС Windows;
- Получение от ЦС файла сертификата (.cer) в формате DER X509
- Конвертация полученного сертификата в .pem и прикручивание оного к веб-серверу Apache
Для того чтобы создать запрос к ЦС Windows нам понадобиться OpenSSL, а именно конкретно 3 файла из его состава — openssl.exe , ssleay32.dll , libeay32.dll . Сложим их в один каталог, например в каталог \Documents в профиле пользователя. Далее создаем закрытый ключ:
После этого в нашем каталоге появиться файл с ключом. Далее с использованием этого файла мы подготовим запрос к ЦС. Но для этого подготовим конфигурационный файл для OpenSSL, чтобы он не задавал нам лишних вопросов. Итак создаем текстовый файл my_openssl.cnf со следующим содержимым:
Как вы понимаете, в этом файле мы указываем параметры, которые нужны для идентификации запроса сертификата в ЦС, т.е. указываем имя сервера которому требуется сертификат, имя организации и т.п..
Далее создаем запрос на сертификат с учётом подготовленных ранее параметров:
Полученный файл запроса APACHE-SERVER.req загружаем в центр сертификации Windows Server, в ЦС выдаем сертификат на загруженный запрос. Выгружаем из ЦС новый сертификат в файл APACHE-SERVER.cer . Теперь наша задача — конвертировать наш бинарный DER сертификат в формат, понятный для Apache, и делаем мы это так:
Всё, что нам нужно — готово, а именно файлы key и pem . Делаем соответствующие изменения в файле конфигурации сервера Apache — httpd.conf — вписываем туда ссылки на наш сертификат:
После чего перезапускаем сервис Apache2, и если всё сделали правильно, то при обращении на веб-узел увидим, что Apache использует наш сертификат.
Apache под windows установка сертификата
SSL-сертификаты применяются для обеспечения безопасного соединения и передачи данных в зашифрованном виде.
Сертификаты выдаются сертификационными центрами и представляют собой файл сертификата, выпущенного для определенного доменного имени, и приватного ключа.
Также необходимы промежуточные сертификаты в случае если файлы, упомянутые ранее, были сгенерированы не корневым центром сертификации.
Также возможно использование сертификатов, сгенерированных самостоятельно на Linux сервере. Однако, браузер пользователя при доступе к сайту в этом случае будет выдавать предупреждение о недоверенном сертификате.
SSL сертификаты чаще всего устанавливаются на веб- и почтовые сервера. В рамках данного материала будет рассмотрена установка сертификата на веб-сервер Apache для обеспечения возможности работы сайта по защищенному протоколу https
Как установить ssl сертификат на сервер Apache:
1. Чтобы установить на сервер сертификат необходимо подключиться к нему по протоколу SSH от имени пользователя root;
2. Файлы сертификатов могут размещаться в любом каталоге, часто их размещают в /etc/apache2/ssl.
Переходим в /etc/apache2 и создаем директорию
3.Создаем файлы сертификата, приватного ключа и промежуточного сертификата и помещаем в них содержимое аналогичных файлов, полученных от центра сертификации (или сгенерированных на сервере)
Содержимое сертификата выглядит примерно следующим образом:
——BEGIN CERTIFICATE——
MIIFEDCCA/igAwIBAgISA+1wB7/BBdk7NHpvkfWRpapqMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNzAxMjkwNjEwMDBaFw0x
NzA0MjkwNjEwMDBaMCExHzAdBgNVBAMTFnJlbW90ZS10ZWNoLXN1cHBvcnQucnUw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQChoT+eOaGZXNtkoPLe6BNJ
d2gQqeTP1n8n2GRcJE7gKgduglfs1YfvE3CtoMYEm6veKKvVKE8AGox0USUPuM8S
——END CERTIFICATE——
SHIFT+INS чтобы вставить содержимое
F2 чтобы сохранить
Выходим нажимая ESC
Аналогичным образом создаем файл приватного ключа
Пример содержимого файла:
——BEGIN PRIVATE KEY——
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQChoT+eOaGZXNtk
oPLe6BNJd2gQqeTP1n8n2GRcJE7gKgduglfs1YfvE3CtoMYEm6veKKvVKE8AGox0
USUPuM8SRDeo4kJ7tAaQC1Ss8B6Dj57EKTJ+Jw+m+SzJEyfs3inAmrwKhR1KjRUe
SzsEgsralTZSK1uvoxPaKTsqPshs5oK3ZeTwzIR+keHbQUkxNyhKEM4j+dOFrykb
NLkJDABDzknmjodTr6fEgA5D99AAj/aWxaaOch8NxLQS60EasgdGFhIBZ/xACNdM
zIP3mn5WValj5yBOeX61f2qy0jy8RcwHMJbiA3IEw6oVVi+iTO6kgHrwhULCWJ8T
——END PRIVATE KEY——
Добавляем промежуточный сертификат, подтверждающий корректность цепочки
Пример промежуточного сертификата:
——BEGIN CERTIFICATE——
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
——END CERTIFICATE——
4. Что того чтобы работа веб-сервера по защищенному соединению необходимо, что был включен модуль apache2 SSL
Просмотреть включен ли модуль можно выполнив следующую команду:
Если вывод не пустой — модуль активирован. Если в выводе ничего нет включаем модуль:
После выполнения команды появляется сообщение «Enabling module ssl».
5. Переходим в каталог, в котором размещаются конфигурационные файлы сайтов — cd /etc/apache2/sites-available и находим конфигурационный файл сайта, подключение к которому по https настраиваем — в данном случае — example.com.conf
6. Создаем копию конфигурационного файла сайта и вносим в него коррективы
cp example.com.conf ssl-example.com.conf
6.1 В строке VirtualHost указываем порт по которому будет осуществляться подключение при работе по https — меняем 80 (значение для http) на 443
6.2 В качестве ServerName указываем имя сайта example.com
6.3 Приводим файл к следующему виду, указывая в нем полные пути к сертификату, приватному ключу и сертификату промежуточному SSLCertificateFile SSLCertificateKeyFile и SSLCACertificateFile
ServerAdmin info@example.com
ServerSignature On
ServerName example.com
AddDefaultCharset utf-8
CustomLog /var/log/apache2/logs/example.com/access.log combined
LogLevel error
SuexecUserGroup user user
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/example.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/example.com.key
SSLCACertificateFile /etc/apache2/ssl/intermediate.crt
SSLProtocol All -SSLv2 -SSLv3
SSLCipherSuite kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2 SSLCompression off
SSLHonorCipherOrder on
DocumentRoot «/home/admin/example.com/www/»
……
7. Активируем сайт:
Фактически при выполнении команды создается символьная ссылка /etc/apache2/sites-availible/ssl-example.com.conf /etc/apache2/sites-enabled/
8. Перезапускаем веб-сервер для того чтобы изменения вступили в силу:
или (если сервис работает под runit)
9. Проверяем статус
Если никаких ошибок не наблюдается — можно проверять доступность сайта по https. Также следует проверить корректность установки сертификата при помощи одного из онлайн-сервисов, предоставляющих подобную возможность.
На этом с вопросом о том, как установить SSL сертификат на сервер все.