Я пытаюсь протестировать следующую настройку:
Сервер 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, но я должен знать, сработает ли это тоже.
Теперь мои вопросы:
Исходя из моего опыта, FreeRADIUS не проверяет правильность такой цепочки сертификатов. Если я не ошибаюсь, FreeRADIUS использует библиотеку OpenSSL и делает то же самое, что и следующая команда в ситуации, показанной выше:
openssl verify -CAfile rootcert.pem clientcert_intermediatecert_chain.pem
И я почти уверен, что это не сработает. OpenSSL не может проверить такую цепочку с помощью корневого сертификата. Он терпит неудачу при попытке построить цепочку доверия.
Это верно?
Кстати, FreeRADIUS возвращает ту же ошибку, что и команда verify: error 20 at 0 depth: cannot find issuer certificate
что означает, что он не может соединить цепочку доверия.
Похоже, проблема моей настройки заключалась в том, что клиент отправлял не полную цепочку клиент-промежуточный, а только сертификат клиента (выяснил это с помощью Wireshark). С другой стороны, радиус-сервер, отправляющий цепочку сервер-промежуточный, работает нормально.
Итак, чтобы ответить на мой вопрос: Да, эта установка должна работать в обоих направлениях.