Тест на валидный сертификат для включения force_https сломан: он остаётся выключенным, хотя должен быть включён

Редакция: меняю это на баг. Force_https теперь отключен на сайтах, где раньше был включен, и это ломает функционал.


Я потратил немало времени на отладку сайта, на котором «не работают загрузки». Перебрав множество очевидных причин (пересборка, безопасный режим, проверка нестандартных плагинов), я наконец заметил предупреждение о смешанном контенте, включил force_https, и всё снова работает.

Мне казалось, что год или два назад force_https был включен по умолчанию, но в последнее время я несколько раз слышал (или, возможно, видел), что что-то ломалось из-за того, что force_https не был включен.

Есть ли причина не включать его по умолчанию?
[/quote]

Я потратил немало времени на отладку сайта, на котором «не работают загрузки». Перебрав множество очевидных причин (пересборка, безопасный режим, проверка нестандартных плагинов), я наконец заметил предупреждение о смешанном контенте, включил force_https, и всё снова работает.

Мне казалось, что год или два назад force_https был включен по умолчанию, но в последнее время я несколько раз слышал (или, возможно, видел), что что-то ломалось из-за того, что force_https не был включен.

Есть ли причина не включать его по умолчанию?

1 лайк

Это включается автоматически в discourse.conf, если присутствует действительный сертификат.
Это действительно так уже год или два.

grep -q 'force_https' "/var/www/discourse/config/discourse.conf" || echo "force_https = 'true'" >> "/var/www/discourse/config/discourse.conf"

1 лайк

Ага! Спасибо, Ричард.

Значит, я не с ума схожу.

Проблема в том, что проверка валидности сертификата не проходит:

# openssl verify -CAfile ca.cer fullchain.cer 
O = Digital Signature Trust Co., CN = DST Root CA X3
error 10 at 3 depth lookup: certificate has expired
error fullchain.cer: verification failed

А если я удалю mozilla/DST_Root_CA_X3.crt из /etc/ca-certificates.conf и выполню update-ca-certificates, то получу следующее:

C = US, O = Internet Security Research Group, CN = ISRG Root X1
error 2 at 2 depth lookup: unable to get issuer certificate
error fullchain.cer: verification failed

В браузере всё отображается корректно. Я только что пересобрал этот контейнер сегодня (значит, в нём должны быть обновлённые корневые сертификаты).

Я не очень разбираюсь в таких вещах, поэтому не понимаю, что именно происходит. Внутри контейнера я могу выполнить curl для получения сертификата Let’s Encrypt (это был тест, который не проходил на контейнере с WordPress, с которым я работал на прошлой неделе).

И в этот раз проблема не только у меня — недавно несколько человек решили её, включив force_https.

1 лайк

Да, это похоже на проблему с истечением срока действия корневого сертификата Let’s Encrypt, особенно если она возникла после прошлой пятницы.

Что показывает команда openssl version (внутри контейнера Docker)? (Из-за этого).

2 лайка
OpenSSL 1.1.1d  10 сен 2019

Возможно, требуется «ISRG Root X1 в хранилище доверенных сертификатов»? Но я вижу mozilla/ISRG_Root_X1.crt в файле ca-certificates.conf.

1 лайк

О боже. Я потратил два дня на отладку проблемы, которая, как я думал, была сложной и касалась Rails, Ansible и Python, а оказалось, что мой сервер, на котором раньше было включено force_https, сейчас этого не делает, и множество запросов отправлялись на http://myserver, а не на https://myserver.

Это действительно похоже на баг.

2 лайка

Да, это действительно ошибка.

На прошлой неделе мы переносили форум на другой сервер и столкнулись с лимитом повторной выдачи сертификатов Let’s Encrypt (максимум 5 в неделю для одного и того же имени хоста). Сначала мы не понимали причины, но эта ошибка приводила к повторной выдаче сертификата при каждой сборке, и после пяти попыток мы уперлись в лимит. Это не вызвало тревоги, поскольку предыдущий сертификат всё ещё оставался на сервере.

Всё изменилось, когда мы перенесли форум на новый сервер. Там мы не получили новый сертификат. Мы могли бы скопировать его со старого сервера, но так и не поняли, что стало причиной проблемы.

acme.sh зафиксирован на версии 2.9.0, в то время как в ветке master сейчас версия 3.0.1, где есть функция установки цепочки по умолчанию. Я подозреваю, что это может быть связано с проблемой.

3 лайка

Привет, @Falco. Ты не мог бы взглянуть на это? Похоже, ты хорошо разбираешься в таких вопросах. Я уже несколько часов в течение последних пары недель пытаюсь разобраться, но до сих пор не понимаю, что происходит.

1 лайк

Да, я назначил это на себя в выходные. У нас сейчас длинные праздничные выходные, но я посмотрю на это на этой неделе как можно скорее.

2 лайка

Ага. Это как раз тот момент, который я упустил. Извините, что побеспокоил вас.

У нас только что закончились длинные праздничные выходные, и день Непорочного Зачатия Пресвятой Девы Марии Апаресиды не был отмечен в моём календаре. Но теперь я знаю.

Спасибо.

2 лайка

Это исправлено в

5 лайков

Спасибо @Falco за вашу усердную работу над этим :slight_smile:

2 лайка