Вы выдаете сертификаты (и есть возможность установить некоторые поля сертификата)? Нужно ли интегрировать эти сертификаты в более масштабную среду PKI, такую как подпись по электронной почте (я имею в виду кошмар взаимодействия X.509)?
Если вы можете создать центр сертификации для пользователей, и вам не нужно заботиться о сторонних системах, вы можете назначить каждому сертификату клиента общий атрибут имени, который сопоставляется непосредственно с вашей учетной записью пользователя. Таким образом, вы можете проверить, подписан ли сертификат клиента центром сертификации пользователя, а затем сопоставить атрибут CN сертификата.
Если число подписывающих сертификатов ограничено и хорошо известно, я рекомендую хранить эти сертификаты, проверять клиентские сертификаты и принимать их только в том случае, если они подписаны одним из сертификатов подписи. Затем вы используете поле сертификата, которое выдающий ЦС устанавливает уникально для каждого пользователя (которое остается равным при обновлении сертификата пользователя, многие кооперации позволяют сертификатам пользователя истекать примерно через год), чтобы связать это поле с вашей базой данных пользователей.
Если вы не можете выдать сертификаты, вы можете сохранить хэш сертификата в базе данных, но это имеет недостаток, заключающийся в том, что, когда сертификат истекает, вам необходимо обновить базу данных. Хеш уникален для каждого сертификата, в то время как большинство полей сертификата могут быть подделаны.
Вы также можете проверить списки отзыва сертификатов для подписывающих центров сертификации, чтобы ни один пользователь не мог получить доступ к вашей службе с украденным сертификатом.