Ругань при установке валидно подписанного драйвера
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 25.01.17 15:04
Оценка:
Имеется виртуалка 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: Ругань при установке валидно подписанного драйвера
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 25.01.17 15:37
Оценка:
Здравствуйте, CaptainFlint, Вы писали:

CF>Чем оно может быть вызвано


Это ж классика — отсутствием подписи WHQL.

CF>и как от него избавиться?


Передать на подпись через портал SysDev. Но я бы не парился.
Re[2]: Ругань при установке валидно подписанного драйвера
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 25.01.17 15:54
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Это ж классика — отсутствием подписи WHQL.


При отсутствии WHQL обычно выдаётся совсем другое окно, где указан производитель (точнее, владелец подписи) и предупреждается лишь, что драйвер не тестировался. У меня же вопит, что подписи нет вообще никакой. Я специально скрин приложил.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Отредактировано 25.01.2017 15:55 CaptainFlint . Предыдущая версия .
Re[3]: Ругань при установке валидно подписанного драйвера
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 25.01.17 16:01
Оценка:
Здравствуйте, CaptainFlint, Вы писали:

CF>При отсутствии WHQL обычно выдаётся совсем другое окно


А, точно. А под другими версиями винды этот драйвер себя ведет?
Re[4]: Ругань при установке валидно подписанного драйвера
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 25.01.17 16:56
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>А под другими версиями винды этот драйвер себя ведет?


Пока что воплей от тестировщиков на аналогичное поведение в других системах не поступало.
Попробовал на свежеустановленной 2008R2 без сервис-паков и апдейтов, там вывелось обычное окошко, ожидаемое в таких ситуациях: мол, ставится драйвер с таким-то названием, от такого-то производителя, Install, Don't install, галочка "Always trust software from…".
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re: Ругань при установке валидно подписанного драйвера
От: _f_b_i_  
Дата: 26.01.17 08:30
Оценка: 4 (1)
Здравствуйте, CaptainFlint, Вы писали:

CF>Имеется виртуалка Windows Server 2008 x64, без обновлений (обновить нельзя, таков тестовый сценарий).

CF>Имеется самособранный драйвер (в данном случае — для виртуальной сетевой карты, но с другими драйверами то же самое). Он подписан платным сертификатом с кросс-сертификатом (и сертификат, и подпись — SHA-1), на это дело сгенерирован и так же подписан каталог-файл. Корневой сертификат VeriSign в системе изначально отсутствовал, но был доустановлен в корневое хранилище, и теперь цифровая подпись считается корректной. Тем не менее, при установке выводится страшное красное окно о неподписанности (скрин). Чем оно может быть вызвано и как от него избавиться?

Погляди лог в windows\inf\setupapi.dev.log
Возможно код ошибки в этом логе подскажет направление движения дальше.
Re: Ругань при установке валидно подписанного драйвера
От: okman Беларусь https://searchinform.ru/
Дата: 26.01.17 09:52
Оценка:
Здравствуйте, CaptainFlint, Вы писали:

CF> при установке выводится страшное красное окно о неподписанности.

CF> Чем оно может быть вызвано и как от него избавиться?

Попробуй подписать пакет драйвера без использования timestamp-сервера. Что-нибудь изменится?
Возможно, на компьютере не хватает чего-то из цепочки сертификатов, которые используются в отметке времени.
Re[2]: Ругань при установке валидно подписанного драйвера
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 26.01.17 10:07
Оценка:
Здравствуйте, _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]: Ругань при установке валидно подписанного драйвера
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 26.01.17 10:11
Оценка:
Здравствуйте, okman, Вы писали:

O>Попробуй подписать пакет драйвера без использования timestamp-сервера. Что-нибудь изменится?

O>Возможно, на компьютере не хватает чего-то из цепочки сертификатов, которые используются в отметке времени.

Дело в том, что проблему как раз поймали на драйверах, которые изначально были подписаны timstamp-ом по протоколу RFC-3161, и 2008-м сервером эта подпись не распознавалась. То есть в свойствах файла (и в signtool verify) тупо говорилось, что timestamp отсутствует. Я подумал, что в этом проблема и переподписал с параметром /t вместо /tr, таймштамп стал виден, но на результаты это не повлияло.
Ну и, кроме того, я тыкал /t-шную таймштамповую подпись в свойствах файла, там тоже говорится, что всё валидно до корня (да и в логе signtool verify видно, что валидная цепочка).
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re: Ругань при установке валидно подписанного драйвера
От: Andrew.W Worobow https://github.com/Worobow
Дата: 26.01.17 10:58
Оценка:
Здравствуйте, CaptainFlint, Вы писали:

