Я поигрался с nginx и взаимной аутентификацией TLS. Для этого я настроил сервер nginx на фактическое использование аутентификации клиента с параметром конфигурации:
ssl_verify_client on;
Он работает, но у меня есть вопрос относительно процесса завершения.
Если я это сделаю установлен запрос на получение, например, https://localhost и ssl_verify_client on;
, я получаю HTTP-ответ, даже если я не доставляю действительный сертификат клиента:
400 Плохой запрос Требуемый сертификат SSL не был отправлен
Для меня было бы логично, что соединение TLS разрывается при рукопожатии TLS. Почему я получаю HTTP-ответ, если соединение не проходит взаимную аутентификацию?
Я также читал RF C 5246, и в нем в основном говорится, что это можно сделать таким образом (выбор дизайнера):
Стандарт TLS, однако, не определяет, как протоколы добавляют безопасность с помощью TLS; решения о том, как инициировать подтверждение связи TLS и как интерпретировать обмен сертификатами аутентификации, оставлены на усмотрение разработчиков и разработчиков протоколов, работающих поверх TLS.
Есть ли веские аргументы это на уровне приложений, а не на транспортном уровне? Есть ли возможность прервать соединение TLS раньше без использования прокси (например, HAProxy)?