Почему мой корневой сертификат не является доверенным?

Я выпустил себе сертификат подписи кода с сервера сертификатов. Я также выдал себе корневой сертификат с того же сервера сертификатов. Корневой сертификат существует в хранилищах сертификатов текущего пользователя и локального компьютера в папке Trusted Root Certification Authorities. Я успешно подписал 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.


person Alexandru    schedule 27.06.2012    source источник


Ответы (1)


В вашей команде verify добавьте параметр / pa, чтобы указать ему использовать политику проверки подлинности по умолчанию вместо политики проверки драйверов Windows, что означает, что он будет смотреть на ваши хранилища сертификатов, а не на ограниченный набор центров сертификации, которые Microsoft доверяет драйверам.

Дополнительные параметры см. Здесь: http://msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.90).aspx

person Kevin Green    schedule 27.06.2012
comment
Привет, Кевин, я пытаюсь вызвать службу WCF, размещенную с помощью самоподписанного сертификата SSL, будет ли установка SSL локально с указанным выше вариантом работать? Можете ли вы отправить полную команду для использования. У меня есть файлы .pfx и .cer, но ASP.net не может доверять провайдеру SSL. - person Sanjay Zalke; 09.09.2013
comment
@SanjayZalke Вы можете просто использовать инструменты управления сертификатами Windows, чтобы установить сертификат в папку доверенных корневых центров сертификации на локальном компьютере. Запустить его можно через mmc.exe и добавив в оснастку сертификата. - person Kevin Green; 17.09.2013
comment
Здесь важно отметить, что если вы делаете это с ДРАЙВЕРОМ ЯДРА (.sys), это не сработает, потому что драйверы ядра в конечном итоге должны доверять корневому сертификату Microsoft. Сама проверка пройдет, если вы добавите упомянутый параметр / pa, но драйвер фактически не загрузится, он все равно будет сообщать об ошибке неподписанного драйвера. Во время загрузки ядро ​​не имеет доступа к полному хранилищу сертификатов, поэтому оно может просматривать только ограниченный набор доверительных отношений Microsoft с драйверами. - person Syclone0044; 09.02.2014