CF>Имеется виртуалка Windows Server 2008 x64, без обновлений (обновить нельзя, таков тестовый сценарий).


Ой давно это было. Но что-то всплывает про "усиление проверки" — искать очень лень, ибо учусь на учебе )

Вот поэтому, такой вопрос — а что на Windows Server 2012 и 2016 происходит? Именно на серверах.
Не все кто уехал, предал Россию.
Re[2]: Ругань при установке валидно подписанного драйвера
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 26.01.17 11:12
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

CF>>Имеется виртуалка Windows Server 2008 x64, без обновлений (обновить нельзя, таков тестовый сценарий).


AWW>Ой давно это было. Но что-то всплывает про "усиление проверки" — искать очень лень, ибо учусь на учебе )


AWW>Вот поэтому, такой вопрос — а что на Windows Server 2012 и 2016 происходит? Именно на серверах.


Если это усиление проверки, то очень странное. Логично было бы ожидать, что если драйвер почему-то считается неподписанным, то и работать не будет, даже если его принудительно установить (как это происходит с неподписанными или самоподписанными драйверами). Однако установленный драйвер в моём случае великолепно загружается и работает.

В 2012 и 2016 пока специально не проверял, но проверил в 2008 R2, отписывал выше
Автор: CaptainFlint
Дата: 25.01.17
. Вкратце — устанавливается без проблем. Опять же, вряд ли в 2008 ввели "усиление проверки", а уже в следующей же версии отменили его. Хотя, конечно, всякое бывает…
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[3]: Ругань при установке валидно подписанного драйвера
От: Andrew.W Worobow https://github.com/Worobow
Дата: 26.01.17 11:18
Оценка:
Здравствуйте, CaptainFlint, Вы писали:

AWW>>Вот поэтому, такой вопрос — а что на Windows Server 2012 и 2016 происходит? Именно на серверах.


CF>Если это усиление проверки, то очень странное. Логично было бы ожидать, что если драйвер почему-то считается неподписанным, то и работать не будет, даже если его принудительно установить (как это происходит с неподписанными или самоподписанными драйверами). Однако установленный драйвер в моём случае великолепно загружается и работает.


CF>В 2012 и 2016 пока специально не проверял, но проверил в 2008 R2, отписывал выше
Автор: CaptainFlint
Дата: 25.01.17
. Вкратце — устанавливается без проблем. Опять же, вряд ли в 2008 ввели "усиление проверки", а уже в следующей же версии отменили его. Хотя, конечно, всякое бывает…



Это усиление проверки сделанное "раком". Если все как вы описали, то похоже ясно в чем дело — дело в "раках".
То есть вам надо установить уже не помню какое там KBxxxxx обновление (которое содержит какой-то там серт), и все поедет. Хотя могу ошибаться. А в R2 это обновление уже включено, поэтому и все ОК. Поищите это известная проблема.
Не все кто уехал, предал Россию.
Отредактировано 26.01.2017 12:24 Andrew.W Worobow . Предыдущая версия .
Re[3]: Ругань при установке валидно подписанного драйвера
От: Andrew.W Worobow https://github.com/Worobow
Дата: 26.01.17 12:56
Оценка:
Здравствуйте, CaptainFlint, Вы писали:

Повспоминал, и понял, что скорее всего вы не найдете прямой ответ так как очень давно это было. Я бы на вашем месте разрешил бы апдейт и посмотрел какой именно нужен для того чтобы не MC-овский рут серт при кросе прокатывал.
Не все кто уехал, предал Россию.
Re: Ругань при установке валидно подписанного драйвера
От: sr_dev  
Дата: 26.01.17 13:29
Оценка:
Здравствуйте, CaptainFlint, Вы писали:

CF>Корневой сертификат VeriSign в системе изначально отсутствовал, но был доустановлен в корневое хранилище, и теперь цифровая подпись считается корректной.


В какое конкретно? Я бы попытался помимо root trusted ca добавить и в intermediate CA или как оно там и в trusted publishers
Re[2]: Ругань при установке валидно подписанного драйвера
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 26.01.17 13:52
Оценка:
Здравствуйте, sr_dev, Вы писали:

