Я разрабатываю систему, в которой пользователи смогут регистрироваться и после этого аутентифицироваться с помощью сертификатов клиентов в дополнение к аутентификации имени пользователя и пароля.
Сертификаты клиентов должны быть действительными сертификатами, выпущенными настроенным списком органов сертификации, и будут проверяться (проверены) при их представлении.
На этапе регистрации мне нужно сохранить часть (-ы) сертификата клиента в репозитории пользователя (DB, LDAP, что угодно), чтобы я мог сопоставить пользователя, который аутентифицируется с сертификатом клиента внутреннему "пользователю".
Один довольно очевидный выбор - использовать отпечаток сертификата; Но самого отпечатка пальца недостаточно, так как могут возникнуть столкновения (хотя они и не являются вероятными), поэтому нам нужно сохранить дополнительную информацию из сертификата. Этот вопрос SO также является информативным в этом отношении.
RFC 2459 определяет (4.1.2.2), что серийный номер сертификата должен быть уникальным в пределах данного ЦС.
Со всем этим в совокупности я собираюсь хранить серийный номер сертификата и сертификат для каждого зарегистрированного пользователя. Учитывая, что сертификаты клиентов будут проверены и действительны, это должно однозначно идентифицировать каждый сертификат клиента. Таким образом, даже если сертификат клиента будет обновлен, он все равно будет действительным (серийный номер останется таким же, как и эмитент).
Я что-то пропустил?