Имеется виртуалка Windows Server 2008 x64, без обновлений (обновить нельзя, таков тестовый сценарий).
Имеется самособранный драйвер (в данном случае — для виртуальной сетевой карты, но с другими драйверами то же самое). Он подписан платным сертификатом с кросс-сертификатом (и сертификат, и подпись — SHA-1), на это дело сгенерирован и так же подписан каталог-файл. Корневой сертификат VeriSign в системе изначально отсутствовал, но был доустановлен в корневое хранилище, и теперь цифровая подпись считается корректной. Тем не менее, при установке выводится страшное красное окно о неподписанности (скрин). Чем оно может быть вызвано и как от него избавиться?
Подробности:
1. Самое главное: если в этом окошке согласиться на установку, драйвер корректно ставится и работает (восклицательного знака в диспетчере устройств нет, сеть появляется и коннектится). То есть с точки зрения ядра подпись-таки валидна, но именно установщику драйвера чем-то она не нравится.
2. Все проверки, которые я смог придумать, также выдают, что с подписью всё в ажуре. А именно:
а) signtool verify /kp, запущенный на самой этой машине (иксами забил название компании):
"Вывод"
Verifying: a:\Drivers\NetKVM\2k8\amd64\netkvm.sys
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 47DA6FC61E9D2381097E0EC80678A181AC151655
Signing Certificate Chain:
Issued to: VeriSign Class 3 Public Primary Certification Authority - G5
Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
Expires: Thu Jul 17 02:59:59 2036
SHA1 hash: 4EB6D578499B1CCF5F581EAD56BE3D9B6744A5E5
Issued to: VeriSign Class 3 Code Signing 2010 CA
Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
Expires: Sat Feb 08 02:59:59 2020
SHA1 hash: 495847A93187CFB8C71F840CB7B41497AD95C64F
Issued to: XXXXXXXXXXXXXXX
Issued by: VeriSign Class 3 Code Signing 2010 CA
Expires: Sun Dec 03 02:59:59 2017
SHA1 hash: ADBC6D8FC1BC2729A995C1A0B3B27494718ADA4D
The signature is timestamped: Wed Jan 25 16:20:08 2017
Timestamp Verified by:
Issued to: DigiCert Assured ID Root CA
Issued by: DigiCert Assured ID Root CA
Expires: Mon Nov 10 03:00:00 2031
SHA1 hash: 0563B8630D62D75ABBC8AB1E4BDFB5A899B24D43
Issued to: DigiCert Assured ID CA-1
Issued by: DigiCert Assured ID Root CA
Expires: Wed Nov 10 03:00:00 2021
SHA1 hash: 19A09B5A36F4DD99727DF783C17A51231A56C117
Issued to: DigiCert Timestamp Responder
Issued by: DigiCert Assured ID CA-1
Expires: Tue Oct 22 03:00:00 2024
SHA1 hash: 614D271D9102E30169822487FDE5DE00A352B01D
Cross Certificate Chain:
Issued to: Microsoft Code Verification Root
Issued by: Microsoft Code Verification Root
Expires: Sat Nov 01 16:54:03 2025
SHA1 hash: 8FBE4D070EF8AB1BCCAF2A9D5CCAE7282A2C66B3
Issued to: VeriSign Class 3 Public Primary Certification Authority - G5
Issued by: Microsoft Code Verification Root
Expires: Mon Feb 22 22:35:17 2021
SHA1 hash: 57534CCC33914C41F70E2CBB2103A1DB18817D8B
Issued to: VeriSign Class 3 Code Signing 2010 CA
Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
Expires: Sat Feb 08 02:59:59 2020
SHA1 hash: 495847A93187CFB8C71F840CB7B41497AD95C64F
Issued to: XXXXXXXXXXXXXXX
Issued by: VeriSign Class 3 Code Signing 2010 CA
Expires: Sun Dec 03 02:59:59 2017
SHA1 hash: ADBC6D8FC1BC2729A995C1A0B3B27494718ADA4D
Successfully verified: a:\Drivers\NetKVM\2k8\amd64\netkvm.sys
Number of files successfully Verified: 1
Number of warnings: 0
Number of errors: 0
б) Аналогичный результат получаю при проверке файла-каталога, а также при проверке драйвера или INF-файла с отсылкой на каталог через /c.
в) В свойствах файла сертификат также отображается как валидный и актуальный (скрин).
г) Непосредственно перед началом установки драйвера в диалоге сообщается, что This driver has an Authenticode(tm) signature (скрин).
3. Дата/время на машине выставлены корректно, сертификат ещё не истёк, и в любом случае на драйвере и каталоге висят таймштамповые подписи (опять же, SHA-1, сделанные параметром /t, потому что RFC-3161 2008-я винда не понимает).
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re: Ругань при установке валидно подписанного драйвера
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Это ж классика — отсутствием подписи WHQL.
При отсутствии WHQL обычно выдаётся совсем другое окно, где указан производитель (точнее, владелец подписи) и предупреждается лишь, что драйвер не тестировался. У меня же вопит, что подписи нет вообще никакой. Я специально скрин приложил.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>А под другими версиями винды этот драйвер себя ведет?
Пока что воплей от тестировщиков на аналогичное поведение в других системах не поступало.
Попробовал на свежеустановленной 2008R2 без сервис-паков и апдейтов, там вывелось обычное окошко, ожидаемое в таких ситуациях: мол, ставится драйвер с таким-то названием, от такого-то производителя, Install, Don't install, галочка "Always trust software from…".
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re: Ругань при установке валидно подписанного драйвера
Здравствуйте, CaptainFlint, Вы писали:
CF>Имеется виртуалка Windows Server 2008 x64, без обновлений (обновить нельзя, таков тестовый сценарий). CF>Имеется самособранный драйвер (в данном случае — для виртуальной сетевой карты, но с другими драйверами то же самое). Он подписан платным сертификатом с кросс-сертификатом (и сертификат, и подпись — SHA-1), на это дело сгенерирован и так же подписан каталог-файл. Корневой сертификат VeriSign в системе изначально отсутствовал, но был доустановлен в корневое хранилище, и теперь цифровая подпись считается корректной. Тем не менее, при установке выводится страшное красное окно о неподписанности (скрин). Чем оно может быть вызвано и как от него избавиться?
Погляди лог в windows\inf\setupapi.dev.log
Возможно код ошибки в этом логе подскажет направление движения дальше.
Re: Ругань при установке валидно подписанного драйвера
Здравствуйте, CaptainFlint, Вы писали:
CF> при установке выводится страшное красное окно о неподписанности. CF> Чем оно может быть вызвано и как от него избавиться?
Попробуй подписать пакет драйвера без использования timestamp-сервера. Что-нибудь изменится?
Возможно, на компьютере не хватает чего-то из цепочки сертификатов, которые используются в отметке времени.
Re[2]: Ругань при установке валидно подписанного драйвера
Здравствуйте, _f_b_i_, Вы писали:
___>Погляди лог в windows\inf\setupapi.dev.log ___>Возможно код ошибки в этом логе подскажет направление движения дальше.
Спасибо, но, к сожалению, ничего нового там не обнаружилось.
Error 0x800b0109: A certificate chain processed but terminated in a root certificate which is not trusted by the trust provider.
<…>
Error 0x800b010a: A certificate chain could not be built to a trusted root authority.
Подробностей о том, как он строил цепочку и докуда её довёл, увы, не приводится.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[2]: Ругань при установке валидно подписанного драйвера
Здравствуйте, okman, Вы писали:
O>Попробуй подписать пакет драйвера без использования timestamp-сервера. Что-нибудь изменится? O>Возможно, на компьютере не хватает чего-то из цепочки сертификатов, которые используются в отметке времени.
Дело в том, что проблему как раз поймали на драйверах, которые изначально были подписаны timstamp-ом по протоколу RFC-3161, и 2008-м сервером эта подпись не распознавалась. То есть в свойствах файла (и в signtool verify) тупо говорилось, что timestamp отсутствует. Я подумал, что в этом проблема и переподписал с параметром /t вместо /tr, таймштамп стал виден, но на результаты это не повлияло.
Ну и, кроме того, я тыкал /t-шную таймштамповую подпись в свойствах файла, там тоже говорится, что всё валидно до корня (да и в логе signtool verify видно, что валидная цепочка).
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re: Ругань при установке валидно подписанного драйвера
Здравствуйте, Andrew.W Worobow, Вы писали:
CF>>Имеется виртуалка Windows Server 2008 x64, без обновлений (обновить нельзя, таков тестовый сценарий).
AWW>Ой давно это было. Но что-то всплывает про "усиление проверки" — искать очень лень, ибо учусь на учебе )
AWW>Вот поэтому, такой вопрос — а что на Windows Server 2012 и 2016 происходит? Именно на серверах.
Если это усиление проверки, то очень странное. Логично было бы ожидать, что если драйвер почему-то считается неподписанным, то и работать не будет, даже если его принудительно установить (как это происходит с неподписанными или самоподписанными драйверами). Однако установленный драйвер в моём случае великолепно загружается и работает.
В 2012 и 2016 пока специально не проверял, но проверил в 2008 R2, отписывал выше
. Вкратце — устанавливается без проблем. Опять же, вряд ли в 2008 ввели "усиление проверки", а уже в следующей же версии отменили его. Хотя, конечно, всякое бывает…
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[3]: Ругань при установке валидно подписанного драйвера
Здравствуйте, CaptainFlint, Вы писали:
AWW>>Вот поэтому, такой вопрос — а что на Windows Server 2012 и 2016 происходит? Именно на серверах.
CF>Если это усиление проверки, то очень странное. Логично было бы ожидать, что если драйвер почему-то считается неподписанным, то и работать не будет, даже если его принудительно установить (как это происходит с неподписанными или самоподписанными драйверами). Однако установленный драйвер в моём случае великолепно загружается и работает.
CF>В 2012 и 2016 пока специально не проверял, но проверил в 2008 R2, отписывал выше
. Вкратце — устанавливается без проблем. Опять же, вряд ли в 2008 ввели "усиление проверки", а уже в следующей же версии отменили его. Хотя, конечно, всякое бывает…
Это усиление проверки сделанное "раком". Если все как вы описали, то похоже ясно в чем дело — дело в "раках".
То есть вам надо установить уже не помню какое там KBxxxxx обновление (которое содержит какой-то там серт), и все поедет. Хотя могу ошибаться. А в R2 это обновление уже включено, поэтому и все ОК. Поищите это известная проблема.
Повспоминал, и понял, что скорее всего вы не найдете прямой ответ так как очень давно это было. Я бы на вашем месте разрешил бы апдейт и посмотрел какой именно нужен для того чтобы не MC-овский рут серт при кросе прокатывал.
Не все кто уехал, предал Россию.
Re: Ругань при установке валидно подписанного драйвера
Здравствуйте, CaptainFlint, Вы писали:
CF>Корневой сертификат VeriSign в системе изначально отсутствовал, но был доустановлен в корневое хранилище, и теперь цифровая подпись считается корректной.
В какое конкретно? Я бы попытался помимо root trusted ca добавить и в intermediate CA или как оно там и в trusted publishers
Re[2]: Ругань при установке валидно подписанного драйвера
Здравствуйте, sr_dev, Вы писали:
CF>>Корневой сертификат VeriSign в системе изначально отсутствовал, но был доустановлен в корневое хранилище, и теперь цифровая подпись считается корректной.
_>В какое конкретно? Я бы попытался помимо root trusted ca добавить и в intermediate CA или как оно там и в trusted publishers
Добавлял в Trusted Root CA. Сейчас воткнул ещё в эти два, окошко по-прежнему выводится.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[4]: Ругань при установке валидно подписанного драйвера
Здравствуйте, Andrew.W Worobow, Вы писали:
AWW>Повспоминал, и понял, что скорее всего вы не найдете прямой ответ так как очень давно это было. Я бы на вашем месте разрешил бы апдейт и посмотрел какой именно нужен для того чтобы не MC-овский рут серт при кросе прокатывал.
Ага, я уже нагуглился по уши, ничего нужного не обнаружил, и тоже решил пойти по пути установки апдейтов, только не обновлением, а ручной установкой MSU, скачанных с Download-центра. Увы, даже после установки всех найденных пакетов проблема осталась на месте. Можно, конечно, включить обновления и прокачать её по самое не могу, но даже если починится, будет сложно вычленить, что именно починило проблему. Апдейтов на 2008 сейчас дофига…
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[4]: Ругань при установке валидно подписанного драйвера
Что-то совсем не катят лыжи. Обновил эту 2008-ю полностью через WU — пофигу, всё равно говорит, что драйвер не подписан. Поставил отдельно в виртуалку 2008 с интегрированным SP2 — там то же самое.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[5]: Ругань при установке валидно подписанного драйвера
Здравствуйте, CaptainFlint, Вы писали:
CF>Что-то совсем не катят лыжи. Обновил эту 2008-ю полностью через WU — пофигу, всё равно говорит, что драйвер не подписан. Поставил отдельно в виртуалку 2008 с интегрированным SP2 — там то же самое.
Скорее всего причина в том, что обновление корневых сертификатов не есть "важное и обязательное". Попробуйте экспортировать корневые сертификаты из R2 и впихнуть их в ваш 2008-ой. Может в этом причина. Попробуйте найти обновления корневых сертификатов для 2008-ого.
Но удивительно то что драйвер в итоге то работает! А что говорит "signtool verify"?
Не все кто уехал, предал Россию.
Re[6]: Ругань при установке валидно подписанного драйвера
Здравствуйте, Andrew.W Worobow, Вы писали:
CF>>Что-то совсем не катят лыжи. Обновил эту 2008-ю полностью через WU — пофигу, всё равно говорит, что драйвер не подписан. Поставил отдельно в виртуалку 2008 с интегрированным SP2 — там то же самое.
AWW>Скорее всего причина в том, что обновление корневых сертификатов не есть "важное и обязательное".
Я опциональные тоже все поставил. И, кстати, обновления сертификатов, которые я ставил до этого, все входили в группу Critical Updates (качал отсюдова).
AWW>Попробуйте экспортировать корневые сертификаты из R2 и впихнуть их в ваш 2008-ой. Может в этом причина. Попробуйте найти обновления корневых сертификатов для 2008-ого.
Перетащить с R2 — да, можно попробовать. Обновления — первым делом поставил всё, что нашлось в каталоге MS.
AWW>Но удивительно то что драйвер в итоге то работает! А что говорит "signtool verify"?
В первом посте ветки я приводил вывод. Всё чисто.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[7]: Ругань при установке валидно подписанного драйвера