Как сделать сертификаты уникальной идентификации

Как сделать сертификаты уникальной идентификации

У нас есть служба, получающая множество подписанных XML-документов, некоторые из которых подписаны самоподписанным сертификатом, а некоторые подписаны доверенным центром сертификации.

Как лучше всего убедиться, что сертификат, используемый для подписи XML-документа, находится в списке сертификатов, которым мы доверяем?

Сегодня мы сопоставляем отпечатки сертификатов со списком принятых отпечатков сертификатов.

Можем ли мы доверять уникальности отпечатка большого пальца — или его можно подделать?

Каков наилучший способ решения этой проблемы? (мы не можем заставить всех, кто отправляет подписанные XML-документы, использовать сертификаты от доверенного центра сертификации)

решение1

Если вы используетестандартная XML-подписьсинтаксис, то необязательный KeyInfo может содержать фактический сертификат для использования.

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

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

Но если вы проверяете документс сертификатом, который прилагается к самому документуи затем проверив, что отпечаток сертификата соответствует одному из доверенных сертификатов, выДелать неправильно: по сути, вы используете отпечатки доверенных сертификатов в качестве паролей.

Связанный контент