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