Рейтинг:0

Срок действия корневого сертификата серверных служб

флаг ru

Мы используем mTLS для аутентификации наших серверных служб, а срок действия корневого сертификата истекает в 2022 году. Вот сведения об истечении срока действия для всех сертификатов:

  • корень срок действия сертификата истекает через 2022
  • средний срок действия сертификатов истекает через 2031
  • лист срок действия сертификатов истекает через 2023

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

  • Мы обновили сертификаты в тестовой среде и установили срок действия корневого сертификата через час.
  • Все заработало нормально через час
  • Мы провели еще один тест с промежуточными сертификатами, и срок их действия истекает через час.
  • Через час мы начали получать ошибки аутентификации

Может ли кто-нибудь подтвердить, достаточно ли наших тестов для проверки того, что истечение срока действия корневого сертификата не должно вызывать проблем?

Спасибо за любую информацию, которую вы можете предоставить!

### Дополнительная информация ###

Мы используем mTLS-аутентификацию между нашими внутренними сервисами:

  • Консул Хашикорп, Кочевник и Хранилище
  • MongoDB
  • Несколько других услуг

В этих экземплярах мы можем найти промежуточные и конечные сертификаты, но не корневой.

Если я проверю промежуточный сертификат, я увижу, что срок его действия истекает через 1 год, хотя срок действия корневого сертификата уже истек.

Я протестировал эти сертификаты с помощью Terraform для создания 3 серверов Consul в новой среде. Тестовые сертификаты были установлены на каждом экземпляре, и срок действия корневого сертификата не вызывает никаких проблем.

флаг br
Маловероятно, что вы достаточно проверили это. Я определенно не стал бы продолжать без дополнительных испытаний. Однако ваш вопрос довольно расплывчатый и мало что дает. Какие именно испытания вы проводили? Что является проверяющей стороной в этом сценарии? Не забыли ли вы перед тестированием установить новый недолговечный корневой ЦС в качестве якоря доверия в проверяющей стороне?
StefB avatar
флаг ru
@garethTheRed Спасибо за ваш вклад. Я добавил еще несколько деталей в конце описания. Что касается истечения срока действия корневого сертификата, который не вызывает никаких проблем, может быть, это связано с тем, что предполагается, что срок действия корневого сертификата *должен* истечь до промежуточного и уйти? Кроме того, если я правильно понимаю, в худшем случае я мог бы сгенерировать новый корневой сертификат, используя тот же закрытый ключ, а промежуточный и листья будут работать до истечения срока их действия, верно?
флаг br
Да, если вы используете тот же ключ _и_ точно такой же субъект, вы можете заменить корневой сертификат с истекшим сроком действия этим новым. Это, вероятно, ваш самый безопасный вариант. Вы говорите, что подтверждаете, но не объясняете, как. Какой инструмент вы используете для проверки? Также см. @dave_thompson_085 [комментарии ниже] (https://serverfault.com/questions/1083180/backend-services-root-certificate-expiration?noredirect=1#comment1414293_1083221).
StefB avatar
флаг ru
Для тестирования я развернул кластер из 3 экземпляров Consul, которые используют mTLS для связи. Как указывалось ранее, я не вижу никакой ошибки, если срок действия корневого сертификата истекает, но если срок действия промежуточного сертификата истекает, я сразу получаю ошибки. Я не думаю, что корневой сертификат вообще используется в этом сценарии, и мне придется проверять все остальные внутренние службы. Я планирую обновить наш корневой сертификат, чтобы убедиться, что мы не столкнемся с проблемами, когда истечет срок действия текущего корня. Спасибо за вашу помощь!
Рейтинг:0
флаг cn

Функция проверки сертификата, совместимая с RFC 5280, требует, чтобы все сертификаты в цепочке (включая корневой сертификат) ДОЛЖНЫ быть в пределах их сроков действия на момент проверки. То есть надлежащая функция проверки сертификата не сможет проверить вашу цепочку сертификатов после истечения срока действия root (в 2022 году).

RFC 5280 §6.1.3.a.3:

Срок действия сертификата включает текущее время.

и это относится к каждому сертификату в цепочке. Если вы обнаружите, что листовой сертификат успешно проверен на соответствие корневому сертификату с истекшим сроком действия, выполните одно из следующих действий:

  1. есть кросс-сертификат, который перенаправляет вас на другой корень
  2. функция проверки сертификата настроена неправильно и игнорирует определенные ошибки проверки.
dave_thompson_085 avatar
флаг jp
5280 не требует этого; 6.1.3 применяется к «сертификату i для i в 1..n», как определено в 6.1, который ИСКЛЮЧАЕТ якорь доверия (т. е. корень), который вообще не обязательно должен быть сертификатом и может не иметь_ периода действия.Примечание (b) на странице 73 и, более подробно, предпоследний абзац на странице 73. **Большинство** реализаций действительно используют сертификаты для привязок, и TTBOMK проверяет действительность, но заметным исключением является то, что LetsEncrypt продолжает используйте необязательный путь к корню DST X3, срок действия которого истек 30 сентября, потому что старые необновляемые телефоны Android все еще доверяют ему, но _не_ доверяют (более новому) корню ISRG X1.
флаг cn
Let’s encrypt решили их проблему с помощью кросс-сертификатов. В противном случае сеть будет разорвана. Это означает, что во всех возможных цепочках должен присутствовать хотя бы один корень с неистекшим сроком действия.
dave_thompson_085 avatar
флаг jp
Конечно, необязательно, чтобы все цепочки были действительными; ITYM должна быть цепочка _a_ до неистекшего корня. Но это не так для Android, как объясняется на странице https://letsencrypt.org/2020/12/21/extending-android-compatibility.html. (На самом деле это не так для Java в целом, но в отличие от Android, встроенного в устройства поставщиками, которые отказываются от поддержки, Java в компьютерных системах обычно можно обновить, и этот хак не требуется.)

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

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