- Настройка HTTPS для Apache 2.4 под Windows
- Два слова о протоколе HTTPS
- Генерация криптографических ключей
- Получение сертификата
- Настройка веб-сервера
- Литература:
- Настройка WINRM для HTTPS
- Общая информация
- Дополнительные сведения
- Настройка HTTP и HTTPS Configuring HTTP and HTTPS
- Настройка резервирования пространства имен Configuring namespace reservations
- Настройка исключения брандмауэра Configuring a firewall exception
- Настройка SSL-сертификатов Configuring SSL certificates
- Настройка списка ожидания передачи данных по протоколу IP Configuring the IP Listen List
- Другие параметры конфигурации Other configuration settings
Настройка HTTPS для Apache 2.4 под Windows
Два слова о протоколе HTTPS
HTTPS — это протокол обмена данными, который полностью описывается фразой «HTTP поверх SSL/TLS». Когда пользователь набирает в браузере адрес сайта, например, «https://www.site.com/info.html», происходит следующее:
- Веб-браузер посредством DNS-запроса определяет IP-адреса сервера «www.site.com». Если не используется технология DNSCrypt, этот запрос происходит в открытом виде, без шифрования.
- Между веб-браузером и веб-сервером устанавливается защищённый канал передачи данных SSL/TLS.
- По защищённому каналу осуществляется обмен между веб-браузером и веб-сервером по протоколу HTTP.
При установке HTTPS-соединения веб-браузеры проверяют подлинность сервера с использованием сертификата, выданного ему удостоверяющим центром. Сертификат — это подписанные секретным ключом удостоверяющего центра открытый ключ веб-сервера и информация о сервере. Если сертификат недействителен или данные, указанные в сертификате, не совпадают с реквизитами сервера, пользователю будет выдано предупреждение с рекомендацией отказаться от работы с этим сервером.
Чтобы с веб-сервером Apache можно было взаимодействовать по протоколу HTTPS, понадобится:
- Сгенерировать криптографические ключи веб-сервера.
- Получить сертификат веб-сервера.
- Настроить веб-сервер на работу по протоколу HTTPS.
В дальнейшем изложении предполагается, что установка и настройка веб-сервера выполнена в соответствии с рекомендациями, изложенными в статье «Параметрическая настройка Apache 2.4 под Windows».
Генерация криптографических ключей
Для генерации криптографических ключей понадобится ввести ряд команд в окне командной строки. Прежде всего, для хранения криптографических файлов создадим папку «D:\www\conf\ssl» и сделаем её текущей:
D:
MD \www\conf\ssl
CD \www\conf\ssl
Механизмы криптографии в поставке Apache от Apache Lounge реализованы с помощью пакета OpenSSL, который представлен программой «Apache24\bin\openssl.exe». Чтобы не набирать постоянно полный путь к ней, добавим папку с двоичными файлами веб-сервера в переменную среды окружения PATH:
PATH %PATH%;«%ProgramFiles%\Apache24\bin»
Для генерации секретного ключа сервера нужно в консоли OpenSSL ввести команду:
openssl.exe genrsa -out server.key 2048
В этой команде «server.key» — это имя файла, в который будет записан секретный ключ, а «2048» — длина ключа в битах. Файл «server.key» содержит конфиденциальную информацию, поэтому нужно принять меры по его защите, чтобы предотвратить компрометацию сервера.
Открытый ключ сервера может быть извлечён из секретного ключа и выгружен в файл «server.pub» командой:
openssl.exe rsa -in server.key -pubout > server.pub
Однако для настройки HTTPS-сервера в явном виде открытый ключ нигде не требуется.
Получение сертификата
Чтобы получить сертификат веб-сервера, нужно на основе криптографических ключей составить запрос в удостоверяющий центр на выдачу сертификата. Формирование запроса производится командой:
openssl.exe req -new -key server.key -out server.csr -config ../openssl.cnf
В параметре «-config» указан путь к файлу конфигурации OpenSSL, который находится в папке «conf» поставляемого пакета с веб-сервером.
Для генерации запроса нужно набрать с клавиатуры ответы на задаваемые вопросы о принадлежности и реквизитах сервера. На этом этапе важно иметь в виду, что для ввода в поле данных пустого значения нужно ввести » . » (точку). Если вместо этого просто нажать клавишу [Enter], то будет принято значение по умолчанию, которое указано в квадратных скобках. А сами данные следующие:
County name — двухзначный буквенный код страны;
State or Province Name — название региона, области, района;
Locality Name — название населённого пункта;
Organization Name — название организации;
Organizational Unit Name — название подразделения;
Common Name — доменное имя сервера;
Email Address — контактный адрес электронной почты;
A challenge password — кодовое слово;
An optional company name — дополнительное название организации;
Значения последних двух полей вводить не обязательно. Самое главное — правильно указать доменное имя сервера, потому что именно по этому реквизиру веб-браузеры будут проверять подлинность веб-сервера.
В результате выполнения этой команды будет сформирован файл «server.csr», содержащий необходимую для выдачи сертификата информацию. Этот файл можно отправлять в удостоверяющий центр, после чего ожидать от него ответа.
Но для локального тестирования сайта или внутреннего использования в корпоративной интрасети можно подписать сертификат секретным ключом самого веб-сервера, а не удостоверяющего центра, получив так называемый «самоподписанный» сертификат. Делается это с помощью команды:
openssl.exe x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Сертификат сроком на 365 дней, подписанный секретным ключом сервера «server.key» в ответ на запрос «server.csr», помещается в файл «server.crt».
Настройка веб-сервера
В результате выполнения описанных выше действий в папке «D:\www\conf\ssl» имеются необходимые для работы протокола HTTPS файлы:
server.key — секретный ключ веб-сервера;
server.crt — сертификат веб-сервера.
За обслуживание протокола SSL/TLS отвечает модуль «mod_ssl», который вместе с модулем кеширования и соответствующим файлом настроек нужно подключить к веб-серверу с помощью следующих изменений главного конфигурационного файла «D:\www\conf\httpd.conf»:
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule ssl_module modules/mod_ssl.so
LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf
Include $
Если веб-сервер установлен в соответствии с описанной ранее методикой, то в конфигурационном файле «D:\www\conf\extra\httpd-ssl.conf» нужно все вхождения «$
#SSLCertificateFile «$
SSLCertificateFile «$
#SSLCertificateKeyFile «$
SSLCertificateKeyFile «$
В том же файле нужно указать правильные имя сервера и контактный адрес электронной почты. Эти реквизиты должны совпадать с теми, которые были введены при формировании запроса на сертификат. Например, для локального сервера доменное имя будет «localhost», а адрес электронной почты — «webmaster@localhost»:
#ServerName www.example.com:443
ServerName localhost:443
#ServerAdmin admin@example.com
ServerAdmin webmaster@localhost
Если после выполненных настроек в адресной строке браузера набрать «https://localhost/», то при использовании самоподписанного сертификата отобразится строгое предупреждение:
Рис. Отключение системы защиты веб-браузера от доступа к сайтам с недостоверными сертификатами.
Для «обхода» защиты нужно последовательно нажать кнопки «Подробности» и «Сделать исключение для данного сайта», после чего на экране отобразится страница, полученная с сервера по протоколу HTTPS.
В решении проблем, возникающих при настройке доступа к серверу по протоколу HTTPS, может помочь команда, устанавливающая защищённое протоколом SSL/TLS соединение с веб-сервером:
openssl.exe s_client -connect localhost:443 -state -debug
При её выполнении на экран будут выведены сведения о процедуре согласования параметров безопасного канала передачи данных и этапах его установления. Если канал будет успешно установлен, то можно вводить консольные команды по протоколу HTTP. Например, для получения главной страницы сайта нужно набрать:
Ввод команды нужно завершить двумя нажатиями клавиши [Enter]. В ответ на экран будут выведены:
- отправленные на сервер зашифрованные данные;
- зашифрованные данные, полученные от сервера;
- расшифрованный ответ сервера.
Литература:
Публичное использование материалов сайта допускается только при условии прямой гиперссылки на этот интернет-ресурс.
Настройка WINRM для HTTPS
В этой статье предоставляется решение для настройки WINRM для HTTPS.
Оригинальная версия продукта: Windows 10 — все выпуски
Исходный номер КБ: 2019527
Общая информация
По умолчанию WinRM использует Kerberos для проверки подлинности, поэтому Windows никогда не отправляет пароль в систему с запросом проверки. Чтобы получить список параметров проверки подлинности, введите следующую команду:
Целью настройки WinRM для HTTPS является шифрование данных, отосланных по всему проводу.
WinRM HTTPS требует локального сертификата проверки подлинности сервера на компьютере с cn, совпадающий с установленным имям хост-сервера. Сертификат не должен быть просрочен, отозван или подписан самостоятельно.
Установка или просмотр сертификатов для локального компьютера:
- Выберите Начните, а затем выберите Run (или с помощью комбинации клавиатуры нажмите клавишу Windows+R)。
- Введите MMC и нажмите кнопку Ввод.
- Выберите Файл из параметров меню, а затем выберите Добавить или Удалить snap-ins.
- Выберите Сертификаты и выберите Добавить.
- Перейдите через мастер выбора учетной записи Компьютера.
- Установка или просмотр сертификатов по сертификатам (локальному компьютеру) > >Персональные сертификаты.
Если у вас нет сертификата проверки подлинности сервера, обратитесь к администратору сертификата. Если у вас есть сервер сертификатов Майкрософт, вы можете запросить сертификат с помощью шаблона веб-сертификата из HTTPS:// /certsrv .
После установки сертификата введите следующее, чтобы настроить WINRM для прослушивания https:
Если у вас нет соответствующего сертификата, можно выполнить следующую команду с помощью методов проверки подлинности, настроенных для WinRM. Однако данные не будут зашифрованы.
Дополнительные сведения
По умолчанию WinRM HTTP использует порт 80. В Windows 7 и выше значение порта по умолчанию составляет 5985.
По умолчанию WinRM HTTPS использует порт 443. В Windows 7 и выше порт по умолчанию — 5986.
Чтобы подтвердить, что WinRM прослушивает HTTPS, введите следующую команду:
Чтобы подтвердить установку сертификата компьютера, используйте надстройки MMC Certificates или введите следующую команду:
Если вы получите следующее сообщение об ошибке:
Номер ошибки: -2144108267 0x80338115
ProviderFault
WSManFault
Сообщение = Невозможно создать прослушиватель WinRM в HTTPS, так как у этой машины нет соответствующего сертификата.
Чтобы использоваться для SSL, сертификат должен иметь CN, соответствующий имени хост-сервера, быть подходящим для проверки подлинности сервера и не быть истекшим, отозванным или самозаверяться.
Откройте надстройку MMC сертификатов и подтвердив правильность следующих атрибутов:
- Дата компьютера падает между допустимым от: до даты To: даты на вкладке General.
- Имя хоста совпадает с выданным: на вкладке General или совпадает с одним из альтернативных имен субъекта точно так же, как отображается на вкладке Details.
- Что расширенное использование ключей на вкладке Details содержит проверку подлинности Сервера.
- На вкладке Путь сертификации, что текущий статусэто сертификат ОК.
Если установлено несколько локальных сертификатов сервера учетных записей компьютеров, подтвердим, что отобразимый превью сертификата является одним и тем же отпечатком пальца на вкладке Winrm enumerate winrm/config/listener Details сертификата.
Настройка HTTP и HTTPS Configuring HTTP and HTTPS
Службы и клиенты WCF могут взаимодействовать по протоколам HTTP и HTTPS. WCF services and clients can communicate over HTTP and HTTPS. Параметры HTTP/HTTPS задаются с помощью служб IIS или посредством использования средства командной строки. The HTTP/HTTPS settings are configured by using Internet Information Services (IIS) or through the use of a command-line tool. Когда служба WCF размещается в службах IIS, параметры HTTP или HTTPS можно задать в службах IIS (с помощью средства inetmgr.exe). When a WCF service is hosted under IIS HTTP or HTTPS settings can be configured within IIS (using the inetmgr.exe tool). Если служба WCF является резидентной, параметры HTTP или HTTPS задаются с помощью средства командной строки. If a WCF service is self-hosted, HTTP or HTTPS settings are configured by using a command-line tool.
Как минимум необходимо настроить регистрацию URL-адресов и добавить исключение брандмауэра для URL-адреса, который будет использоваться службой. At a minimum, you want to configure a URL registration and add a Firewall exception for the URL your service will be using. Эти параметры можно настроить с помощью средства Netsh.exe. You can configure these settings with the Netsh.exe tool.
Настройка резервирования пространства имен Configuring namespace reservations
Резервирование пространства имен назначает права на часть пространства имен URL-адреса HTTP определенной группе пользователей. Namespace reservation assigns the rights for a portion of the HTTP URL namespace to a particular group of users. Резервирование предоставляет этим пользователям право создавать службы, которые ожидают передачи данных в указанной части пространства имен. A reservation gives those users the right to create services that listen on that portion of the namespace. Резервирования — это префиксы URL-адресов. Это означает, что резервирование охватывает все вложенные пути пути резервирования. Reservations are URL prefixes, meaning that the reservation covers all subpaths of the reservation path. Резервирования пространства имен позволяют использовать подстановочные знаки двумя способами. Namespace reservations permit two ways to use wildcards. В документации по API HTTP-сервера описывается Порядок разрешения между утверждениями пространства имен, которые используют подстановочные знаки. The HTTP Server API documentation describes the order of resolution between namespace claims that involve wildcards.
Запущенное приложение может создать аналогичный запрос для добавления регистраций пространства имен. A running application can create a similar request to add namespace registrations. Регистрации и резервирования конкурируют за части пространства имен. Registrations and reservations compete for portions of the namespace. Резервирование может иметь приоритет над регистрацией в соответствии с порядком разрешения, указанным в порядке разрешения между утверждениями пространства имен, которые используют подстановочные знаки. A reservation may have precedence over a registration according to the order of resolution given in the order of resolution between namespace claims that involve wildcards. В этом случае резервирование не позволяет запущенному приложению получать запросы. In this case, the reservation blocks the running application from receiving requests.
В следующем примере используется средство Netsh.exe: The following example uses the Netsh.exe tool:
Эта команда добавляет резервирование URL-адресов для указанного пространства имен URL-адреса для учетной записи DOMAIN\user. This command adds a URL reservation for the specified URL namespace for the DOMAIN\user account. Для получения дополнительных сведений об использовании команды netsh введите netsh http add urlacl /? в командной строке и нажмите клавишу ВВОД. For more information on using the netsh command, type netsh http add urlacl /? in a command-prompt and press Enter.
Настройка исключения брандмауэра Configuring a firewall exception
При резидентном размещении службы WCF, которая осуществляет взаимодействие по протоколу HTTP, необходимо добавить исключение в конфигурацию брандмауэра, чтобы входящие соединения могли использовать определенный URL-адрес. When self-hosting a WCF service that communicates over HTTP, an exception must be added to the firewall configuration to allow inbound connections using a particular URL.
Настройка SSL-сертификатов Configuring SSL certificates
Протокол SSL использует сертификаты в клиенте и службе для хранения ключей шифрования. The Secure Sockets Layer (SSL) protocol uses certificates on the client and server to store encryption keys. Сервер предоставляет свой SSL-сертификат при подключении, чтобы клиент мог проверить удостоверение сервера. The server provides its SSL certificate when a connection is made so that the client can verify the server identity. Для обеспечения взаимной проверки на обеих сторонах подключения сервер также запрашивает сертификат у клиента. The server can also request a certificate from the client to provide mutual authentication of both sides of the connection.
Сертификаты хранятся в централизованном хранилище в соответствии с IP-адресом и номером порта подключения. Certificates are stored in a centralized store according to the IP address and port number of the connection. Специальный IP-адрес 0.0.0.0 соответствует любому IP-адресу локального компьютера. The special IP address 0.0.0.0 matches any IP address for the local machine. Обратите внимание, что хранилище сертификатов не различает URL-адреса в зависимости от пути. Note that the certificate store doesn’t distinguish URLs based on the path. Службы с одним и тем же сочетанием IP-адреса и порта должны иметь общие сертификаты, даже если их пути в URL-адресе различаются. Services with the same IP address and port combination must share certificates even if the path in the URL for the services is different.
Настройка списка ожидания передачи данных по протоколу IP Configuring the IP Listen List
API HTTP-сервера привязывается к IP-адресу и порту только после регистрации URL-адреса пользователем. The HTTP Server API only binds to an IP address and port once a user registers a URL. По умолчанию API HTTP-сервера привязывается к порту в URL-адресе для всех IP-адресов компьютера. By default, the HTTP Server API binds to the port in the URL for all of the IP addresses of the machine. Конфликт возникает, если приложение, которое не использует API сервера HTTP, было ранее привязано к этому сочетанию IP-адреса и порта. A conflict arises if an application that doesn’t use the HTTP Server API has previously bound to that combination of IP address and port. Список прослушивания IP-адресов позволяет службам WCF сосуществовать с приложениями, которые используют порт для некоторых IP-адресов компьютера. The IP Listen List allows WCF services to coexist with applications that use a port for some of the IP addresses of the machine. Если в списке ожидания передачи данных по протоколу IP содержатся какие-либо записи, API HTTP-сервера привязывается только к IP-адресам, указанным в списке. If the IP Listen List contains any entries, the HTTP Server API only binds to those IP addresses that the list specifies. Для изменения списка ожидания передачи данных по протоколу IP требуются привилегии администратора. Modifying the IP Listen List requires administrative privileges.
Используйте средство Netsh для изменения списка прослушивания IP-адресов, как показано в следующем примере: Use the netsh tool to modify the IP Listen List, as shown in the following example:
Другие параметры конфигурации Other configuration settings
При работе с привязкой WSDualHttpBinding клиентское соединение использует значения по умолчанию, совместимые с резервированием пространства имен и брандмауэром Windows. When using WSDualHttpBinding, the client connection uses defaults that are compatible with namespace reservations and the Windows firewall. При необходимости настроить базовый адрес клиента для двустороннего соединения, необходимо, кроме того, настроить эти параметры HTTP в клиенте так, чтобы они соответствовали новому адресу. If you choose to customize the client base address of a dual connection, then you also must configure these HTTP settings on the client to match the new address.