Страница 1 из 1

HTTPS/SSL для доступа по IP

Добавлено: 08 ноя 2023, 13:37
aolko
Привет. Пытаюсь настроить SSL, пользуюсь этим конфигом и этим батником. Для внутренних доменов всё работает замечательно, но как быть с алиасами на IP? Как добиться того чтобы условно на том же 192.168.99.99 который ссылается на mysite.local тоже работал SSL и подцеплялся сертификат?

Re: HTTPS/SSL для доступа по IP

Добавлено: 09 ноя 2023, 12:02
aolko
Модифицировал батник и конфиг:
@echo OFF
 
setlocal enableextensions enabledelayedexpansion
 
set OPENSSL_CONF=%realprogdir%\modules\http\%httpdriver%\conf\openssl.cnf
set PATH=%PATH%;%realprogdir%\modules\http\%httpdriver%\bin
set CERTS_PATH=%realprogdir%\userdata\config\cert_files
 
set days=3660
set key_bits=2048
 
set dname=server
set generic_ips=127.0.0.1 0.0.0.0
rem Введите сюда IP компьютера на котором установлен сервер через пробел
set my_ip=192.168.4.48 192.168.56.1
 
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
set /a count_ip = 1
for %%a in (%generic_ips%) do ( 
    echo IP.!count_ip! = %%a >> %dname%.cnf
    set /a count_ip += 1
)
for %%b in (%my_ip%) do ( 
    echo IP.!count_ip! = %%b >> %dname%.cnf
    set /a count_ip += 1
)
set /a count = 1
for /f "tokens=*" %%G in ('dir %realprogdir%\domains\ /b') do (
	echo DNS.!count! = %%G >> %dname%.cnf
	set /a count += 1
	echo DNS.!count! = www.%%G >> %dname%.cnf
	set /a count += 1
)
 
openssl genrsa -out %CERTS_PATH%\%dname%.key %key_bits%
openssl req -sha256 -new -utf8 -key %CERTS_PATH%\%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%
 
openssl x509 -sha256 -req -days %days% -in %dname%.csr -extfile %dname%.cnf -extensions trust_cert -CA %CERTS_PATH%\rootCA.crt -CAkey %CERTS_PATH%\rootCA.key -out %CERTS_PATH%\%dname%.crt
 
openssl x509 -in %CERTS_PATH%\%dname%.crt -noout -purpose
 
del %dname%.csr
del %dname%.cnf
#-----------------------------------------------#
# Начало блока конфигурации 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       "%sprogdir%/userdata/config/cert_files/ca.crt"
	    #SSLCertificateChainFile    "%sprogdir%/userdata/config/cert_files/CertificateChain.crt"

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

	    SetEnvIf User-Agent ".*MSIE [1-5].*" \
	    nokeepalive ssl-unclean-shutdown \
	    downgrade-1.0 force-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 хоста
#-----------------------------------------------#
На ПК сертификат подхватывается, на устройствах - нет :(

Re: HTTPS/SSL для доступа по IP

Добавлено: 03 дек 2023, 17:23
bandsmet
aolko писал(а): 09 ноя 2023, 12:02 Модифицировал батник и конфиг:
@echo OFF
 
setlocal enableextensions enabledelayedexpansion
 
set OPENSSL_CONF=%realprogdir%\modules\http\%httpdriver%\conf\openssl.cnf
set PATH=%PATH%;%realprogdir%\modules\http\%httpdriver%\bin
set CERTS_PATH=%realprogdir%\userdata\config\cert_files
 
set days=3660
set key_bits=2048
 
set dname=server
set generic_ips=127.0.0.1 0.0.0.0
rem Введите сюда IP компьютера на котором установлен сервер через пробел
set my_ip=192.168.4.48 192.168.56.1
 
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
set /a count_ip = 1
for %%a in (%generic_ips%) do ( 
    echo IP.!count_ip! = %%a >> %dname%.cnf
    set /a count_ip += 1
)
for %%b in (%my_ip%) do ( 
    echo IP.!count_ip! = %%b >> %dname%.cnf
    set /a count_ip += 1
)
set /a count = 1
for /f "tokens=*" %%G in ('dir %realprogdir%\domains\ /b') do (
	echo DNS.!count! = %%G >> %dname%.cnf
	set /a count += 1
	echo DNS.!count! = www.%%G >> %dname%.cnf
	set /a count += 1
)
 
openssl genrsa -out %CERTS_PATH%\%dname%.key %key_bits%
openssl req -sha256 -new -utf8 -key %CERTS_PATH%\%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%
 
openssl x509 -sha256 -req -days %days% -in %dname%.csr -extfile %dname%.cnf -extensions trust_cert -CA %CERTS_PATH%\rootCA.crt -CAkey %CERTS_PATH%\rootCA.key -out %CERTS_PATH%\%dname%.crt
 
openssl x509 -in %CERTS_PATH%\%dname%.crt -noout -purpose
 
del %dname%.csr
del %dname%.cnf
#-----------------------------------------------#
# Начало блока конфигурации 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       "%sprogdir%/userdata/config/cert_files/ca.crt"
	    #SSLCertificateChainFile    "%sprogdir%/userdata/config/cert_files/CertificateChain.crt"

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

	    SetEnvIf User-Agent ".*MSIE [1-5].*" \
	    nokeepalive ssl-unclean-shutdown \
	    downgrade-1.0 force-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 хоста
#-----------------------------------------------#
Разобрался конечно немного с настройкой серверов, но легче все же когда это делают за тебя как наhttps://sysadmin.com.ua/services/server
На ПК сертификат подхватывается, на устройствах - нет :(
Тоже с этой фигней мучаюсь уже задолбался

Re: HTTPS/SSL для доступа по IP

Добавлено: 03 дек 2023, 18:22
Ink0gnit0
@aolko, @bandsmet

А устройства знают о корневом сертификате %CERTS_PATH%\rootCA.crt?