AWS API Gateway выдает ошибку «Передано более одного сертификата клиента»

#amazon-web-services #ssl #client-certificates #amazon-api-gateway

#amazon-web-services #ssl #клиентские сертификаты #amazon-api-gateway

Вопрос:

Я настроил взаимную аутентификацию TLS для своего API-шлюза. Затем я поместил свой сертификат клиента в хранилище доверия. Файл содержит сертификат клиента, промежуточный и корневой сертификаты (частный центр сертификации).

При доступе к шлюзу API с помощью браузера (Chrome в Windows) браузер запрашивает у меня сертификат клиента. Я выбираю тот же сертификат, который я поместил в хранилище доверия.

API Gateway сообщает в браузере следующее:

{«сообщение»: «Недопустимая цепочка сертификатов клиента. Передано более одного сертификата клиента «}

ОБНОВЛЕНИЕ: я также попытался разместить только промежуточные и корневые сертификаты в хранилище доверия. Та же ошибка.

ОБНОВЛЕНИЕ 2. Та же ошибка также сообщается при доступе к API с помощью кода C # (WebClient), загружающего сертификат из хранилища сертификатов Windows или с диска (pfx-файл).

Ответ №1:

Если ваше хранилище доверия не содержит всех промежуточных сертификатов CA, клиент должен отправить цепочку с несколькими сертификатами. Подтверждение связи TLS будет работать нормально, но где-то есть явная проверка, которая запрещает цепочки с несколькими сертификатами. Код состояния равен 400, а не 403 (!), И вы получаете сообщение об ошибке «Передано более одного сертификата клиента».

Однако, если вы хотите поместить все промежуточные центры сертификации в хранилище доверия API gateway, сервер не должен запрашивать у клиента отправку промежуточных сертификатов. В этом случае клиент должен отправить только один сертификат, и API gateway должен работать.

Итак, что-то идет не так, когда API gateway сопоставляет исходный сертификат клиента с хранилищем доверия и не находит промежуточный. Я бы проверил эти вещи:

  1. Убедитесь, что вы используете определенный идентификатор версии со ссылкой S3 на хранилище доверия. В противном случае трудно определить, какую версию он на самом деле использует, потому что API gateway не будет автоматически получать новую версию, как только вы добавляете ее в S3. Возможно, вы используете не то хранилище доверия, которое считаете нужным.

  2. Ваше хранилище доверия должно включать только сертификаты CA — корневой сертификат и промежуточные сертификаты. Вы сказали, что поместили туда сертификат клиента, так что, возможно, это вызывает проблему. Попробуйте удалить его.

Комментарии:

1. Теперь я также попытался поместить только промежуточные и корневые сертификаты CA (всего два) в хранилище доверия (объединенные как один файл).). Я получаю ту же ошибку. У всех файлов pem хранилища доверия разные имена.

2. Неясно, жалуется ли он на то, что клиент отправляет слишком много сертификатов или слишком много сертификатов в хранилище доверия.

3. Я видел это сообщение только тогда, когда клиент отправляет несколько сертификатов. Я мог бы заставить его исчезнуть или вернуться в моем развертывании, добавив или удалив промежуточный сертификат в хранилище доверия.

4. Клиент может отправить несколько сертификатов, если решит, что это необходимо. В зависимости от того, какой браузер вы используете, вы можете найти некоторую информацию о том, как конкретно он принимает это решение. Серверы отправляют свои корневые CNS ЦС, и клиент должен остановиться, когда он подключается к одному из них… но, возможно, это делает что-то более сложное.

5. Похоже, это происходит с сертификатами, созданными из промежуточного корня. Но только из файлов PFX с использованием . Сетевые или Windows-браузеры. Похоже на ошибку в AWS end.