Назад | Перейти на главную страницу

Должен ли сервер или клиент иметь возможность проверить сертификат клиент / сервер - промежуточная цепочка сертификатов с известным корневым CA?

Я пытаюсь протестировать следующую настройку:

Сервер RADIUS работает с протоколом EAP-TLS. У клиента и сервера есть следующие сертификаты:

Клиент
Открытый ключ: clientcert_intermediatecert_chain.pem
CA-сертификат: rootcert.pem

Сервер
Открытый ключ: servercert_intermediatecert_chain.pem
CA-сертификат: rootcert.pem

Оба, сертификат клиента (clientcert.pem) и сертификат сервера (servercert.pem) подписаны тем же промежуточным сертификатом (intermediatecert.pem), который подписан корневым сертификатом (rootcert.pem).
Обе цепочки, которые установлены как открытые ключи, собираются вместе следующим образом (с помощью команды Shell):
cat servercert.pem intermediatecert.pem > servercert_intermediatecert_chain.pem
cat clientcert.pem intermediatecert.pem > clientcert_intermediatecert_chain.pem

Теперь клиент пытается подключиться к серверу. Обе стороны отправляют свои открытые ключи и пытаются проверить полученные открытые ключи с помощью rootcert.pem

Я знаю, что "нормальным" способом было бы, чтобы открытый ключ был только сертификатом сервера или клиента. И CA-сертификат будет imcert-rootcert-chain, но я должен знать, сработает ли это тоже.

Теперь мои вопросы:

  1. Законно ли, что открытый ключ представляет собой цепочку, состоящую из сертификата сервера / клиента и промежуточного сертификата?
  2. И если да, то относится ли это к обеим сторонам (серверу и клиенту)?
  3. Должен ли сервер (например, FreeRADIUS) или клиент иметь возможность проверять подобные цепочки с помощью корневого сертификата, если они получают их от встречной части?

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

openssl verify -CAfile rootcert.pem clientcert_intermediatecert_chain.pem

И я почти уверен, что это не сработает. OpenSSL не может проверить такую ​​цепочку с помощью корневого сертификата. Он терпит неудачу при попытке построить цепочку доверия.
Это верно?

Кстати, FreeRADIUS возвращает ту же ошибку, что и команда verify: error 20 at 0 depth: cannot find issuer certificate что означает, что он не может соединить цепочку доверия.

  1. Да, можно использовать цепочки с общим промежуточным ЦС.
  2. Да.
  3. Да, и это так. Вам необходимо опубликовать отладочные данные FreeRADIUS. Сказать, что он вернет ошибку 20, бесполезно. Скорее всего, это не ошибка FreeRADIUS, а результат OpenSSL.

Похоже, проблема моей настройки заключалась в том, что клиент отправлял не полную цепочку клиент-промежуточный, а только сертификат клиента (выяснил это с помощью Wireshark). С другой стороны, радиус-сервер, отправляющий цепочку сервер-промежуточный, работает нормально.

Итак, чтобы ответить на мой вопрос: Да, эта установка должна работать в обоих направлениях.