В разработке, я постоянно использую локальный Open Server (OSpanel) и нахожу его очень удобным из-за его гибких настроек и обилия различных модулей. Однако, в каждой новой версии остается одна проблема — отсутствие настроек SSL сертификатов. Поэтому далее я покажу как решить эту проблему…
SSL в Open Server — в чем проблема?
В этом и заключается все, что как таковой проблемы нет, но есть отсутствие корректной информации и обилие ложных мануалов как все настраивать, после которых обычно ничего не работает, либо сервер больше не запускается.
Я долго искал ответы как настроить сертификат, и в итоге нашел решение, которое позволит все реализовать, без каких-либо последствий. Я даже прибегал к стандартным способам установки сертификатов через Let’s Encrypt и т.п, но это также не решило проблем.
Включаем SSL
Итак, теперь по шагам:
- Создаем где-нибудь *.cmd файл. Я назвал его cert_gen.cmd. Вы можете назвать его как хотите;
- В файле cert_gen.cmd прописываем следующий код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
@echo OFF
remУКАЖИТЕПРАВИЛЬНЫЕРАСПОЛОЖЕНИЯФАЙЛОВ
set OPENSSL_CONF=F:\openserver\modules\http\Apache-2.4\conf\openssl.cnf
PATH=%PATH%;F:\openserver\modules\http\Apache-2.4\bin
remКоличестводнейдействиясертификата
set days=730
set key_bits=2048
remНаименованиедомена,длякоторогосоздаётсясертификат
set dname=somesite.com
remУКАЖИТЕПРАВИЛЬНЫЕРАСПОЛОЖЕНИЯФАЙЛОВ
remРасположениекорневогосертификатаиключа
set root_cert=F:\openserver\userdata\config\cert_files\rootCA.crt
set root_key=F:\openserver\userdata\config\cert_files\rootCA.key
echo[trust_cert]>%dname%.cnf
echo subjectAltName=@alt_names>>%dname%.cnf
echo keyUsage=digitalSignature,keyEncipherment,dataEncipherment>>%dname%.cnf
echo extendedKeyUsage=serverAuth,clientAuth>>%dname%.cnf
echo[alt_names]>>%dname%.cnf
echo DNS.1=%dname%>>%dname%.cnf
openssl genrsa-out%dname%.key%key_bits%
openssl req-sha256-new-utf8-key%dname%.key-out%dname%.csr-subj/emailAddress="info\@ospanel\.io"/C=RU/stateOrProvinceName="Russian Federation"/L=Moscow/O="Open Server Panel"/OU=Software/CN=%dname%:3000
remДлясозданиясертификата,подписанногодовереннымсертификатом
openssl x509-sha256-req-days%days%-in%dname%.csr-extfile%dname%.cnf-extensions trust_cert-CA%root_cert%-CAkey%root_key%-out%dname%.crt
openssl x509-in%dname%.crt-noout-purpose
remУдалениевременныхфайлов
del%dname%.csr
del%dname%.cnf
pause
|
- Пройдитесь по коду файла и исправьте, где необходимо пути к файлам и доменное имя локального сайта. Также, убедитесь в наличии всех файлов перечисляемых по коду.;
- Открываем консоль (win + R -> cmd ) и запускаем cert_gen.cmd файл. В итоге вы получите 2 файла — *.crt и *.key. В моем случае это — somesite.com.crt и somesite.com.key;
- Где-нибудь создаем новую папку, которую называем доменным именем ( в моем случае из кода выше — somesite.com, у вас естественно будет свое название ) и перемещаем туда сгенерированные ранее файлы ;
- Переходим в OpenServer\userdata\config\ и создаем там директорию — cert_files ;
- Перемещаем в созданную выше директорию, папку с доменным именем из предыдущего шага;
- Переходим в папку сайта ( в моем случае — OpenServer\domains\somesite.com ) и добавляем туда файл Apache-2.4_vhost.conf или Nginx-1.10_vhost.conf . В зависимости от того Apache у вас или Nginx — укажите правильное имя + измените версию. К слову, имя и версию можно посмотреть в настройках опен сервера — Open Server -> Настройки -> Модули;
- В созданном выше файле прописываете следующий код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#-----------------------------------------------#
# Начало блока конфигурации HTTP хоста
#-----------------------------------------------#
<VirtualHost *:%httpport%>
DocumentRoot "%hostdir%"
ServerName "%host%"
ServerAlias "%host%"%aliases%
ScriptAlias /cgi-bin/"%hostdir%/cgi-bin/"
</VirtualHost>
#-----------------------------------------------#
# Конец блока конфигурации HTTP хоста
#-----------------------------------------------#
#-----------------------------------------------#
# Начало блока конфигурации HTTPS хоста
#-----------------------------------------------#
<IfModule ssl_module>
<VirtualHost *:%httpsport%>
DocumentRoot "%hostdir%"
ServerName "%host%"
ServerAlias "%host%"%aliases%
ScriptAlias /cgi-bin/"%hostdir%/cgi-bin/"
SSLEngine on
#Header always set Strict-Transport-Security "max-age=94608000"
#SSLCACertificateFile ""
#SSLCertificateChainFile ""
SSLCertificateFile "%sprogdir%/userdata/config/cert_files/somesite.com/somesite.com.crt"
SSLCertificateKeyFile "%sprogdir%/userdata/config/cert_files/somesite.com/somesite.com.key"
SetEnvIf User-Agent".*MSIE [1-5].*"\
nokeepalive ssl-unclean-shutdown\
downgrade-1.0force-response-1.0
SetEnvIf User-Agent".*MSIE [6-9].*"\
ssl-unclean-shutdown
<FilesMatch"\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory"%hostdir%/cgi-bin/">
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
#-----------------------------------------------#
# Конец блока конфигурации HTTPS хоста
#-----------------------------------------------#
|
- Пройдитесь по коду файла и исправьте, где необходимо пути к файлам и доменное имя локального сайта. Вы также можете взять код-шаблон этого файла из директории OpenServer\userdata\config\. Там же перечислены все шаблоны для *.conf файлов;
- Перезапустите Open Server;
- Откройте свой сайт через https://.
Сертификат создается на 730 дней, но вы можете установить в настройках файла cert_gen.cmd например 99999 дней и после этого забыть о перевыпуске нового сертификата.
Источник: ziscod.com