Протокол HTTPS позволяет передавать данные между сайтом и пользователем в зашифрованном виде, то есть посторонние лица не могут увидеть содержимое передаваемых данных и изменить их.
Веб-сервер Apache поддерживает работу HTTPS. Для настройки HTTPS на Apache нужен SSL сертификат. Точнее говоря, «SSL сертификат» включает в себя приватный ключ и публичный ключ (сертификат). Также вместе с SSL ключами дополнительно могут присылаться сертификаты центра сертификации, корневой сертификат.
Сертификаты SSL
SSL сертификаты можно разделить на два вида: валидные и самоподписанные.
Сертификат SSL можно сгенерировать у себя на компьютере. Причём можно сгенерировать для любого доменного имени. Но к таким сертификатам у веб-браузеров нет доверия. Поэтому если открыть сайт, защищённый таким сертификатом, то веб-браузер напишет ошибку, что сертификат получен из ненадёжного источника и либо запретит открывать этот сайт, либо предложит перейти на сайт на ваш страх и риск. Это так называемые «самоподписанные сертификаты». Чтобы браузер не выдавал ошибку о ненадёжного сертификате, его нужно добавить в список доверенных. Такие сертификаты подойдут для тестирования веб-сервера и обучению настройки веб-сервера для работы с SSL и HTTPS. Ещё такой сертификат можно использовать на сайте, к которому имеет доступ ограниченный круг лиц (несколько человек) — например, для сайтов в локальной сети. В этом случае они все могут добавить сертификат в доверенные.
Для реального сайта такой сертификат не подойдёт.
Для рабочего окружения нужен валидный сертификат, его можно получить двумя способами:
1) получить тестовый сертификат на 3 месяца (затем его можно продлить)
2) купить сертификат — в этом случае он действует от года и более
Валидный сертификат отличается от самоподписанного тем, что сторонний сервис удостоверяет подлинность этого сертификата. Собственно, оплачивается именно эта услуга удостоверения, а не выдача сертификата.
Данная статья посвящена вопросу, как настроить Apache в Windows для работы с протоколом HTTPS, будет показано, как подключить SSL сертификаты к Apache в Windows. Поэтому для целей тестирования и обучения нам хватит самоподписанного сертификата.
Как сгенерировать SSL сертификат в Windows
У меня веб-сервер установлен в папку C:\Server\bin\Apache24, поэтому если у вас он в другой директории, то подправьте команды под свои условия.
Откройте командную строку Windows (Win+x, далее выберите «Windows PowerShell (администратор)»). В командной строке введите команды:
cmd cd C:\Server\bin\Apache24\bin\ set OPENSSL_CONF=C:\Server\bin\Apache24\conf\openssl.cnf openssl.exe genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out localhost.key openssl.exe req -new -key localhost.key -out localhost.csr
При вводе последней команды появятся запросы на английском языке. Ниже следует их перевод.
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. -----
Перевод:
Вас попросят ввести информацию, которая будет включена в запрос вашего сертификата. То, что вы будете вводить, называется Distinguished Name или DN. Там всего несколько полей, которые можно оставить пустыми. В некоторых полях будут значения по умолчанию. Если вы введёте ‘.’, то поле будет оставлено пустым.
Далее:
Country Name (2 letter code) [AU]:
Перевод:
Двухбуквенное имя страны (двухбуквенный код)
Далее:
State or Province Name (full name) [Some-State]:
Перевод:
Название штата или провинции/области (полное имя)
Далее:
Locality Name (eg, city) []:
Перевод:
Название населённого пункта (например, города)
Далее:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Перевод:
Название организации (т.е. компании).
Далее:
Organizational Unit Name (eg, section) []:
Перевод:
Подразделение организации (т.е. отдел)
Далее:
Common Name (e.g. server FQDN or YOUR name) []:
Перевод:
Общее имя (например, FQDN сервера или ВАШЕ имя). Это самая важная часть — здесь нужно ввести доменное имя. Можете ввести localhost.
Далее:
Email Address []:
Перевод:
Адрес электронной почты
Далее:
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Перевод:
Пожалуйста, введите следующие «дополнительные» атрибуты для отправки с вашим запросом сертификата Пароль запроса: Опциональное имя компании:
Теперь выполните команду:
openssl.exe x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt
В результате в каталоге C:\Server\bin\Apache24\bin\ должны появиться три новых файла:
- localhost.key
- localhost.csr
- localhost.crt
Из них нам понадобятся только два:
- localhost.key
- localhost.crt
Как в Windows для Apache подключить SSL сертификаты
При использовании сертификатов для настройки реального веб-сайта, удобнее создать виртуальный хост с примерно следующими настройками:
LoadModule ssl_module modules/mod_ssl.so Listen 443 <VirtualHost *:443> ServerName www.example.com SSLEngine on SSLCertificateFile "/путь/до/www.example.com.crt" SSLCertificateKeyFile "/путь/до/www.example.com.key" </VirtualHost>
Для настройки использования SSL на локальном веб-сервере Apache в Windows следуйте инструкции ниже (в моём случае веб-сервер установлен по этой инструкции, если у вас не так, то отредактируйте пути до файлов).
В каталоге C:\Server\ создайте новую папку certs и переместите туда файлы localhost.key и localhost.crt.
В директории C:\Server\bin\Apache24\conf\ откройте текстовым редактором файл httpd.conf. В самый низ добавьте туда строки:
LoadModule ssl_module modules/mod_ssl.so Listen 443 <VirtualHost _default_:443> DocumentRoot "c:/Server/data/htdocs/" ServerName localhost:443 ServerAdmin admin@example.com ErrorLog "${SRVROOT}/logs/error-ssl.log" TransferLog "${SRVROOT}/logs/access-ssl.log" SSLEngine on SSLCertificateFile "C:\Server\certs\localhost.crt" SSLCertificateKeyFile "C:\Server\certs\localhost.key" </VirtualHost>
Обратите внимание, что вам может понадобиться отредактировать следующие директивы
- DocumentRoot — укажите путь до сайтов на сервере
- ServerName — укажите имя вашего хоста, если это не локалхост
Обратите внимание, что мы не просто поместили эти строки в конфигурационный файл, а заключили их в контейнер VirtualHost. Дело в том, что если этого не сделать, то директива SSLEngine on включит SSL для всего веб-сервера, и даже при попытке открыть сайты на 80 порту, эти подключения будут обрабатываться как HTTPS, что вызовет ошибку «Bad Request. Your browser sent a request that this server could not understand». По этой причине эти настройки помещены в контейнер виртуального хоста. Обратите внимание, что используется ключевое слово _default_ — то есть сюда будут собираться все запросы на 443 порт если они не предназначены для другого хоста, который также настроен. То есть при желании вы можете создать больше виртуальных хостов для работы с HTTPS, при этом вместо _default_ указывайте IP хоста или символ * (звёздочка).
Связанная статья: Виртуальный хост Apache по умолчанию. _default_ и catch-all в Apache
После этого сохраните изменения, закройте файл и перезапустите веб-сервер.
c:\Server\bin\Apache24\bin\httpd.exe -k restart
Для проверки сделанных изменений, перейдите по адресу https://localhost/ (протокол HTTPS). Поскольку сертификат является самоподписанным, то появится такое сообщение:
К самоподписанным сертификатам нет доверия и эту ошибку нельзя убрать без добавления таких сертификатов в доверенные. Для перехода нажмите «Всё равно продолжить».
Как уже было сказано, валидные сертификаты нужно покупать, либо использовать тестовые. В чём подвох использования тестовых сертификатов? Формально, в какой-то момент их могут перестать выдавать, но, на самом деле, уже сейчас многие сайты годами живут с такими тестовыми сертификатами. На современных хостингах настроено автоматическое подключение и продление таких сертификатов — это просто супер удобно. Обычно на хостингах предусмотрено некоторое количество абсолютно бесплатных SSL сертификатов с автоматическим продлением, но за небольшую плату (10 рублей в месяц), можно подключить тестовые сертификаты для любого количества сайтов. Пример такого хостинга здесь.
Решение проблем
При некоторых условиях может возникнуть следующая ошибка:
Can't open C:\Program Files\Common Files\SSL/openssl.cnf for reading, No such file or directory 9112:error:02001003:system library:fopen:No such process:crypto\bio\bss_file.c:72:fopen('C:\Program Files\Common Files\SSL/openssl.cnf','r') 9112:error:2006D080:BIO routines:BIO_new_file:no such file:crypto\bio\bss_file.c:79: unable to find 'distinguished_name' in config problems making Certificate Request 9112:error:0E06D06A:configuration file routines:NCONF_get_string:no conf or environment variable:crypto\conf\conf_lib.c:270:
Главная подсказка в первой строке: Can’t open C:\Program Files\Common Files\SSL/openssl.cnf for reading, No such file or directory — она означает, что возникла ошибка чтения файла C:\Program Files\Common Files\SSL/openssl.cnf из-за того, что он отсутствует.
Файл openssl.cnf поставляется с самим веб-сервером Apache и находится в папке conf. Поэтому есть несколько вариантов, как исправить эту ошибку. Например, можно создать нужные папки и скопировать туда этот файл. Но можно пойти более простым путём — на время создания сертификатов установить переменную окружения OPENSSL_CONF указав в ней правильный путь до файла.
Также нужно переключиться из PowerShell в обычную командную строку Windows, поскольку иначе переменная окружения почему-то не устанавливается. Допустим, сервер размещён в папке C:\Server\bin\Apache24\bin\, тогда файл openssl.cnf расположен по пути C:\Server\bin\Apache24\conf\openssl.cnf, в этом случае, чтобы исправить ошибку Can’t open C:\Program Files\Common Files\SSL/openssl.cnf for reading, No such file or directory нужно выполнить:
cmd cd C:\Server\bin\Apache24\bin\ set OPENSSL_CONF=C:\Server\bin\Apache24\conf\openssl.cnf
Отредактируйте пути в этих командах в соответствии с вашей структурой папок.
Связанные статьи:
- Ошибка «You’re speaking plain HTTP to an SSL-enabled server port» (РЕШЕНО) (100%)
- Apache для Windows (51.2%)
- Как запустить Apache на Windows (51.2%)
- Документация по Apache на русском языке (51.2%)
- Как подключить PHP к Apache на Windows (51.2%)
- Ошибка «Composer detected issues in your platform: Your Composer dependencies require the following PHP extensions to be installed: mysqli, openssl» (РЕШЕНО) (RANDOM — 50%)
Last updated on July 19th, 2024 at 06:23 am
SSL certificate helps you improve web traffic between client browser and your server, and increase data security. Here’s how to install SSL certificate on Apache Windows.
Here are the steps to install SSL certificate on Apache Windows.
1. Enable mod_ssl
mod_ssl is an Apache module required to install and manage SSL/TLS certificates. You can enable it in your Apache server by editing the main server configuration file.
Open Apache server configuration httpd.conf file at c:\Program Files\Apache Software Foundation\Apache2.2\conf\
Uncomment the following lines by removing # at their beginning:
#Loadmodule ssl_module modules/mod_ssl.so #Include conf/extra/httpd-default.conf
Now they should appear as:
Loadmodule ssl_module modules/mod_ssl.so Include conf/extra/httpd-default.conf
Bonus Read : How to Generate CSR for SSL Certificate
2. Get SSL Certificate
Next, get the SSL/TLS certificate bundle from your certificate authority such as Namecheap, RapidSSL, Comodo, GoDadddy, Let’s Encrypt, etc. You can also use a free SSL provider like SSLForFree.
You will get 3 files from certificate authority.
- key (e.g private.key) – your key file. Don’t share this with anyone publicly
- Certificate (e.g certificate.crt) – actual SSL/TLS certificate for your domain
- Ca_bundle (e.g ca_bundle.crt) – Root/intermediate certificate
Bonus Read : How to Redirect non-www to www in Apache
If you are using self-signed certificate, then you can install them directly. There is no need to generate CSR and obtain certificates from public CA.
3. Apache SSL Configuration
Now that we have setup the prerequisites, we will configure SSL certificate in Apache
Download the 3 files mentioned in step 2 to c:\Program Files\Apache Software Foundation\Apache2.2\conf\
Next, open Apache SSL configuration file httpd-ssl.conf at c:\Program Files\Apache Software Foundation\Apache2.2\conf\extras
Add the following lines in VirtualHost tag before </VirtualHost> line.
SSLEngine On SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/certificate.crt" SSLCertificateChainFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/ca_bundle.crt" SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/private.key"
You VirtualHost block will look something like this
<VirtualHost _default_:443> DocumentRoot “Your Website's Root folder location” ServerName www.example.com:443 SSLEngine On SSLCertificateFile "/etc/apache2/ssl/certificate.crt" SSLCertificateChainFile "/etc/apache2/ssl/ca_bundle.crt" SSLCertificateKeyFile "/etc/apache2/ssl/private.key" </VirtualHost>
In the above lines, we use 3 Apache server directives
- SSLCertificateFile – Certificate CRT file path
- SSLCertificateKeyFile – Private key file path
- SSLCertificateChainFile – CA bundle file path
Bonus Read : How to Redirect URL to Another URL
4. Test Apache Configuration and Restart Server
Restart Apache Server using its Server Manager
Now you have installed SSL certificate in Apache web server. Open a browser and visit https:// version of your domain (e.g https://www.example.com).
You will see a lock symbol next to your URL, in browser’s address bar, indicating that your website’s SSL/TLS certificate is working properly.
Hopefully, now you can configure SSL certificate in Apache for Windows.
Ubiq makes it easy to visualize data in minutes, and monitor in real-time dashboards. Try it Today!
Related posts:
Sreeram Sreenivasan is the Founder of Ubiq. He has helped many Fortune 500 companies in the areas of BI & software development.
Если вы используете веб-сервер Apache на Windows Server, рекомендуется обеспечить шифрование данных пользователей при их подключении к веб-серверу.
Это можно сделать с помощью бесплатного SSL-сертификата от Let’s Encrypt.
Преимущество описанного ниже метода заключается в минимизации уязвимостей сертификатов благодаря автоматическому перевыпуску SSL-ссертификата.
Сертификаты выпускаются с помощью автоматизированной среды управления сертификатами ACME.
WACS (Windows ACME Simple) — одно из самых популярных клиентских приложений этой среды для ОС Windows и
популяроно среди пользователей как самый простой способ получить и автоматически обновлять SSL-сертификат от Let’s Encrypt.
Подготовка утилиты WACS
Перед установкой SSL-сертификата, необходимо скачать и настроить утилиту WACS.
С её помощью мы получим и установим в системе SSL-сертификат, а также создадим задачу по его автоматическому обновлению.
Архив утилиты доступен для загрузки на своей странице, перейдя на которую нажмите **Download**
- Загрузите архив и после загрузки распакуйте его в папку например
C:\Win-acme\
- Перейдите в директорию /Scripts и создайте в ней текстовый файл с расширением .bat
- Запишите в него команды перезагрузки нашего веб-сервера
net stop "Apache2.4"
net start "Apache2.4"
- сохраните и закройте это файл
Установка SSL-сертификата
Для установки SSL-сертификата на Apache, переходим в каталог C:\Win-acme\
и запускаем от имени Администратора файл wacs.exe.
- В начальном меню утилиты выберите пункт Create certificate (full options) используя символ m.
- Перейдем в пункт 2: Manual input
- В строке Host: укажем имя своего домена.
- Подтвердим правильность введённого имени нажатием клавиши Enter
- Выбираем пункт 4: Single certificate.
- После чего выбераем пункт
1: [http] Save verification files on (network) path
- В строку Path: введем путь до директории htdocs, например
C:\Apache24\htdocs
- От сохранения дефолтного файла web.config откажемся. Для этого введем символ n
- В следующем меню выберем пункт RSA key. указав 2
- Далее изменим настройку утилиты, при помощи которой она привяжет получаемый SSL-сертификат к Apache,
выберем соответствующий этому веб-серверу пункт, то есть —2: PEM encoded files (Apache, nginx, etc.)
, указав 2 - Укажем директорию, куда сохранять сертификаты:
C:\Apache24\conf\ssl
- Мы не будем использовать пароль на сертификат, поэтому выберем пункт 1: None.
- То же касается дополнительных опций — если в них нет необходимости, укажем пункт 5: No (additional) store steps.
- В следующем меню выбеем пункт
2: Start external script or program
- Далее в строке File: укажем имя созданного ранее файла для перезапуска службы Apache с полным путём до него.
C:\win-acme\Scripts\RestartApache.bat
- В строку Parameters введем:
{StoreType} {StorePath} {RenewalId}
.
- Если в дополнительных установочных опциях необходимости нет, то в следующем меню выберftv пункт
3: No (additional) installation steps
. - При желании можно изучить текст абонентского соглашения. Чтобы это сделать, используйте символ y или перейти
сразу к установке выбрав n - Соглашаемся с абонентским соглашением выбрав y
- Вводим адрес своей электронной почты. Далее идет собственно получение SSL-сертификатов.
- На вопрос о необходимости использования учётных данных пользователя для запуска задачи
по обновлению сертификата следует ответить yes, если вы хотите, чтобы это задание выполнялось в автоматическом режиме. - Введем имя пользователя и пароль для входа в Windows Server.
- Наконец утилита вернёт нас в своё первоначальное меню, где выберем пункт Q: Quit для выхода из неё.
Готово! Теперь Вы знаете, как выпустить бесплатный SSL-сертификат для веб-сервера Apache на Windows Server®
Проверка и конфигурация Apache
После проведенных работ с утилитой win-acme мы должны увидеть в указанном каталоге C:\Apache24\conf\ssl
файлы ключей.
mydomain.ru-chain.pem
mydomain.ru-chain-only.pem
mydomain.ru-crt.pem
mydomain.ru-key.pem
Заглянем в планировщик заданий Windows и проверим стоит ли задача
win-acme renew
, которая отвечает за обновление сертификата если его срок истек.
Конфигурация Apache на SSL
После того, как мы убедились, что файлы ключей выпущены
настроем конфигурацию веб-сервера, для этого отредактируем http.conf в директории C:\Apache24\conf\
Раскомментируйте строки:
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf
И ставим комментарии в следующих строках:
#<IfModule ssl_module>
#SSLRandomSeed startup builtin
#SSLRandomSeed connect builtin
#</IfModule>
Так же укажем наш ServerName
ServerName mydomain.ru
ServerAdmin mypost@mydomain.ru
Сохраним изменения, внесённые в файл httpd.conf, и отредактируем httpd-ssl.conf, находящийся в директории conf\extra\
. В нём необходимо откорректировать строки
SSLCertificateFile "${SRVROOT}/conf/server.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/server.key"
приведя их к виду:
SSLCertificateFile "${SRVROOT}/conf/mydomain.ru-chain.pem"
SSLCertificateKeyFile "${SRVROOT}/conf/mydomain.ru-key.pem"
Так же проведем замену:
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
на:
SSLCipherSuite ECDH+AESGCM256:ECDH+CHACHA20:DH+AESGCM256:ECDH+AES256:DH+AES256:!aNULL:!MD5:!DSS
SSLProxyCipherSuite ECDH+AESGCM256:ECDH+CHACHA20:DH+AESGCM256:ECDH+AES256:DH+AES256:!aNULL:!MD5:!DSS
И заменим:
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
на:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLProxyProtocol all -SSLv3 -TLSv1 -TLSv1.1
Настройка редиректа http на https
В заключении настроем перенаправлениея запросов с протокола HTTP на использование безопасного протокола HTTPS.
Для этого перейдем в каталог C:\Apache24\conf\
и в файле httpd.conf раскомментируйте строку:
LoadModule rewrite_module modules/mod_rewrite.so
Также после строк, начинающихся с #LoadModule, добавим:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
Чтобы настройки применились, необходимо перезапустить веб-сервер (Службу Apache24)
В нашем справочнике есть пошаговое руководство по запуску Apache на виртуальном выделенном сервере, работающем под управлением Windows Server 2016. Ниже разберём, как можно обеспечить шифрование данных при подключении пользователя к веб-серверу при помощи выпуска и установки бесплатного SSL-сертификат Let’s Encrypt. Установка данного сертификата гарантирует защищённое соединение между браузером пользователя и сервером, тем самым обеспечивая конфиденциальность передаваемой информации и защиту данных от перехвата. Вместе с тем, возможные уязвимости сертификатов минимизированы через их автоматический перевыпуск, что также упрощает поддержку безопасности веб-сервера.
Выпуск сертификатов осуществляется путём обращения к автоматической среде управления сертификатами Automated Certificate Management Environment (ACME). Одной из популярных реализаций клиентского приложения данной среды для Windows является утилита WACS (Windows ACME Simple). Кроме того, мы рассматриваем WACS как наиболее простой способ получения SSL-сертификат от Let’s Encrypt. По сути, WACS представляет собой мастер, с помощью которого можно выпустить сертификат, привязать его к сайту, работающему на веб-сервере, а также создать задачу по автоматическому обновлению сертификата.
Итак, в нашем примере мы имеем виртуальный выделенный сервер с Windows Server 2016, на котором работает веб-сервер Apache. Плюс к этому, у нас есть доменное имя your-domain.host
, A-запись которого содержит IP-адрес нашего VPS. Именно этот сайт мы оснастим SSL-сертификатом, в результате чего станет возможна передача данных через безопасный протокол HTTPS.
Подготовительные работы
Сначала загрузите на свой виртуальный сервер архив утилиты WACS при помощи соответствующей ссылки, где на открывшейся странице кликните Download
.
По окончании загрузки распакуйте полученный архив. В нашем примере мы использовали для этого каталог win-acme
на диске C:
. Затем перейдите в данную директорию и в каталоге Scripts
создайте исполняемый файл перезапуска Apache RestartApache.bat
, содержимое которого будет следующим:
net stop "Apache2.4"
net start "Apache2.4"
Перед тем, как приступить к установке сертификата, запустите Apache как службу, если ранее вы этого не сделали. Для чего откройте командную строку (Win
R
, где наберите cmd
), перейдите в каталог bin
директории Apache и запустите следующую команду:
httpd.exe -k install
Затем откройте менеджер служб (Win
R
, где наберите services.msc
) и убедитесь, что служба Apache2.4 запущена. Если это не так, откройте её и нажмите Start
.
Получение сертификата
Для получения сертификата перейдите в проводнике в директорию win-acme
и там от имени администратора запустите файл wacs.exe
. В стартовом меню нажмите m
.
Далее выберите пункт 2: Manual input
.
Затем наберите имя своего сайта. В нашем примере это — your-domain.host
.
В следующем меню нажмите Enter
.
Далее выберите пункт 4: Single certificate
.
Затем выберите первый пункт 1: [http] Save verification files on (network) path
.
На следующем шаге укажите путь к каталогу htdocs
. В нашем примере это — C:\Apache24\htdocs
.
На вопрос о необходимости копирования файла web.config
перед проверкой ответьте отрицательно, для чего введите n
.
Далее выберите RSA key
, то есть нажмите 2
.
По умолчанию утилита привязывает сертификат к IIS. У нас же установлен веб-сервер Apache, поэтому необходимо указать пункт 2: PEM encoded files (Apache, nginx, etc.)
.
Затем укажите, где будет располагаться директория, в которую утилита сохранит файлы сертификата. В нашем примере это будет C:\Apache24\conf
.
Поскольку устанавливать пароль на сертификат необходимости нет, на этом шаге выберите пункт 1: None
.
Необходимости в других вариантах также нет, поэтому здесь выберите пункт 5: No (additional) store steps
.
Далее выберите пункт 2: Start external script or program
.
На следующем шаге укажите путь к созданному ранее исполняемому файлу автоматического перезапуска Apache. В нашем примере это — C:\win-acme\Scripts\RestartApache.bat
.
Затем введите: {StoreType} {StorePath} {RenewalId}
.
В других дополнительных шагах необходимости нет, здесь выберите пункт 3: No (additional) installation steps
.
Если хотите ознакомиться с текстом абонентского соглашения, нажмите y
.
В результате утилита откроет соглашение для того, чтобы вы смогли его просмотреть.
Если вы согласны с его положениями, нажмите y
.
Далее введите адрес электронной почты, который будет использоваться Let’s Encrypt для обратной связи.
На следующем этапе утилита попросит указать учётные данные пользователя, под именем которого будет запускаться задача по обновлению сертификата. Если вы планируете использовать данный функционал, нажмите y
.
После чего введите имя этого пользователя.
Затем укажите его пароль.
Далее утилита вернётся к стартовому меню, где для выхода из неё выберите пункт Q: Quit
.
Дополнительные настройки
По итогу проделанной работы в директории conf
вы сможете найти файлы ключей. В нашем примере это:
your-domain.host-chain.pem
your-domain.host-chain-only.pem
your-domain.host-crt.pem
your-domain.host-key.pem
Также планировщик должен содержать задачу по обновлению сертификатов после завершения срока их действия. Для запуска планировщика на виртуальном сервере нажмите Win
R
и наберите taskschd.msc
.
Теперь необходимо произвести дополнительные настройки веб-сервера для включения протокола SSL. Для этого в файле conf/httpd.conf
снимите комментарии в следующих строках:
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf
Затем раскомментируйте строку, содержащую параметр ServerName
и укажите в нём имя вашего домена. В нашем примере данный параметр будет выглядеть следующим образом:
ServerName your-domain.host
Также найдите параметр ServerAdmin
и укажите там адрес электронной почты. Например:
ServerAdmin mail@your-domain.host
После внесения изменений в файл httpd.conf
сохраните его.
Далее нужно будет настроить SSL для полученного сертификата. Для чего отредактируйте файл conf\extra\httpd-ssl.conf
из каталога веб-сервера. Здесь найдите строку
SSLCertificateFile "${SRVROOT}/conf/server.crt"
и замените её на
SSLCertificateFile "${SRVROOT}/conf/your-domain.host-chain.pem"
где вместо названия файла your-domain.host-chain.pem
укажите название аналогичного на вашем веб-сервере.
Затем найдите строку
SSLCertificateKeyFile "${SRVROOT}/conf/server.key"
и замените её на
SSLCertificateKeyFile "${SRVROOT}/conf/your-domain.host-key.pem"
где также вместо your-domain.host-key.pem
необходимо использовать имя своего соответствующего файла.
Далее найдите текст
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
и замените его на следующий
SSLCipherSuite ECDH+AESGCM256:ECDH+CHACHA20:DH+AESGCM256:ECDH+AES256:DH+AES256:!aNULL:!MD5:!DSS
SSLProxyCipherSuite ECDH+AESGCM256:ECDH+CHACHA20:DH+AESGCM256:ECDH+AES256:DH+AES256:!aNULL:!MD5:!DSS
После чего найдите строки
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
и замените следующими строками
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLProxyProtocol all -SSLv3 -TLSv1 -TLSv1.1
И наконец, найдите раздел General setup for the virtual host
# General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs"
ServerName www.example.com:443
ServerAdmin admin@example.com
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
где вместо www.example.com
укажите имя своего сайта, а вместо admin@example.com
— адрес своей электронной почты. В нашем примере данный раздел будет выглядеть следующим образом:
# General setup for the virtual host
DocumentRoot "${SRVROOT}/htdocs"
ServerName your-domain.host:443
ServerAdmin <mail@your-domain.host>
ErrorLog "${SRVROOT}/logs/error.log"
TransferLog "${SRVROOT}/logs/access.log"
И наконец, нам осталось лишь перенаправить запросы с HTTP на HTTPS. Для этого снова откройте для редактирования файл конфигурации Apache, которым в нашем примере является C:\Apache24\conf\httpd.conf
, и снимите комментарий со следующей строки:
LoadModule rewrite_module modules/mod_rewrite.so
Затем после последней строки, начинающейся с #LoadModule
, добавьте такой абзац:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
После внесённых изменений сохраните файл и перезапустите службу Apache2.4
.
В результате при переходе на ваш сайт с ним будет установлено безопасное соединение при помощи протокола HTTPS.
Если вы используете веб-сервер Apache на виртуальной машине, работающей на Windows Server, то будет не лишним позаботится об обеспечения шифрования данных пользователей при их подключении к веб-серверу. Сделать это можно с использованием бесплатного SSL-сертификата от Let’s Encrypt. Наличие на сайте данного сертификата гарантирует безопасное соединение между сервером и браузером пользователя, которое тем самым обеспечивает конфиденциальность информации и её защиту от перехвата. Преимуществом такого подхода является минимизация уязвимостей сертификатов благодаря автоматическому их перевыпуску.
Выпуск сертификатов осуществляется через автоматизированную среду управления сертификатами Automated Certificate Management Environment (ACME). В свою очередь, утилита WACS (Windows ACME Simple) является одним из наиболее популярных клиентских приложений данной среды для операционной системы Windows. В настоящем руководстве мы рассматриваем WACS в качестве наиболее простого способа получения SSL-сертификата от Let’s Encrypt. Фактически, WACS представляет собой инструмент, который позволяет выпустить сертификат, связать его с веб-сайтом, а также создать задачу для обновления сертификата в автоматическом режиме.
Таким образом, у нас есть виртуальный выделенный сервер с операционной системой Windows Server 2022, на котором работает веб-сервер Apache. Кроме того, для установки на сайт SSL-сертификата ваш сайт должен иметь доменное имя, чья A-запись должна соответствовать IP-адресу VPS. Мы намерены оснастить этот сайт SSL-сертификатом, чтобы обеспечить безопасную передачу данных через протокол HTTPS.
Предварительная настройка
Перед тем, как приступить непосредственно к установке сертификата, необходимо подготовить для этого утилиту WACS. С её помощью мы получим и установим в системе SSL-сертификат, а также создадим задачу по его автоматическому обновлению. Архив утилиты доступен для загрузки на своей странице, перейдя на которую нажмите Download
.
Загруженный файл необходимо разархивировать, например, на диск C:
в директорию win-acme
.
После чего перейдите в каталог Scripts
данной директории и создайте исполняемый файл, который будет перезапускать сервис Apache. Файл должен содержать следующие строки:
net stop "Apache2.4"
net start "Apache2.4"
В нашем примере этот файл будет называться apache-restart.bat
.
Установка SSL-сертификата
Для установки SSL-сертификата на Apache, перейдите в каталог win-acme
и запустите от имени администратора файл wacs.exe
. В начальном меню утилиты выберите пункт Create certificate (full options)
используя символ m
.
Затем перейдите в пункт 2: Manual input
.
На следующем шаге в строку Host:
ввести имя своего домена.
Подтвердите правильность введённого имени нажатием клавиши Enter
.
Далее перейдите в пункт 4: Single certificate
.
После чего выберите пункт 1: [http] Save verification files on (network) path
.
В строку Path:
введите путь до директории htdocs
.
От сохранения дефолтного файла web.config
можно отказаться. Для этого используйте символ n
.
В следующем меню выберите пункт RSA key
.
Далее необходимо изменить дефолтную настройку утилиты, при помощи которой она привязывает получаемый SSL-сертификат к IIS. Так как на нашем VDS установлен Apache, выберите соответствующий этому веб-серверу пункт, то есть — 2: PEM encoded files (Apache, nginx, etc.)
.
На следующем шаге введите имя каталога, в который утилита сохранит файл SSL-сертификата.
Если вы не планируете использовать пароль на сертификат, выберите пункт 1: None
.
То же касается дополнительных опций — если в них нет необходимости, укажите пункт 5: No (additional) store steps
.
В следующем меню выберите пункт 2: Start external script or program
.
Далее в строку File:
введите имя созданного ранее файла для перезапуска службы Apache с полным путём до него.
В строку Parameters
введите: {StoreType} {StorePath} {RenewalId}
.
Если в дополнительных установочных опциях необходимости нет, то в следующем меню выберите пункт 3: No (additional) installation steps
.
При желании вы можете изучить текст абонентского соглашения. Чтобы это сделать, используйте символ y
.
Как следствие, утилита откроет для просмотра соответствующий документ.
Чтобы согласиться с его положениями, нажмите y
.
Для обратной связи с вами Let’s Encrypt будет использовать ваш адрес электронный почты, который утилита попросит ввести на следующем шаге.
На вопрос о необходимости использования учётных данных пользователя для запуска задачи по обновлению сертификата следует ответить yes
, если вы хотите, чтобы это задание выполнялось в автоматическом режиме.
Затем введите имя данного пользователя и укажите его пароль.
Наконец утилита вернёт вас в своё первоначальное меню, где выберите пункт Q: Quit
для выхода из неё.
Дополнительная настройка
Таким образом, в указанном при работе утилиты каталоге вы должны обнаружить файлы ключей. Для нашего домена your-domain.host
они выглядят следующим образом:
your-domain.host-chain.pem
your-domain.host-chain-only.pem
your-domain.host-crt.pem
your-domain.host-key.pem
Помимо этого, в планировщике вы найдёте задание, предназначение которого заключается в обновлении полученного SSL-сертификата после окончания срока его действия. Убедиться в этом можно запустив Task Scheduler с использованием комбинации клавиш Win
R
, где необходимо ввести taskschd.msc
.
Далее откройте для редактирования файл httpd.conf
из каталога веб-сервера Apache /conf
и раскомментируйте строки:
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf
Также, необходимо снять комментарий со строки, содержащей параметр ServerName
, и указать в ней в качестве значения параметра имя вашего домена. Например:
ServerName your-domain.host
В свою очередь, параметр ServerAdmin
также должен быть раскомментирован и содержать адрес вашей электронной почты.
ServerAdmin your-post@your-domain.host
Сохраните изменения, внесённые в файл httpd.conf
, и отредактируйте файл httpd-ssl.conf
, находящийся в директории conf\extra\
. В нём необходимо найти строку SSLCertificateFile "${SRVROOT}/conf/server.crt"
и привести её к виду:
SSLCertificateFile "${SRVROOT}/conf/your-domain.host-chain.pem"
Здесь, название файла your-domain.host-chain.pem
замените на соответствующее ему своё.
Также, отредактируйте строку SSLCertificateKeyFile "${SRVROOT}/conf/server.key"
:
SSLCertificateKeyFile "${SRVROOT}/conf/your-domain.host-key.pem"
где также название файла your-domain.host-key.pem
замените на аналогичное в вашей системе.
Кроме того, отыщите в файле текст:
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
И замените его на следующий:
SSLCipherSuite ECDH+AESGCM256:ECDH+CHACHA20:DH+AESGCM256:ECDH+AES256:DH+AES256:!aNULL:!MD5:!DSS
SSLProxyCipherSuite ECDH+AESGCM256:ECDH+CHACHA20:DH+AESGCM256:ECDH+AES256:DH+AES256:!aNULL:!MD5:!DSS
Затем найдите фрагмент текста:
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
И приведите его к следующему виду:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLProxyProtocol all -SSLv3 -TLSv1 -TLSv1.1
Также, в разделе General setup for the virtual host
замените название домена www.example.com
на своё. Кроме того, укажите адрес своей электронной почты вместо admin@example.com
.
В заключении необходимо будет произвести настройку перенаправления запросов на использование безопасного протокола HTTPS. Чтобы это сделать, в файле httpd.conf
из каталога \conf\
раскомментируйте строку
LoadModule rewrite_module modules/mod_rewrite.so
После чего в конец данного раздела, то есть после строк, начинающихся с #LoadModule
, добавьте следующий текст:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
По завершении редактирования файла сохраните его и перезапустите службу Apache2.4
.
Таким образом, с этого момента переход на ваш сайт будет устанавливается с применением безопасного протокола HTTPS.