SSL сертификат с поддержкой WWW для РАЗНЫХ ЛОКАЛЬНЫХ доменов

Советы и рекомендации, полезные инструкции, обмен опытом
Аватара пользователя
PhpStorm
Сообщения: 26
Зарегистрирован:
06 авг 2017, 20:14

SSL сертификат с поддержкой WWW для РАЗНЫХ ЛОКАЛЬНЫХ доменов

PhpStorm » 13 июн 2019, 12:11

модуль: Apache_2.4-PHP_7.2-7.3-x64
тестовый домен (вместо него можно использовать тот, который нужен): test.osp
сервер установлен на диск C: в папку OSPanel (если у Вас другой путь, то соответствующие пути изменить)

В любом месте в одной и той же папке (назовите папку как хотите) на жёстком диске создаём 2 файла: start.bat и config.txt.

Содержимое start.bat
@echo off
set OPENSSL_CONF=C:\OSPanel\modules\http\Apache_2.4-PHP_7.2-7.3-x64\conf\openssl.cnf
C:\OSPanel\modules\http\Apache_2.4-PHP_7.2-7.3-x64\bin\openssl req -x509 -sha256 -newkey rsa:2048 -nodes -days 5475 -keyout rootCA.key -out rootCA.crt -subj "/CN=OSPanel/"
C:\OSPanel\modules\http\Apache_2.4-PHP_7.2-7.3-x64\bin\openssl req -newkey rsa:2048 -nodes -days 5475 -keyout server.key -out server.csr -subj "/CN=PhpStorm/"
C:\OSPanel\modules\http\Apache_2.4-PHP_7.2-7.3-x64\bin\openssl x509 -req -sha256 -days 5475 -in server.csr -extfile config.txt -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt

Содержимое config.txt
nsComment = "OSPanel Generated Certificate"
basicConstraints = CA:false
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

subjectAltName = @alt_names
[alt_names]
DNS.1 = test.osp
DNS.2 = www.test.osp

Запускаем start.bat, сертификат генерируется моментально.

В результате в папке с этими двумя файлами появляются 6 файлов нашего сертификата, вырезаем их.

В папке domains создаём папку test.osp, в папке test.osp создаём папку ssl, в неё вставляем 6 файлов сертификата.

Запускаем файл rootCA, далее: Установить сертификат -> Текущий пользователь -> Поместить сертификат в следующее хранилище -> Обзор -> Доверенные коренные центры сертификации.

Если браузер был запущен, то закрыть браузер.

Помещаем в папку test.osp файл Apache_2.4-PHP_7.2-7.3-x64_vhost.conf, а именно копируем его из папки userdata\config, открываем в папке test.osp файл Apache_2.4-PHP_7.2-7.3-x64_vhost.conf и вносим изменения, следующие 2 строки:

SSLCertificateFile "%sprogdir%/userdata/config/cert_files/server.crt"
SSLCertificateKeyFile "%sprogdir%/userdata/config/cert_files/server.key"

меняем на

SSLCertificateFile "%sprogdir%/domains/%host%/ssl/server.crt"
SSLCertificateKeyFile "%sprogdir%/domains/%host%/ssl/server.key"

В панели управления OSPanel в меню Алиасы указываем исходный домен www.test.osp и конечный домен test.osp: Добавить -> Сохранить (сервер перезапустится).

В папке test.osp создаём файл .htaccess и сохраняем туда следующее содержимое

RewriteEngine On
RewriteCond %{HTTPS}_%{HTTP_HOST} ^(?|off_(?:www\.)?(.*)|on_www\.(.*)) [NC]
RewriteRule .* https://%1/$0 [R=301,L]

Запускаем сайт test.osp.
Ответить