Should a server or a client be able to verify a client/server certificate - intermediate certificate chain with a known root 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 не проверяет правильность такой цепочки сертификатов. Если я не ошибаюсь, 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: не удается найти сертификат эмитента , что означает, что он не может соединить цепочку доверия.

2
задан 7 July 2017 в 18:34
2 ответа
  1. Да, можно использовать цепочки с общим промежуточным ЦС.
  2. Да.
  3. Да, и это так. Вам необходимо опубликовать отладочную информацию FreeRADIUS. Сказать, что он вернет ошибку 20, бесполезно. Скорее всего, это не ошибка FreeRADIUS, а результат OpenSSL.
2
ответ дан 3 December 2019 в 11:28

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

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

0
ответ дан 3 December 2019 в 11:28

Теги

Похожие вопросы