Рейтинг:0

Обновление сертификата LetsEncrypt останавливает работу веб-сайта на основе Apache

флаг us

Недавно я получил электронное письмо от LetsEncrypt, в котором говорилось, что срок действия сертификата моего веб-сайта истекает — я настроил веб-сайт на использование только HTTPS. До сих пор сертификаты автоматически обновлялись без проблем. Я обновил библиотеки OpenSSL на своей Ubuntu 18.04, чтобы использовать последнюю версию TLS 1.3. Все, казалось, работало нормально, но при доступе к моему веб-сайту с помощью веб-браузера Firefox, работающего в Windows 7, отображалось следующее сообщение:

SSL_ERROR_RX_RECORD_TOO_LONG

и файл Apache «access.log» на сервере имеет следующее при доступе к сайту: -

"\x16\x03\x01\x02" 400 499 "-" "-"

Это похоже на рукопожатие TLS, а 400 может быть плохим запросом.

Что-то где-то настроено не так. Как узнать, в чем проблема?

РЕДАКТИРОВАТЬ

Оглядевшись в поисках решения, я обнаружил, что если я наберу: -

dfsoftware.ddns.net

в адресную строку браузера я получаю сообщение об ошибке (в Firefox SSL_ERROR...), но если я наберу: -

http://dfsoftware.ddns.net:443

страница загружается правильно. Таким образом, похоже, что у apache возникают проблемы с обработкой безопасного соединения на порту 443, и он принимает только ванильные запросы на этом порту. Файлы конфигурации выглядят нормально (я могу загрузить их, если вам нужно посмотреть), так что же происходит?

РЕДАКТИРОВАТЬ 2

Вот файлы конфигурации apache, которые я считаю актуальными, если нужны другие, спрашивайте.

apache2.conf: -

Имя сервера dfsoftware.ddns.net
Каталог времени выполнения по умолчанию ${APACHE_RUN_DIR}
Pid-файл ${APACHE_PID_FILE}
Таймаут 300
KeepAlive включен
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Пользователь ${APACHE_RUN_USER}
Группа ${APACHE_RUN_GROUP}
HostnameLookups Off
Журнал ошибок ${APACHE_LOG_DIR}/error.log
Предупреждение LogLevel
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Включить порты.conf

<Каталог />
    Параметры
    Аллововеррайд
    Требовать все отказано
</Каталог>

<Каталог /usr/share>
    Аллововеррайд
    Требовать все предоставленные
</Каталог>

<Каталог /var/www/>
    Индексы опционов FollowSymLinks
    Аллововеррайд
    Требовать все предоставленные
</Каталог>

Имя файла доступа .htaccess

<Соответствие файлов "^\.ht">
    Требовать все отказано
</FilesMatch>

LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" в сочетании
LogFormat "%h %l %u %t \"%r\" %>s %O" общий
LogFormat "%{Referer}i -> %U" реферер
Агент LogFormat "%{User-agent}i"

IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf

<Соответствие файлов \.php$>
    Приложение SetHandler/x-httpd-php
</FilesMatch>

порты.конф:-

    Слушай 80

<IfModule ssl_module>
    Слушай 443
</ЕслиМодуль>

<IfModule mod_gnutls.c>
    Слушай 443
</ЕслиМодуль>

доступные сайты/dfsoftare.ddns.net.conf:-

    <VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName dfsoftware.ddns.net
    ServerAlias www.dfsoftware.ddns.net
    DocumentRoot /WebSites/Websites
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /WebSites/Websites/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =dfsoftware.ddns.net [OR]
    RewriteCond %{SERVER_NAME} =www.dfsoftware.ddns.net
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

доступные сайты/dfsoftare.ddns.net-le-ssl.conf:-

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName dfsoftware.ddns.net
    ServerAlias www.dfsoftware.ddns.net
    DocumentRoot /WebSites/Websites
    SSLEngine on
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /WebSites/Websites/>
    Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>
    SSLEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/dfsoftware.ddns.net-    0001/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/dfsoftware.ddns.net-0001/privkey.pem
</VirtualHost>
</IfModule>
dave_thompson_085 avatar
флаг jp
TLS 3.1 не существует, я полагаю, вы имеете в виду 1.3.Под «обновлением» вы подразумеваете _packages_ `libssl` _and_ `apache2-bin`, которые ссылаются на него (через `mod_ssl`) из стандартного репозитория, или что-то еще, например, PPA или сборку из исходников? Вы использовали certbot или какой-то другой метод? Я могу воспроизвести это, установив `SSLEngine off` (явно) в конфигурации OOTB на sites-available/default-ssl.conf , поэтому вы можете поискать что-то подобное, хотя это кажется действительно странным для certbot или любого здравомыслящего клиента ACME. сделать такую ​​вещь.
флаг us
упс, да, номер версии перепутал! Перепутал маленький и большой порядок байтов, лол! (обновленный вопрос).
флаг us
@ dave_thompson_085: У меня есть строка «SSLEngine on» в этом файле, и файлы, на которые ссылается «SSLCertificateXXX», действительно существуют. И я использовал certbot
флаг us
Немного осмотревшись, я увидел сообщение о том, что SSL не работает на порту 443, поэтому я попробовал «http://:443" и о чудо, это сработало. Похоже, что apache не использует SSL на этом порту. Есть идеи о том, как его включить?
флаг in
Пожалуйста, предоставьте вашу конфигурацию Apache

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.