Непонятки с цепочкой сертификатов
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.11.19 19:33
Оценка:
Есть у меня EV-сертификат для подписи кода от GlobalSign. Еще месяц назад я им подписывал модули драйверов, и они работали везде, от Win7 до Win10. А несколько дней назад свежеобновленная десятка 1903 вдруг стала ругаться на недоверенность. Открыл свойства подписанного файла, и увидел такое:



Срок действия сертификата, помеченного, как недействительный, истек 18.03.19, серийный номер- 04000000000125071df9af.

Но в Win7-Win8.1, и даже в десятке 1809, подпись этого файла выглядит так:



Истекший сертификат установлен только в рабочей системе, где я подписываю код, в других системах его нет, но свойства подписи во всех Win7-Win8.1 выглядят одинаково (три сертификата в цепочке).

signtool в режиме verify выдает:
  signtool — verify

Signing Certificate Chain:
Issued to: GlobalSign
Issued by: GlobalSign
Expires: Sun Mar 18 11:00:00 2029
SHA1 hash: D69B561148F01C77C54578C10926DF5B856976AD

Issued to: GlobalSign Extended Validation CodeSigning CA — SHA256 — G3
Issued by: GlobalSign
Expires: Sat Jun 15 01:00:00 2024
SHA1 hash: 87A63D9ADB627D777836153C680A3DFCF27DE90C

Issued to: Muzychenko Evgenii Viktorovich, IP
Issued by: GlobalSign Extended Validation CodeSigning CA — SHA256 — G3
Expires: Tue Aug 18 12:57:24 2020
SHA1 hash: D25CEAE07AE5BA4193D69126003095E85A33BBE1


с ошибкой "A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider".

А при подписывании выдает такую цепочку:
  signtool — sign

Cross certificate chain (using machine store):
Issued to: Microsoft Code Verification Root
Issued by: Microsoft Code Verification Root
Expires: Sat Nov 01 14:54:03 2025
SHA1 hash: 8FBE4D070EF8AB1BCCAF2A9D5CCAE7282A2C66B3

Issued to: GlobalSign Root CA
Issued by: Microsoft Code Verification Root
Expires: Thu Apr 15 21:05:08 2021
SHA1 hash: CC1DEEBF6D55C2C9061BA16F10A0BFA6979A4A32

Issued to: GlobalSign
Issued by: GlobalSign Root CA
Expires: Mon Mar 18 11:00:00 2019
SHA1 hash: 4765557AF418C68A641199146A7E556AA8242996

Issued to: GlobalSign Extended Validation CodeSigning CA — SHA256 — G3
Issued by: GlobalSign
Expires: Sat Jun 15 01:00:00 2024
SHA1 hash: 87A63D9ADB627D777836153C680A3DFCF27DE90C

Issued to: Muzychenko Evgenii Viktorovich, IP
Issued by: GlobalSign Extended Validation CodeSigning CA — SHA256 — G3
Expires: Tue Aug 18 12:57:24 2020
SHA1 hash: D25CEAE07AE5BA4193D69126003095E85A33BBE1


Как всю эту кашу можно понять? Я так понимаю, что все системы должны одинаково относиться к одному и тому же сертификату. Почему Win10 после обновления вдруг стала отображать его в цепочке, чего не делают остальные системы, но не делала этого ни летом, ни в начале осени, когда срок действия уже давно истек?

Если удалить истекший сертификат из хранилища рабочей системы, то signtool перестает подписывать с ошибкой "The provided cross certificate would not be present in the certificate chain" (почему именно его там не будет? информативность, как обычно, на высоте).

У GlobalSign ничего по этому сертификату найти не удалось. Все их корневые сертификаты, которые они выложили для подписи кода, у меня стоят. Написал им вчера с вопросом, пока не ответили, а разобраться надо бы побыстрее.

В общем, кто здесь дурак: я, GlobalSign или Microsoft?
сертификат подпись globalsign microsoft signtool path
Re: Непонятки с цепочкой сертификатов
От: kov_serg Россия  
Дата: 07.11.19 07:27
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Как всю эту кашу можно понять? Я так понимаю, что все системы должны одинаково относиться к одному и тому же сертификату. Почему Win10 после обновления вдруг стала отображать его в цепочке, чего не делают остальные системы, но не делала этого ни летом, ни в начале осени, когда срок действия уже давно истек?

Скорее всего микрософт просто исправила очередной баг. И теперь винда наконец-то проверяет цепочку сертификатов

ЕМ>Если удалить истекший сертификат из хранилища рабочей системы, то signtool перестает подписывать с ошибкой "The provided cross certificate would not be present in the certificate chain" (почему именно его там не будет? информативность, как обычно, на высоте).

Попробывать подписать в прошлом, переведя дату (как это принято у драйверов)

ЕМ>У GlobalSign ничего по этому сертификату найти не удалось. Все их корневые сертификаты, которые они выложили для подписи кода, у меня стоят. Написал им вчера с вопросом, пока не ответили, а разобраться надо бы побыстрее.

Покупай новый сертификат.
Re[2]: Непонятки с цепочкой сертификатов
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 07.11.19 10:36
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Скорее всего микрософт просто исправила очередной баг. И теперь винда наконец-то проверяет цепочку сертификатов


