я нашел эта статья MSDN это объясняет, как получить информацию для исполняемых файлов с подписью Authenticode. Он извлекает данные в следующем формате:
Signer Certificate:
Serial Number: 00 90 1a 1a 1b 1c 1c 26 3d 4f 56 61 70 8f 94 7f e0
Issuer Name: COMODO Code Signing CA 2
Subject Name: Signer's Name
Моя цель здесь состоит в том, чтобы убедиться, что EXE-файл подписан конкретным сертификатом подписи, который принадлежит компании. Для этого я, очевидно, могу проверить Subject Name
, но мне любопытно Serial Number
:
Можно Serial Number
использоваться для проверки того, что EXE-файл подписан конкретным сертификатом? Мои тесты показали, что это не изменится, если я подпишу более одного файла.
Этот серийный номер останется прежним при обновлении сертификата?
Сочетание полей IssuerRDN (набор полей, идентифицирующих эмитента) и полей SerialNumber однозначно идентифицирует сертификат в соответствии с RFC 5280.
RFC не определяет, что произойдет, если сертификат будет переиздан, но я бы предположил, что серийный номер изменился. Причина в том, что новый сертификат будет отличаться от предыдущего и поэтому должен быть однозначно идентифицирован.
Следовательно, для вашей задачи лучшим подходом будет
Это гарантирует, что сертификат действителен и авторизован для этой компании, и в то же время этот алгоритм избавляет вас от ошибки проверки ровно одного сертификата (эта ошибка может привести к проблемам, если сертификат по какой-либо причине отозван и заменен на новенький).
Других решений пока нет …