#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 сопоставляет исходный сертификат клиента с хранилищем доверия и не находит промежуточный. Я бы проверил эти вещи:
-
Убедитесь, что вы используете определенный идентификатор версии со ссылкой S3 на хранилище доверия. В противном случае трудно определить, какую версию он на самом деле использует, потому что API gateway не будет автоматически получать новую версию, как только вы добавляете ее в S3. Возможно, вы используете не то хранилище доверия, которое считаете нужным.
-
Ваше хранилище доверия должно включать только сертификаты CA — корневой сертификат и промежуточные сертификаты. Вы сказали, что поместили туда сертификат клиента, так что, возможно, это вызывает проблему. Попробуйте удалить его.
Комментарии:
1. Теперь я также попытался поместить только промежуточные и корневые сертификаты CA (всего два) в хранилище доверия (объединенные как один файл).). Я получаю ту же ошибку. У всех файлов pem хранилища доверия разные имена.
2. Неясно, жалуется ли он на то, что клиент отправляет слишком много сертификатов или слишком много сертификатов в хранилище доверия.
3. Я видел это сообщение только тогда, когда клиент отправляет несколько сертификатов. Я мог бы заставить его исчезнуть или вернуться в моем развертывании, добавив или удалив промежуточный сертификат в хранилище доверия.
4. Клиент может отправить несколько сертификатов, если решит, что это необходимо. В зависимости от того, какой браузер вы используете, вы можете найти некоторую информацию о том, как конкретно он принимает это решение. Серверы отправляют свои корневые CNS ЦС, и клиент должен остановиться, когда он подключается к одному из них… но, возможно, это делает что-то более сложное.
5. Похоже, это происходит с сертификатами, созданными из промежуточного корня. Но только из файлов PFX с использованием . Сетевые или Windows-браузеры. Похоже на ошибку в AWS end.