Ошибка при настройке 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]