Рейтинг:19

Клиент в Debian 9 ошибочно сообщает об истечении срока действия сертификата для домена, выданного letsencrypt

флаг in

Если я попытаюсь получить доступ к нашему HTTPS-серверу с сертификатом, выданным certbot из Debian 9, я получу следующую ошибку:

 # curl -v https://hu.dbpedia.org/
 * Попытка 195.111.2.82...
 * Установлен TCP_NODELAY
 * Подключено к hu.dbpedia.org (195.111.2.82), порт 443 (#0)
 * ALPN, предлагая h2
 * ALPN, предлагающий http/1.1
 * Выбор шифра: ВСЕ:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
 * успешно установить места проверки сертификата:
 * CA-файл: /etc/ssl/certs/ca-certificates.crt
   CApath: /etc/ssl/certs
 * TLSv1.2 (OUT), заголовок TLS, статус сертификата (22):
 * TLSv1.2 (OUT), рукопожатие TLS, приветствие клиента (1):
 * TLSv1.2 (IN), рукопожатие TLS, приветствие сервера (2):
 * TLSv1.2 (IN), рукопожатие TLS, сертификат (11):
 * TLSv1.2 (OUT), оповещение TLS, приветствие сервера (2):
 * Проблема с сертификатом SSL: срок действия сертификата истек
 * Curl_http_done: называется преждевременным == 1
 * остановил поток паузы!
 * Закрытие соединения 0
 curl: (60) Проблема с сертификатом SSL: срок действия сертификата истек

Однако, если я попробую ту же команду из Debian 10, все получится.

Я попытался просто скопировать все ca-сертификаты с виртуальной машины Debian 10 на виртуальную машину Debian 9 (в /usr/local/share/ca-certificates) с помощью rsync, а затем запустил обновление-ca-сертификаты который, казалось бы, добавил 400+ сертификатов. К сожалению, это не помогло. Это неудивительно, так как кажется, что и для debian 9, и для 10 одинаковые сертификаты.

мой вопрос: Как я могу получить доступ к сайтам с сертификатами certbot с машин Debian 9 не игнорируя проверку сертификата вообще

P.Péter avatar
флаг in
@GeraldSchneider К сожалению, это не вариант, по крайней мере, в краткосрочной перспективе. Я хотел бы иметь временное решение, пока не будет выполнено обновление.
P.Péter avatar
флаг in
Забавный факт: старые (около 4 лет) версии OSX страдают от той же проблемы.Они также, вероятно, используют и старую версию openssl.
Рейтинг:25
флаг cn

Во-первых, Debian 9 — это EOL. Но поскольку клиенты могут быть не под вашим контролем, вы, конечно, можете попытаться угодить им в этом разрыве.

Я предполагаю, что хотя в вопросе упоминается только certbot, что это действительно конкретно о Letsencrypt.
(Инструмент certbot сам по себе является клиентом протокола ACME, который также используется с другими центрами сертификации на основе ACME, поэтому здесь есть место для путаницы.)

Проблема под рукой может показаться комбинацией:

  • Срок действия старого корня Letsencrypt ("DST Root CA X3") истек
  • Новый По умолчанию Сеть LE пытается быть «дополнительно совместимой» представляя необязательное расширение цепочки, в которой новый корень («ISRG Root X1») представлен как промежуточное звено с перекрестной подписью для старого корня (поскольку очень старые версии Android все еще принимают корень с истекшим сроком действия, но не имеют нового корня )
  • В Openssl 1.0 есть ошибка заставляя его просто попробовать первую цепочку, которую он увидит, и, если ему это не нравится, он не смотрит ни на какие другие возможности (т. е. более короткая новая цепочка, заканчивающаяся на X1, по сравнению с более длинным «совместимым» расширением этой цепочки, проходящей через от Х1 до Х3).
  • libcurl3 в Debian 9 связан с libssl 1.0

Если вместо этого вы представляете новую цепочку сертификатов LE, которая не пытается быть дополнительной совместимой, а просто заканчивается новым корнем (X1), это позволяет работать libssl 1.0 (но вместо этого вы теряете совместимость с действительно старым Android).

Помимо этого, другие ЦС (ACME или другие), вероятно, являются вариантом для рассмотрения.

P.Péter avatar
флаг in
Это было лучшее объяснение проблемы, спасибо!
P.Péter avatar
флаг in
Между прочим, самый «дебианский» способ отключения сертификата, по-видимому, заключается в запуске `dpkg-reconfigure ca-certificates` и отмене выбора вызывающего нарушение сертификата из списка.
Orphans avatar
флаг cn
Debian 9 на самом деле не является End-Of-Life, Debian 8 достиг EOL этим летом, но Debian 9 продолжает поддерживаться обновлениями безопасности.
bN_ avatar
флаг lu
bN_
Это отличное объяснение причины проблемы, но возможно ли исправить ее без обновления до Debian 10?
bN_ avatar
флаг lu
bN_
Изменить: @P.Péter, использующий `dpkg-reconfigure ca-certificates` для отмены выбора «DST Root CA X3», решает проблему. Принятый ответ на самом деле дает объяснения, но не решение. Он должен быть обновлен с комментарием @P.Péter.
Han avatar
флаг us
Han
Я еще не пробовал последнюю версию openssl, но я столкнулся с той же проблемой на `openssl 1.1.1c` в моей системе Debian и решил проблему, удалив сертификат DST X3 с истекшим сроком действия и добавив новый сертификат ISRG X1 (запустив `dpkg -переконфигурировать`). Ознакомьтесь с [этой статьей](https://www.openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire/) для получения подробной информации.
Рейтинг:25
флаг cn

Предупреждение! Пожалуйста, спланируйте путь обновления ОС. Приведенный ниже совет следует применять только в экстренных ситуациях, чтобы быстро починить критическую систему.

Приведенное ниже решение работает на Debian Jessy 8 и должно также отсутствовать обновления Stretch 9. Я только что проверил это на docker run -it debian: Джесси Баш, apt-get update && apt-get install curl.

Перед:

# завиток -I https://hu.dbpedia.org
curl: (60) Проблема с сертификатом SSL: срок действия сертификата истек
Подробнее здесь: http://curl.haxx.se/docs/sslcerts.html
....

Сначала проверьте, присутствует ли у вас оскорбительный сертификат DST Root CA X3:

# grep X3 /etc/ca-certificates.conf 
Mozilla/DST_Root_CA_X3.crt

В старых выпусках Debian также присутствует правильный ISRG Root X1:

# grep X1 /etc/ca-certificates.conf 
мозилла/ISRG_Root_X1.crt

Это отключит X3:

# sed -i '/^mozilla\/DST_Root_CA_X3/s/^/!/' /etc/ca-certificates.conf && update-ca-certificates -f

Ваш домен отлично отвечает на curl:

# завиток -I https://hu.dbpedia.org/
HTTP/1.1 200 ОК
...

Опять же, спланируйте обновление, пожалуйста.

флаг sh
Ray
Это удаление/комментирование сертификата в файле conf также сработало для нас. Спасибо вам за помощь.
флаг sb
Я могу подтвердить, что это работает и в Debian Stretch.
luminol avatar
флаг uz
Работает на трех моих серверах Debian GNU/Linux 10 (buster). Четыре из них сломались за 1 день, и мне пришлось лишить их большей части завитка, чтобы они заработали. Один веб-сайт, размещенный на Debian Buster, все еще не работает, но это может быть другая ошибка, я полагаю, поскольку предыдущие три веб-сайта отключились 1 октября, а этот с оставшейся ошибкой - 4 января. Спасибо!
Рейтинг:5
флаг ru
ndd

Срок действия корневого сертификата DST Root CA X3 истек 30 сентября 14:01:15 2021 GMT. Он использовался как один из путей сертификации для сертификатов Let’s Encrypt. В более старой версии cURL есть ошибка, которая приводит к сбою подключения с истекшим сроком действия root вместо того, чтобы пытаться использовать другие корни в локальном хранилище CA.

По состоянию на 30 сентября 2021 г. ca store for curl (https://curl.se/docs/caextract.html) по-прежнему содержит корневой сертификат DST Root CA X3 с истекшим сроком действия, поэтому его обновление не решит проблему. Вы можете либо обновить свой cURL (что может быть довольно сложно в некоторых ситуациях), либо отредактировать локальное хранилище CA (например, /etc/pki/tls/certs/ca-bundle.crt) и вручную удалить сертификат после строки «DST Root CA X3».

Рейтинг:2
флаг in

Для Debian 8 и 9 я просто делаю это для обновления сертификата на хосте, и больше не возникает ошибка 60: проблема с сертификатом SSL: срок действия сертификата истек: https://github.com/xenetis/letsencrypt-expiration

Просто запустите, должно работать:

wget -O — https://raw.githubusercontent.com/xenetis/letsencrypt-expiration/main/letsencrypt-expiration.sh | бить
флаг in
Потрясающе, спасибо! В конце концов я перейду с Debian 9...
Рейтинг:2
флаг bd

У меня только что была эта проблема с образом Docker на основе Debian Stretch. Решение было простым, я полагаю, что Debian исправил libssl1.0.2 чтобы исправить проблему с выбором цепочки, о которой упоминал Хакан. В моем случае обновление только сертификатов и libssl1.0.2 запустив apt install -y libssl1.0.2 ca-сертификатыудачное обновление для контейнеров заранее) было достаточно.

Рейтинг:0
флаг ae

После ответа Николо1, я запустил скрипт на своем устаревшем сервере Debian 9 и все еще получал ту же ошибку с истекшим сроком действия сертификата. обновление-ca-сертификаты справочная страница говорит

Кроме того, все сертификаты с расширением .crt, расположенные ниже /usr/local/share/ca-certificates, также включаются как неявно доверенные.

Сценарий, которым он поделился, на сегодняшний день загружает сертификаты ISRG & Let’s Encrypt как .pem файлы, поэтому обновление-ca-сертификаты не включать их автоматически. После создания мягкой ссылки на эти .pem файлы, но с .crt расширение, работает обновление-ca-сертификаты снова действительно включает их, и ошибка с истекшим сроком действия сертификата исчезает. Спасибо за ваш ответ!

John Greene avatar
флаг cn
У меня всегда есть сценарий, который копирует файлы PEM в каталог конфигурации демона вместо символической ссылки.

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

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