Генерация криптографических ключей
cd C:\Apache24
md ssl
cd ssl
Для генерации секретного ключа сервера нужно в консоли OpenSSL ввести команду
openssl.exe genrsa -out server.key 2048
Получение сертификата
Чтобы получить сертификат веб-сервера, нужно на основе криптографических ключей составить запрос в удостоверяющий центр на выдачу сертификата. Формирование запроса на 730 дней производится командой:
openssl.exe req -new -x509 -days 730 -nodes -out cert.pem -keyout cert.key -subj "/C=COUNTY_NAME/ST=STATE_NAME/L=CITY_NAME/O=COMPANY_NAME/OU=IT/CN=fqdn-name-vm.ru-central1.internal/CN=fqdn-name-vm"
openssl.exe req -config C:\Apache24\conf\openssl.cnf -new -out ssl.csr
Доработать раздел по инструкции dmosk.ru
Доработать раздел по инструкции losst.ru
Доработать раздел по инструкции nizamov.school
Доработать раздел по инструкции https://infostart.ru/1c/articles/1568375
В конфигурационном файле httpd-ssl.conf нужно закомментировать параметр Listen, так как в качестве порта SSL мы будем использовать основной порт, указанный в httpd.conf.
В параметре CN указано внутренний FQDN, на примере виртуальной машины Яндекс.Облако.
Для генерации запроса нужно набрать с клавиатуры ответы на задаваемые вопросы о принадлежности и реквизитах сервера. На этом этапе важно иметь в виду, что для ввода в поле данных пустого значения нужно ввести " . " (точку). Если вместо этого просто нажать клавишу [Enter], то будет принято значение по умолчанию, которое указано в квадратных скобках. А сами данные следующие:
C - County name — двухзначный буквенный код страны;
ST - State or Province Name — название региона, области, района;
L - Locality Name — название населённого пункта;
O - Organization Name — название организации;
OU - Organizational Unit Name — название подразделения;
CN - Common Name — доменное имя сервера;
Email Address — контактный адрес электронной почты;
A challenge password — кодовое слово;
An optional company name — дополнительное название организации;
Значения последних двух полей вводить не обязательно. Самое главное — правильно указать доменное имя сервера, потому что именно по этому реквизиру веб-браузеры будут проверять подлинность веб-сервера.
В результате выполнения этой команды будет сформирован файл "server.csr", содержащий необходимую для выдачи сертификата информацию. Этот файл можно отправлять в удостоверяющий центр, после чего ожидать от него ответа.
Сертификат сроком на 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 ${DOCROOT}/conf/extra/httpd-ssl.conf
Если веб-сервер установлен в соответствии с описанной ранее методикой, то в конфигурационном файле "D:\www\conf\extra\httpd-ssl.conf" нужно все вхождения "${SRVROOT}" заменить на "${DOCROOT}". Кроме того, нужно в этом же файле исправить пути к секретному ключу и сертификату веб-сервера:
#SSLCertificateFile "${DOCROOT}/conf/server.crt"
SSLCertificateFile "${DOCROOT}/conf/ssl/server.crt"
#SSLCertificateKeyFile "${DOCROOT}/conf/server.key"
SSLCertificateKeyFile "${DOCROOT}/conf/ssl/server.key"
В том же файле нужно указать правильные имя сервера и контактный адрес электронной почты. Эти реквизиты должны совпадать с теми, которые были введены при формировании запроса на сертификат. Например, для локального сервера доменное имя будет "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. Например, для получения главной страницы сайта нужно набрать:
GET / HTTP/1.0
Ввод команды нужно завершить двумя нажатиями клавиши [Enter]. В ответ на экран будут выведены:
отправленные на сервер зашифрованные данные;
зашифрованные данные, полученные от сервера;
расшифрованный ответ сервера.