3

У меня есть этот исполняемый файл, написанный на vb.Net и скомпилированный для исполняемого файла Windows для .NET Framework 2.0. Поскольку мы используем программное обеспечение белый список, чтобы предотвратить неизвестное программное обеспечение на наших клиентов Windows, этот исполняемый strongnamed и подписываются с использованием Visual Studio 2008 Professional workflow:Почему подпись в моем исполняемом файле все еще действительна?

<SignFile 
    CertificateThumbprint="1f 6c ... 33 b2" 
    SigningTarget="$(TargetPath)" 
    TimestampUrl="http://timestamp.verisign.com/scripts/timstamp.dll" 
    ContinueOnError="false" 
/> 

Для этого мы проводим корпоративный ROOTCA, промежуточный ЦС для каждого корпоративного отделения и ниже каждого из них выдающий ЦС. «Мой» выдающий CA предоставил мне кодовое удостоверение, срок действия которого истек пару месяцев назад.

Поскольку в моем рабочем процессе я использовал Trusted Timestamp (Authenticode), подпись была/по-прежнему действительна при проверке ее свойств файла, пользователи все равно могут ее выполнить, не запуская Windows AppBlocker. Все хорошо.

Теперь, мне сказали, что мой сертификат отменен, и я могу проверить его, посмотрев на crl. По мнению руководства CA, он должен был быть недействительным в течение месяца, но подпись все еще действительна.

Serial Number: 16C40CA0000000002A60 
Revocation Date: Aug 10 06:18:00 2015 GMT 
CRL entry extensions: 
X509v3 CRL Reason Code: 
Cessation Of Operation 

Я считаю, что причина, данная в crl, вызывает это. Согласно RFC 3161, § 4 пуля 1:

Когда TSA не будет больше использоваться, но закрытый ключ TSA не имеет скомпрометирован, сертификат органа должен быть отменен. В случае, когда расширение reasonCode относительно отозванного сертификата от TSA присутствует в расширениях входа CRL, оно ДОЛЖНО быть установлено либо неуказанным (0), присоединением (3), замененным (4), либо прекращением действия (5). В этом случае в любом будущем токены , подписанные с соответствующим ключом, будут считаться недействительными, но токены, сгенерированные до истечения времени отзыва, останутся действительными. Когда расширение reasonCode относительно отозванного сертификата из TSA отсутствует в расширениях CRL, , тогда все токены, которые были подписаны с соответствующим ключом , будут считаться недействительными. По этой причине рекомендуется использовать расширение reasonCode для .

Так что мой вопрос/проблема состоит из:

  1. ли RFC 3161 также применяется к CodeSigning или ВСТ сертификаты только?
  2. Если да, то подписи все еще действительны, если они сделаны до отзыва с основанием 5 CessationOfOperation?
  3. Если да, сертификаты can/should могут быть отозваны повторно по другой причине, если обнаружены скомпрометированные после истечения срока его действия? Там могут быть сотни достоверных подписей!
+0

Чтобы немного устранить эту проблему, у наших клиентов может возникнуть проблема с получением crl. В данный момент это проверено, это может быть вовсе не проблема с сертификатом. –

ответ

2
  1. Нет, указанный RFC описывает протокол временной метки и временные метки. Это не имеет никакого отношения к сертификатам кодов.
  2. Да, подписи, сделанные до момента отзыва, считаются действительными
  3. Сертификат не может быть отозван несколько раз. Если он отменен, он отменяется.

Теперь, я сказал мой сертификат аннулирован которым можно проверить, посмотрев на CRL

Я предполагаю, что ваш сертификат является CodeSign. Причина, по которой ваше приложение все еще работает, заключается в том, что при подписании вашего приложения использовалась метка времени. Временная метка гарантирует, что ваша подпись была сделана в указанное время. И в это время ваш сертификат был действительным.

0

Последний раз, когда я просмотрел его, я помню его следующим образом: Когда запускается исполняемый файл, никакие сетевые подключения не могут быть предприняты, чтобы проверить, действительно ли сертификаты, используемые для подписания, действительны. Кроме того, для того, чтобы подпись была действительной, сертификат должен был быть действительным во время подписания - цитируемый RFC согласен с этим. Невозможно отменить такие сигнатуры ретроактивно, кроме как удалить корневой ЦС из списка действительных корневых сертификатов ЦС. Если вы просто удалите или отмените цепочку, цепочка, входящая в исполняемый файл, по-прежнему будет привязана к корню и, таким образом, проверяет.

Смежные вопросы