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

384
FlyingHazard

У меня есть веб-сервер, работающий на 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 $/error.log CustomLog $/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 $/error.log CustomLog $/access.log combined Redirect permanent / https://mysite.tld/ RewriteEngine on RewriteCond % =mysite.tld RewriteRule ^ https:// [END,QSA,R=permanent] </VirtualHost> 

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

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

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

0

2 ответа на вопрос

0
Christian H

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

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

Да, я забыл упомянуть, что, когда я это делаю, это работает, но я не вижу веб-страницы, которая находится в DocumentRoot. Я считаю, что другой ответ на этот вопрос правильный, но мне нужно время, чтобы попробовать его. FlyingHazard 6 лет назад 0
0
telcoM

Вы указали, что 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://:8443 [END,QSA,R=permanent] 
Спасибо вам @telecoM, похоже, это моя проблема, особенно когда веб-страница перенаправлена ​​на порт 443. Мне нужно найти время, чтобы попробовать это, но я чувствую, что это должно сработать. Один вопрос, который у меня к вам, заключается в том, отображается ли номер порта в URL, вы перенаправлены в соответствии с этим правилом перезаписи? FlyingHazard 6 лет назад 0
Хорошо, @telecoM, у меня работает перезапись, но отображаемая страница - это не то, что находится в DocumentRoot, а номер порта отображается в URL, а это не то, что я собираюсь. Есть ли способ изменить это? FlyingHazard 6 лет назад 0
Если вы не хотите, чтобы номер порта отображался в URL, то вы должны использовать стандартные порты: 80 для HTTP и 443 для HTTPS. Но вы сказали, что у вас есть порт в порту 443, так что порт уже занят. telcoM 6 лет назад 0