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