CF>>Корневой сертификат VeriSign в системе изначально отсутствовал, но был доустановлен в корневое хранилище, и теперь цифровая подпись считается корректной.


_>В какое конкретно? Я бы попытался помимо root trusted ca добавить и в intermediate CA или как оно там и в trusted publishers


Добавлял в Trusted Root CA. Сейчас воткнул ещё в эти два, окошко по-прежнему выводится.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[4]: Ругань при установке валидно подписанного драйвера
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 26.01.17 14:00
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

AWW>Повспоминал, и понял, что скорее всего вы не найдете прямой ответ так как очень давно это было. Я бы на вашем месте разрешил бы апдейт и посмотрел какой именно нужен для того чтобы не MC-овский рут серт при кросе прокатывал.


Ага, я уже нагуглился по уши, ничего нужного не обнаружил, и тоже решил пойти по пути установки апдейтов, только не обновлением, а ручной установкой MSU, скачанных с Download-центра. Увы, даже после установки всех найденных пакетов проблема осталась на месте. Можно, конечно, включить обновления и прокачать её по самое не могу, но даже если починится, будет сложно вычленить, что именно починило проблему. Апдейтов на 2008 сейчас дофига…
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[4]: Ругань при установке валидно подписанного драйвера
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 27.01.17 14:09
Оценка:
Что-то совсем не катят лыжи. Обновил эту 2008-ю полностью через WU — пофигу, всё равно говорит, что драйвер не подписан. Поставил отдельно в виртуалку 2008 с интегрированным SP2 — там то же самое.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[5]: Ругань при установке валидно подписанного драйвера
От: Andrew.W Worobow https://github.com/Worobow
Дата: 27.01.17 15:02
Оценка:
Здравствуйте, CaptainFlint, Вы писали:

CF>Что-то совсем не катят лыжи. Обновил эту 2008-ю полностью через WU — пофигу, всё равно говорит, что драйвер не подписан. Поставил отдельно в виртуалку 2008 с интегрированным SP2 — там то же самое.


Скорее всего причина в том, что обновление корневых сертификатов не есть "важное и обязательное". Попробуйте экспортировать корневые сертификаты из R2 и впихнуть их в ваш 2008-ой. Может в этом причина. Попробуйте найти обновления корневых сертификатов для 2008-ого.
Но удивительно то что драйвер в итоге то работает! А что говорит "signtool verify"?
Не все кто уехал, предал Россию.
Re[6]: Ругань при установке валидно подписанного драйвера
От: CaptainFlint Россия http://flint-inc.ru/
Дата: 27.01.17 15:19
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

CF>>Что-то совсем не катят лыжи. Обновил эту 2008-ю полностью через WU — пофигу, всё равно говорит, что драйвер не подписан. Поставил отдельно в виртуалку 2008 с интегрированным SP2 — там то же самое.


AWW>Скорее всего причина в том, что обновление корневых сертификатов не есть "важное и обязательное".


Я опциональные тоже все поставил. И, кстати, обновления сертификатов, которые я ставил до этого, все входили в группу Critical Updates (качал отсюдова).

AWW>Попробуйте экспортировать корневые сертификаты из R2 и впихнуть их в ваш 2008-ой. Может в этом причина. Попробуйте найти обновления корневых сертификатов для 2008-ого.


Перетащить с R2 — да, можно попробовать. Обновления — первым делом поставил всё, что нашлось в каталоге MS.

AWW>Но удивительно то что драйвер в итоге то работает! А что говорит "signtool verify"?


В первом посте ветки я приводил вывод. Всё чисто.
Почему же, ё-моё, ты нигде не пишешь «ё»?
Re[7]: Ругань при установке валидно подписанного драйвера
От: Andrew.W Worobow https://github.com/Worobow
Дата: 27.01.17 15:31
Оценка: 4 (1)
Здравствуйте, CaptainFlint, Вы писали:

CF>В первом посте ветки я приводил вывод. Всё чисто.


У вас драйвер ставится собственной утилитой или просто "обновить драйвер"?
Если утилитой то можете поиграть вот этим https://msdn.microsoft.com/en-us/library/aa388201(VS.85).aspx
Не все кто уехал, предал Россию.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.