Что означает ошибка FreeRADIUS "SSL говорит об ошибке 25: превышено ограничение длины пути"?
Я тестирую функциональные возможности WLAN устройства, подключенного к серверу RADIUS. Этот RADIUS-сервер расположен на Raspberry Pi с Raspbian Stretch и использует FreeRADIUS 3.0 и Hostapd.
Некоторые тестовые случаи EAP-TLS проверяют, что происходит, если используются длинные "цепочки доверия". Под длинными цепочками доверия я подразумеваю открытые ключи, которые были подписаны длинной цепочкой промежуточных сертификатов.
Теперь я столкнулся с проблемой, что в некоторых тестовых случаях FreeRADIUS возвращает конкретную ошибку в своем журнале:
SSL сообщает об ошибке 25: превышено ограничение длины пути
Один из этих тестовых случаев описан ниже:
Файлы сертификатов RADIUS:
- Сертификат: ServerCert - IM1 - RootCA (открытый ключ, подписанный IM1, подписанный RootCA)
- Закрытый ключ: ServerKey
- CA-сертификат: IM3 - IM2 - IM1 - цепочка RootCA (цепочка образована из IM3, IM2, IM1 и RootCA)
Файлы клиентских сертификатов:
- Сертификат: ClientCert - IM3 - IM2 - IM1 - RootCA (ClientCert, подписанный IM3, подписанный IM2, подписанный IM1, подписанный RootCA
- Закрытый ключ: ClientKey
- CA-сертификат: IM1 - цепочка RootCA (цепочка, образованная из IM1 и RootCA)
При попытке установить соединение с этой настройкой, после того как клиент отправил свой Hello, сервер RADIUS начинает отправлять свою цепочку CA-сертификатов вместо ожидаемого сертификата сервера (увидел это с помощью Wireshark). Также выдает ошибку 25.
А теперь вопросы:
Что означает ошибка "SSL говорит об ошибке 25: превышено ограничение длины пути" и имеет ли это отношение к длине цепочек доверия?
Является ли описанная конфигурация допустимой?
Почему сервер отправляет свою цепочку сертификатов CA, а не сертификат сервера?
Есть ли ограничение на количество промежуточных звеньев, используемых в цепочке доверия?
1 ответ
Что означает ошибка "SSL говорит об ошибке 25: превышено ограничение длины пути" и имеет ли это отношение к длине цепочек доверия?
Это относится к расширению pathLenConstraint сертификата. С этим расширением CA может ограничить глубину возможного пути доверия. Например, ЦС может выдать суб-ЦС, но ограничить его, чтобы он не мог выдавать больше дополнительных суб-ЦС, а только листовые сертификаты. См. Также Длина пути основного ограничения сертификатов.
Является ли описанная конфигурация допустимой?
Может быть, а может и нет, в зависимости от того, ограничен ли путь len, чтобы запретить путь доверия такой длины или нет.
Почему сервер отправляет свою цепочку сертификатов CA, а не сертификат сервера?
Сервер должен отправить свой листовой сертификат, а также промежуточные сертификаты, необходимые для построения доверительного пути к доверенному корневому ЦС. Если сервер отправляет только цепочку, а не листовой сертификат, значит что-то не так. Но, может быть, вы не заметили, что сервер отправляет также листовой сертификат (должен быть первым), а не только цепные сертификаты.
Есть ли ограничение на количество промежуточных звеньев, используемых в цепочке доверия?
Если есть одна, заданная с помощью pathLenConstraint, то такой предел есть. Если такого ограничения не дано, то в теории нет предела, но на практике стеки TLS могут запретить безумно большие цепи.