НАСТРОЙКИ
November 7, 2020

HTTPS для OpenServer (SSL сертификат)

Оглавление ▴

#1 Создаем .bat файл

C:\OpenServer\userdata\config\cert_files\generate-DOM-CERT.bat со следующим кодом:

: Version 1.0
: Author unknown (improved by Kama - wp-kama.ru)
@echo off

: parameters
set DOM=demo.ru
set DOM_KEY=demo
set APACHE_VER=Apache_2.4-PHP_7.2-7.3-x64

: create .txt config file
set config_txt=generate-temp-config.txt
(
	echo nsComment = "Open Server Panel Generated Certificate"
	echo basicConstraints = CA:false
	echo subjectKeyIdentifier = hash
	echo authorityKeyIdentifier = keyid,issuer
	echo keyUsage = nonRepudiation, digitalSignature, keyEncipherment
	echo.
	echo subjectAltName = @alt_names
	echo [alt_names]
	echo DNS.1 = %DOM%
	echo DNS.2 = www.%DOM%
) > %config_txt%

mkdir %DOM_KEY%

set OSAPACHE_DIR=%~dp0..\..\..\modules\http\%APACHE_VER%
set OPENSSL_CONF=%OSAPACHE_DIR%\conf\openssl.cnf
%OSAPACHE_DIR%\bin\openssl req -x509 -sha256 -newkey rsa:2048 -nodes -days 5475 -keyout %DOM_KEY%\%DOM_KEY%-rootCA.key -out %DOM_KEY%\%DOM_KEY%-rootCA.crt -subj /CN=OSPanel-%DOM_KEY%/
%OSAPACHE_DIR%\bin\openssl req -newkey rsa:2048 -nodes -days 5475 -keyout %DOM_KEY%/%DOM_KEY%-server.key -out %DOM_KEY%\%DOM_KEY%-server.csr -subj /CN=%DOM_KEY%/
%OSAPACHE_DIR%\bin\openssl x509 -req -sha256 -days 5475 -in %DOM_KEY%\%DOM_KEY%-server.csr -extfile %config_txt% -CA %DOM_KEY%\%DOM_KEY%-rootCA.crt -CAkey %DOM_KEY%\%DOM_KEY%-rootCA.key -CAcreateserial -out %DOM_KEY%\%DOM_KEY%-server.crt
%OSAPACHE_DIR%\bin\openssl dhparam -out %DOM_KEY%\%DOM_KEY%-dhparam.pem 2048

del %DOM_KEY%\%DOM_KEY%-server.csr
del %DOM_KEY%\%DOM_KEY%-dhparam.pem
del %DOM_KEY%\%DOM_KEY%-rootCA.srl
del %config_txt%

pause

Параметры:

  • DOM — домен для которого создается сертификат
  • DOM_KEY — как будет называться папка с сертификатами и префикс у файлов сертификата. Указываем тут домен без зоны или сокращенное название домена, чтобы вам было понятно от какого домена текущий сертификат.
  • APACHE_VER — имя папки апач сервера из C:\OpenServer\modules\http\. Из этого сервера будет использована библиотека openssl для создания сертификатов.

Между = в параметрах не должно быть пробелов!

// Правильно
set DOM_KEY=demo

// Неправильно
set DOM_KEY= demo
set DOM_KEY = demo

Чтобы создать очередной сертификат для домена, нужно будет просто открыть этот файл, изменить параметры и запустить его.

меню

#2 Запускаем файл generate-DOM-CERT.bat (как обычный юзер, НЕ админ!)

Для запуска делаем двойной клик по файлу. Файл создаст папку домена (параметр DOM_KEY) и в ней файлы сертификатов.

#3 Добавляем созданный сертификат в хранилище сертификатов Windows

Для этого запускаем файл DOM_KEY/DOM_KEY-rootCA.crt.

ВАЖНО! Файл надо запускать с правами админа! Если в контекстном меню нет пункта "Открыть от админа", то открываем cmd/powerShell от админа и уже от туда запускаем файл сертификата. Выглядит это так:

Далее: Install Certificate > Current User > Trusted User Sertificate > Local Computer:

меню

#4 Копируем файл конфигурации апача

C:\OpenServer\userdata\config\Apache_2.4-PHP_7.2-7.3-x64_vhost.conf в корневую папку сайта (туда где лежит wp-config.php).

#5 Изменяем скопированный файл конфигурации

Apache_2.4-PHP_7.2-7.3-x64_vhost.conf — поправляем в нем пути до созданных файлов сертификатов.

Должен получится примерно такой код файла:

<VirtualHost *:%httpport%>

	DocumentRoot    "%hostdir%"
	ServerName      "%host%"
	ServerAlias     "%host%" %aliases%
	ScriptAlias     /cgi-bin/ "%hostdir%/cgi-bin/"

</VirtualHost>

<IfModule ssl_module>

	<VirtualHost *:%httpsport%>

		DocumentRoot    "%hostdir%"
		ServerName      "%host%"
		ServerAlias     "%host%" %aliases%
		ScriptAlias     /cgi-bin/ "%hostdir%/cgi-bin/"

		SSLEngine       on

		SSLCertificateFile     "%sprogdir%\userdata\config\cert_files\DOM_KEY\DOM_KEY-server.crt"
		SSLCertificateKeyFile  "%sprogdir%\userdata\config\cert_files\DOM_KEY\DOM_KEY-server.key"

	</VirtualHost>

</IfModule>

меню

#6 Готово!

Перезагружаем OpenServer и возможно браузер.