Ошибка при настройке SSL на альтернативном порту

У меня есть веб-сервер, работающий на Raspberry Pi. У меня работает stunnel на порту 443, поэтому я работаю над переносом своего веб-сервера на порт 8443. Я использую Let's Encrypt (Certbot) для своих сертификатов SSL, и ранее они работали безупречно.

Я узнал, как получить сертификаты с помощью DNS-запроса, поэтому наличие порта 443 для аутентификации больше не требуется. Я считаю, что все мои файлы конфигурации настроены правильно, но я вставлю их ниже.

Apache работает, и с ним ничто не должно конфликтовать, но всякий раз, когда я пытаюсь получить доступ к своему сайту через HTTPS, Chrome говорит, что сайт неожиданно закрывает соединение, а Edge говорит, что он использует устаревшие или небезопасные настройки TLS.

Я пытался понять это для себя, но на данный момент я понятия не имею, что делать.

Ports.conf

# If you just change the port or add more ports here, you will likely also'
# have to change the VirtualHost statement in'
# /etc/apache2/sites-enabled/000-default.conf'
Listen 80
#<IfModule ssl_module>'
#       Listen 8443'
#</IfModule>'
#<IfModule mod_gnutls.c>'
#       Listen 8443'
#</IfModule>'
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet'
<IfModule mod_ssl.c>
Listen 8443
</Ifmodule>

Пример HTTPS VHost Config

<IfModule mod_ssl.c>
<VirtualHost *:8443>
        ServerName mysite.tld
        ServerAdmin myemail@provider.com
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/mysite.tld/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mysite.tld/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Пример HTTP-конфигурации

<VirtualHost *:80>
        ServerName mysite.tld
        ServerAdmin myemail@provider.com
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
Redirect permanent / https://mysite.tld/
RewriteEngine on
RewriteCond %{SERVER_NAME} =mysite.tld
RewriteRule ^ https://{SERVER_NAME}{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>

Я уже задавал этот вопрос о сбое сервера и был перенаправлен сюда. Ответы, которые я получил, начали указывать мне правильное направление, но я все еще не знаю, что я могу сделать, чтобы это исправить. Лучший ответ был

Если вы просто посетите http://mysite.tld/ он перенаправит вас на порт 443 (https), где ничего не прослушивается. Это объясняет вашу ошибку.

Кто-нибудь может понять это? Спасибо!

2 ответа

Вы пытались ввести домен:8443 в свой браузер?

Каждый браузер по умолчанию использует порт 80 для HTTP-страниц и порт 443 для HTTPS-страниц. Если вы хотите явно указать порт, вы должны добавить порт к URL-адресу, используя двоеточие

Вы указали, что Apache должен прослушивать порт 8443, только если mod_ssl загружен (т. е. у этого Apache есть возможность использовать SSL/TLS), но в ваших фрагментах конфигурации, кажется, ничто не говорит Apache о том, чтобы фактически использовать SSL / TLS на порту 8443.

Вы делаете это, добавляя SSLEngine on к <VirtualHost> блок, который должен использовать SSL/TLS:

<VirtualHost *:8443>
    SSLEngine on
    ServerName mysite.tld
    # etc...

Когда вы перенаправляете браузер на URL-адрес HTTPS без явного указания номера порта, браузер пытается подключиться к порту HTTPS по умолчанию, который равен 443. Так же, как порт 80 используется по умолчанию для простого HTTP.

Вам нужно будет изменить перенаправление, указав номер порта:

RewriteRule ^ https://{SERVER_NAME}:8443{REQUEST_URI} [END,QSA,R=permanent]
Другие вопросы по тегам