Вопрос по c#, code-signing, certificate, dll, signtool – Почему мой корневой сертификат не заслуживает доверия?

24

Я выдал себе сертификат подписи кода с сервера сертификатов. Я также выдал себе корневой сертификат с того же сервера сертификатов.The root certificate exists in both the Current User and Local Computer certificate stores within the Trusted Root Certification Authorities folder. я имеюsuccessfully подписал DLL с помощью мастера signtool.exe:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\signtool.exe" signwizard <MyDLLName>.dll

Однако, когда я пытаюсь проверить мою DLL, она не проходит проверку со следующей ошибкой:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\signtool.exe" verify <MyDLLName>.dll
SignTool Error: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.
SignTool Error: File not valid: <MyDLLName>.dll

Почему это происходит? Я думал, что наличие корневого сертификата в папке Trusted Root Certification Authorities будет проверять DLL.

Ваш Ответ

1   ответ
53

чтобы указать ей использовать Политику проверки подлинности по умолчанию вместо Политики проверки драйверов Windows, то есть она будет проверять хранилища сертификатов вместо ограниченного набора ЦС, которым Microsoft доверяет драйверы.

Смотрите здесь для большего количества вариантов: http://msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.90).aspx

Привет, Кевин, я пытаюсь вызвать службу WCF, размещенную с помощью самоподписанного SSL-сертификата. Будет ли локальная установка SSL с указанной выше опцией работать? Можете ли вы отправить полную команду для использования. У меня есть файлы .pfx и .cer, но ASP.net не может доверять провайдеру SSL.
Важным примечанием здесь является то, что если вы делаете это с KERNEL DRIVER (.sys), это не сработает, потому что драйверам ядра в конечном итоге должен доверять корневой сертификат Microsoft. Сама проверка пройдет, если вы добавите упомянутую опцию / pa, но драйвер на самом деле не загрузится, она все равно скажет «Ошибка неподписанного драйвера». Во время загрузки ядро не имеет доступа к полному хранилищу сертификатов, поэтому оно может только смотреть на ограниченный набор доверительных отношений Microsoft с драйверами.
@SanjayZalke Вы можете просто использовать инструменты управления сертификатами Windows для установки сертификата в папку «Доверенные корневые центры сертификации» на локальном компьютере. Вы можете запустить его через mmc.exe и добавить в оснастку сертификата.

Похожие вопросы