Я пытаюсь настроить веб-службу, которая использует клиентские сертификаты x509, отправленные во время рукопожатия TLS, для проверки подлинности, а также для проверки наличия у пользователя разрешения для доступа к запрашиваемому ресурсу.
Идея состоит в том, что каждому пользователю предоставляется уровень доступа, а некоторые ресурсы доступны только для более высоких уровней.Затем сертификат используется для соответствия пользователя его уровню.
У меня не было проблем с настройкой Apache для проверки сертификата по отношению к корневому ЦС и для пересылки сертификата во внутреннее приложение (на основе PythonСервер XML-RPC).
Однако я изо всех сил пытаюсь выбрать, какой атрибут (ы) сертификата я должен использовать для сопоставления пользователя с его уровнем:
- Поле Common Name кажется естественным выбором,но мне интересно, насколько безопасным было бы это решение, поскольку ничто не мешает нескольким ЦС-посредникам предоставлять сертификаты с одним и тем же CN
- . Открытый ключ явно более безопасен, но насколько он практичен?Останется ли он таким же, если клиент должен продлить свой сертификат после истечения срока его действия?Существует также проблема хранения и скорости сравнения гораздо большей строки
- . Весь сертификат или его отпечаток thumprint могут быть альтернативой открытому ключу, но клиент не сможет подключиться, если егосертификат обновлен
В настоящее время я склоняюсь к открытому ключу, но является ли он лучшим выбором в этой ситуации?Или есть лучший вариант?
Спасибо в avance