Сертификаты клиента TLS: какой атрибут для авторизации? - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь настроить веб-службу, которая использует клиентские сертификаты x509, отправленные во время рукопожатия TLS, для проверки подлинности, а также для проверки наличия у пользователя разрешения для доступа к запрашиваемому ресурсу.

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

У меня не было проблем с настройкой Apache для проверки сертификата по отношению к корневому ЦС и для пересылки сертификата во внутреннее приложение (на основе PythonСервер XML-RPC).

Однако я изо всех сил пытаюсь выбрать, какой атрибут (ы) сертификата я должен использовать для сопоставления пользователя с его уровнем:

  • Поле Common Name кажется естественным выбором,но мне интересно, насколько безопасным было бы это решение, поскольку ничто не мешает нескольким ЦС-посредникам предоставлять сертификаты с одним и тем же CN
  • . Открытый ключ явно более безопасен, но насколько он практичен?Останется ли он таким же, если клиент должен продлить свой сертификат после истечения срока его действия?Существует также проблема хранения и скорости сравнения гораздо большей строки
  • . Весь сертификат или его отпечаток thumprint могут быть альтернативой открытому ключу, но клиент не сможет подключиться, если егосертификат обновлен

В настоящее время я склоняюсь к открытому ключу, но является ли он лучшим выбором в этой ситуации?Или есть лучший вариант?

Спасибо в avance

1 Ответ

0 голосов
/ 03 марта 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...