Типа, все это время можно было подписывать левыми сертификатами?

_>Попробывать подписать в прошлом, переведя дату (как это принято у драйверов)


Проблему с отказом в подписывании я уже победил, поставив кросс-сертификат для R3 вместо R1. Но сделал это наугад, ибо нигде не увидел объяснений, что такое "G3", "R1", "R5" и т.п. Утомляет, честно говоря, все это шаманство без объяснений — эта кухня вообще где-то описана внятно?

_>Покупай новый сертификат.


Э-э-э... Зачем?
Re: Непонятки с цепочкой сертификатов
От: Somescout  
Дата: 10.11.19 06:00
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

Такой вариант пробовали: https://stackoverflow.com/questions/6575424/how-to-include-entire-certification-path-when-signing-code-with-signtool (первый ответ)?
ARI ARI ARI... Arrivederci!
Re[2]: Непонятки с цепочкой сертификатов
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.11.19 08:33
Оценка:
Здравствуйте, Somescout, Вы писали:

S>Такой вариант пробовали: https://stackoverflow.com/questions/6575424/how-to-include-entire-certification-path-when-signing-code-with-signtool (первый ответ)?


А я только версией из WDK 7 и пользуюсь — все последующие упорно падают чуть не на половине известных timestamp-серверов.

Собственно, основной вопрос в том, как управлять включением сертификатов в цепочку. Получается, что signtool включает только те, что сумела найти, и единственный способ контроля — это ставить /v и при каждом подписывании просматривать выводимый список. Ну, или перехватывать вывод, парсить его и сранивать с заданным списком, чтобы хоть не пропустить момент, когда там что-то меняется.
Re[3]: Непонятки с цепочкой сертификатов
От: Somescout  
Дата: 10.11.19 09:45
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>А я только версией из WDK 7 и пользуюсь — все последующие упорно падают чуть не на половине известных timestamp-серверов.


Не пробовали явно указывать SHA256?
/tr http://timestamp.comodoca.com/?td=sha256 /td sha256


ЕМ>Собственно, основной вопрос в том, как управлять включением сертификатов в цепочку. Получается, что signtool включает только те, что сумела найти, и единственный способ контроля — это ставить /v и при каждом подписывании просматривать выводимый список. Ну, или перехватывать вывод, парсить его и сранивать с заданным списком, чтобы хоть не пропустить момент, когда там что-то меняется.


Я не пользовался активно signtool (только изредка), но вот ситуация когда необходимо встраивать всю цепочку сертификации в SASL с тем же nginx случается постоянно. Вы пробовали явно включать эту цепочку через
/ac "Thawte Code Signing CA - G2.cer"

? (Я не в курсе отличий версий signtool, если вы имели в виду, например, что в WDK7 нет такого ключа)
ARI ARI ARI... Arrivederci!
Re[4]: Непонятки с цепочкой сертификатов
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.11.19 12:35
Оценка:
Здравствуйте, Somescout, Вы писали:

S>Не пробовали явно указывать SHA256?

S>
/tr http://timestamp.comodoca.com/?td=sha256 /td sha256


У меня сертификаты от GlobalSign и DigiCert — там вроде нет таких опций для timestamp URL. А /td у меня всегда sha256.

S>Вы пробовали явно включать эту цепочку через

S>
/ac "Thawte Code Signing CA - G2.cer"


В /ac у меня всегда задается кросс-сертификат Authenticode от MS. Проблема в том, что это не гарантирует валидности всей цепочки на момент подписания — по крайней мере, у signtool из WDK 7. Я потому и пытался использовать более новые, но от них пришлось отказаться, ибо падают.
Re[5]: Непонятки с цепочкой сертификатов
От: Somescout  
Дата: 10.11.19 13:29
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

S>>Вы пробовали явно включать эту цепочку через

S>>
/ac "Thawte Code Signing CA - G2.cer"


ЕМ>В /ac у меня всегда задается кросс-сертификат Authenticode от MS. Проблема в том, что это не гарантирует валидности всей цепочки на момент подписания — по крайней мере, у signtool из WDK 7. Я потому и пытался использовать более новые, но от них пришлось отказаться, ибо падают.


А сливать промежуточный и кросс-сертификаты не пробовали? Я вижу что signtool не принимает несколько ключей /ac, но возможно он съест несколько сертификатов в одном файле?
ARI ARI ARI... Arrivederci!
Re[6]: Непонятки с цепочкой сертификатов
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 14.11.19 19:00
Оценка:
Здравствуйте, Somescout, Вы писали:

S>А сливать промежуточный и кросс-сертификаты не пробовали?


Пока не пробовал. Я пока пытаюсь понять, чем можно подобно посмотреть структуру подписи. И вкладка Digital Signatures в Explorer, и signtool verify /v, показывают в подписи только сертификаты, выпущенные GlobalSign, и ни слова о Microsoft, однако в "сырых" данных подписи есть "Microsoft Code Verification Root".

Интересно, у них еще остались люди, которые понимают, как все это устроено на низком уровне, или кто-то умный еще 15-20 лет назад написал весь код, потом ушел, или вовсе помер, и оно так и живет с тех времен? То-то глюк с падением при подписывании с меткой времени в signtool уже десять лет не исправляют.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.