O driver INF assinado funciona no computador em que foi assinado, não em outros

Minha empresa comprou umCertificado de Assinatura de Motorista de Go Daddy. Eu usei para assinar um arquivo INF simples que é um driver para alguns dos nossos dispositivos USB que usam o usbser.sys da Microsoft. Tudo parece funcionar no computador Windows 7 de 64 bits onde o assinei: se clicar com o botão direito do mouse no arquivo INF e selecionar "Instalar", o segundo aviso que vejo é esse bom aviso que mostra o nome correto do Publicador:

No entanto, se eu for para um computador diferente (Windows Vista de 64 bits), clique com o botão direito do mouse no arquivo INF e selecione "Instalar", então recebo esta mensagem de erro:

Isto faz-me pensar que os meus controladores não estão devidamente assinados, e a única razão pela que fica bem no meu computador é devido a algum certificado raiz / intermédio / cruzado que instalei durante o processo de instalação do Go Daddy. Eu definitivamente quero que meus usuários possam ver que somos o editor verificado sem precisar instalar manualmente um certificado em seus computadores.

O arquivo INF e o arquivo .cat no mesmo diretório.

Alguém sabe por que isso está acontecendo e como posso corrigi-lo?

Eu suspeito que o principal problema é que eu recebo esse erro quando eu corrosigntool verify /v pololu.cat (mais detalhes abaixo), e eu não descobri o porquê:

SignTool Error: uma cadeia de certificados processada, mas terminada em um certificado raiz que não é confiável pelo provedor de confiança.

Detalhes do meu procedimento

oCertificado de Assinatura de Motorista é um novo produto da Go Daddy que eles lançaram algumas semanas atrás. Eu não estou totalmente certo de como é diferente doCertificado de Assinatura de Código, mas é o mesmo preço. Eu segui oinstruções no site do Go Daddy para baixar e instalar o certificado, embora as instruções não correspondam perfeitamente à realidade. Depois que instalei o Microsoft Cross Certificate na etapa 1, vi uma mensagem de aviso vermelha dizendo:

Antes de instalar seu certificado, você deve usar o Windows Update para atualizar seus certificados raiz ou baixar e instalar manualmente o certificado raiz de nosso repositório.

Não tenho certeza do que fazer sobre isso. Eu instalei alguns certificados raiz GoDaddy de seu repositório, mas isso não fez nenhuma diferença notável.

Eu instalei a versão mais recente (8.0) doKit de driver do Windows (WDK) e, em seguida, instalou a última versão (8.0) doKit de desenvolvimento de software do Windows (SDK) para o Windows 8. Isso me dá acesso aoinf2cat esigntool Serviços de utilidade pública. Ambos os kits foram lançados no último mês, então é possível que haja alguns novos bugs nos quais estamos pisando.

Em um novo diretório, eu coloquei três arquivos:

pololu_usb_to_serial.inf, o arquivo INF que quero assinar. É longo mas simples;Você pode lê-lo aqui. Este arquivo INF é um driver independente; nenhum outro arquivo é necessário em nosso pacote de drivers. Este arquivo é basicamente o mesmo que a versão que nossa empresa distribuiu com sucesso (sem assinatura) por anos, mas eu tive que fazer algumas mudanças para que o Inf2Cat aceitasse.mscvr-cross-gdroot-g2.crt, que eu baixei doRepositório de certificados Go Daddy. Acredito que este é o Certificado Cruzado que prova que a "Autoridade de Certificação de Raiz do Go Daddy - G2" é confiável para a Microsoft, mas não tenho certeza se esse é o certificado correto a ser usado.sign_it.bat, o arquivo em lote eu corro para fazer a assinatura.

O arquivo em lote contém apenas:

"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\inf2cat" /v /driver:%~dp0 /os:XP_X86,Vista_X86,Vista_X64,7_X86,7_X64,8_X86,8_X64

"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool" sign /v /ac "mscvr-cross-gdroot-g2.crt" /n "Pololu Corporation" /t http://tsa.starfieldtech.com pololu.cat

O primeiro comando invocainf2cat do Kit de Drivers do Windows. o/v opção torna verboso. o/driver:%~dp0 opção aponta para o diretório que contém o arquivo de lote; uma. não funciona por algum motivo e isso é melhor do que ter que codificar o caminho completo. o/os opção especifica todos os sistemas operacionais que gostaria de suportar com este pacote de driver. Este comando criapololu.cat.

O segundo comando invocasigntool do Windows Software Development Kit para assinar o arquivo de catálogo. o/v opção torna verboso. o/ac opção especifica qual uso de certificado cruzado (veja o item 2 acima). o/n opção especifica o nome do certificado a usar (esse certificado é instalado no meu computador de acordo comcertmgr.msc). o/t opção especifica o URL do servidor de carimbo de data / hora do Go Daddy.

Aqui está a saída no prompt de comando quando eu executar o arquivo em lotes:

C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\inf2cat" /v /driver:C:\Users\david.POLOLU\Desktop\sign_it\ /os:XP_X86,Vis
ta_X86,Vista_X64,7_X86,7_X64,8_X86,8_X64
Processing directory (C:\Users\david.POLOLU\Desktop\sign_it\) file (mscvr-cross-
gdroot-g2.crt)
Processing directory (C:\Users\david.POLOLU\Desktop\sign_it\) file (pololu_usb_t
o_serial.inf)
Processing directory (C:\Users\david.POLOLU\Desktop\sign_it\) file (sign_it.bat)

Parsing INF: C:\Users\david.POLOLU\Desktop\sign_it\pololu_usb_to_serial.inf
Finished parsing INFs
Processing INF: C:\Users\david.POLOLU\Desktop\sign_it\pololu_usb_to_serial.inf
Finished processing INFs
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...
Testing driver package...

Signability test complete.

Errors:
None

Warnings:
None

Catalog generation complete.
C:\Users\david.POLOLU\Desktop\sign_it\pololu.cat

C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\signtool" sign /v /ac "mscvr-cross-gdroot-g2.crt" /n "Pololu Corporation"
 /t http://tsa.starfieldtech.com pololu.cat
The following certificate was selected:
    Issued to: Pololu Corporation
    Issued by: Go Daddy Secure Certificate Authority - G2
    Expires:   Sat Aug 31 11:35:25 2013
    SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

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

        Issued to: Go Daddy Root Certificate Authority - G2
        Issued by: Microsoft Code Verification Root
        Expires:   Thu Apr 15 13:07:40 2021
        SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF

            Issued to: Go Daddy Secure Certificate Authority - G2
            Issued by: Go Daddy Root Certificate Authority - G2
            Expires:   Sat May 03 00:00:00 2031
            SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

                Issued to: Pololu Corporation
                Issued by: Go Daddy Secure Certificate Authority - G2
                Expires:   Sat Aug 31 11:35:25 2013
                SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

Done Adding Additional Store
Successfully signed: pololu.cat

Number of files successfully Signed: 1
Number of warnings: 0
Number of errors: 0

Como eu disse, eu estou mantendo o arquivo .cat e .inf juntos no mesmo diretório, mas eles só funcionam corretamente no computador onde eu os assinei.

Verificação com Signtool

osigntool utilitário da Microsoft também tem um recurso "verificar" que permite verificar se sua assinatura está correta. Existem três políticas diferentes que você pode usar ao verificar e cada uma delas produz resultados diferentes:

oPolítica de Verificação de Driver do Windows diz que minha cadeia de assinatura não rastreia a Microsoft e imprime uma mensagem de erro sobre como minha raiz não é confiável. Isso parece um problema para mim.oPolítica de verificação padrão do Authenticode (/pa) também diz que minha cadeia de assinaturas não rastreia a Microsoft, mas não dá erro.odiretiva de assinatura de driver do modo kernel (/kp, o que provavelmente não é aplicável porque eu não estou assinando drivers no modo kernel) diz que minha cadeia de assinaturas rastreia de volta para a Microsoft e não fornece nenhum erro.

Alguém sabe qual política é usada pelo Windows para arquivos INF? Isso pelo menos ajudaria a diminuir o problema.

Aqui está a saída completa e detalhada designtool verify:

C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\signtool" verify /v pololu.cat

Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 09A611ECC83E61646DB967D4C23EED725B903C1B

Signing Certificate Chain:
    Issued to: Go Daddy Root Certificate Authority - G2
    Issued by: Go Daddy Root Certificate Authority - G2
    Expires:   Thu Dec 31 16:59:59 2037
    SHA1 hash: 47BEABC922EAE80E78783462A79F45C254FDE68B

        Issued to: Go Daddy Secure Certificate Authority - G2
        Issued by: Go Daddy Root Certificate Authority - G2
        Expires:   Sat May 03 00:00:00 2031
        SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

            Issued to: Pololu Corporation
            Issued by: Go Daddy Secure Certificate Authority - G2
            Expires:   Sat Aug 31 11:35:25 2013
            SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

The signature is timestamped: Wed Sep 05 16:22:34 2012
Timestamp Verified by:
    Issued to: Starfield Services Root Certificate Authority
    Issued by: Starfield Services Root Certificate Authority
    Expires:   Mon Dec 31 16:59:59 2029
    SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F

        Issued to: Starfield Services Timestamp Authority
        Issued by: Starfield Services Root Certificate Authority
        Expires:   Wed Apr 26 00:00:00 2017
        SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26

SignTool Error: A certificate chain processed, but terminated in a root
        certificate which is not trusted by the trust provider.

Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1

C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\signtool" verify /v /pa pololu.cat

Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 09A611ECC83E61646DB967D4C23EED725B903C1B

Signing Certificate Chain:
    Issued to: Go Daddy Root Certificate Authority - G2
    Issued by: Go Daddy Root Certificate Authority - G2
    Expires:   Thu Dec 31 16:59:59 2037
    SHA1 hash: 47BEABC922EAE80E78783462A79F45C254FDE68B

        Issued to: Go Daddy Secure Certificate Authority - G2
        Issued by: Go Daddy Root Certificate Authority - G2
        Expires:   Sat May 03 00:00:00 2031
        SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

            Issued to: Pololu Corporation
            Issued by: Go Daddy Secure Certificate Authority - G2
            Expires:   Sat Aug 31 11:35:25 2013
            SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

The signature is timestamped: Wed Sep 05 16:22:34 2012
Timestamp Verified by:
    Issued to: Starfield Services Root Certificate Authority
    Issued by: Starfield Services Root Certificate Authority
    Expires:   Mon Dec 31 16:59:59 2029
    SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F

        Issued to: Starfield Services Timestamp Authority
        Issued by: Starfield Services Root Certificate Authority
        Expires:   Wed Apr 26 00:00:00 2017
        SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26


Successfully verified: pololu.cat

Number of files successfully Verified: 1
Number of warnings: 0
Number of errors: 0

C:\Users\david.POLOLU\Desktop\sign_it>"C:\Program Files (x86)\Windows Kits\8.0\b
in\x86\signtool" verify /v /kp pololu.cat

Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 09A611ECC83E61646DB967D4C23EED725B903C1B

Signing Certificate Chain:
    Issued to: Go Daddy Root Certificate Authority - G2
    Issued by: Go Daddy Root Certificate Authority - G2
    Expires:   Thu Dec 31 16:59:59 2037
    SHA1 hash: 47BEABC922EAE80E78783462A79F45C254FDE68B

        Issued to: Go Daddy Secure Certificate Authority - G2
        Issued by: Go Daddy Root Certificate Authority - G2
        Expires:   Sat May 03 00:00:00 2031
        SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

            Issued to: Pololu Corporation
            Issued by: Go Daddy Secure Certificate Authority - G2
            Expires:   Sat Aug 31 11:35:25 2013
            SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

The signature is timestamped: Wed Sep 05 16:22:34 2012
Timestamp Verified by:
    Issued to: Starfield Services Root Certificate Authority
    Issued by: Starfield Services Root Certificate Authority
    Expires:   Mon Dec 31 16:59:59 2029
    SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F

        Issued to: Starfield Services Timestamp Authority
        Issued by: Starfield Services Root Certificate Authority
        Expires:   Wed Apr 26 00:00:00 2017
        SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26

Cross Certificate Chain:
    Issued to: Microsoft Code Verification Root
    Issued by: Microsoft Code Verification Root
    Expires:   Sat Nov 01 06:54:03 2025
    SHA1 hash: 8FBE4D070EF8AB1BCCAF2A9D5CCAE7282A2C66B3

        Issued to: Go Daddy Root Certificate Authority - G2
        Issued by: Microsoft Code Verification Root
        Expires:   Thu Apr 15 13:07:40 2021
        SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF

            Issued to: Go Daddy Secure Certificate Authority - G2
            Issued by: Go Daddy Root Certificate Authority - G2
            Expires:   Sat May 03 00:00:00 2031
            SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

                Issued to: Pololu Corporation
                Issued by: Go Daddy Secure Certificate Authority - G2
                Expires:   Sat Aug 31 11:35:25 2013
                SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0


Successfully verified: pololu.cat

Number of files successfully Verified: 1
Number of warnings: 0
Number of errors: 0

A saída parecia a mesma quando executada no computador onde assinei o driver (onde está funcionando) e no outro computador (onde não está funcionando).

Perguntas semelhantes no StackOverflow

Driver Thawte assinando para o Windows de 64 bits - A solução para o problema desse cara era adicionar uma diretiva CatalogFile ao arquivo INF, mas eu já tenho isso. (CatalogFile=pololu.cat).

Editar # 1: assinando trabalhos executáveis

Eu usei signtool com essas mesmas opções para assinar um arquivo executável (instalador NSIS), e funcionou corretamente na primeira tentativa, em ambos os computadores. Então eu acho que há algo diferente sobre a política de assinatura para arquivos de driver INF e é isso que está me atrapalhando.

Editar # 2: aviso no certificado do GoDaddy

Se eu duplo clique emmscvr-cross-gdroot-g2.crt, na guia Geral, diz "O Windows não possui informações suficientes para verificar este certificado". Na guia Caminho de certificação, em "Status do certificado:", ele diz "O emissor deste certificado não foi encontrado". Eu também vejo esses mesmos avisos se eu clicar duas vezesgd_ms_drv_sign_bundle.p7b (um pacote de certificados da GoDaddy) e abra o primeiro certificado.

O emissor de ambos os certificados deve ser o Microsoft Code Verification Root. Devo me preocupar com essa mensagem de aviso?

Editar # 3: excluindo certificados do GoDaddy

Lindsay da equipe de suporte avançado da GoDaddy voltou para mim. Ela ligou paraesta página da globalsign que explica como você tem que desinstalar os certificados raiz e intermediário da sua CA no computador onde você assina os drivers. Lindsay diz que, se você não fizer essa etapa, as ferramentas de assinatura assumirão que esses certificados estão presentes em outros computadores e, portanto, não os incluirão na assinatura.

Alguém sabe como verificar quais certificados são "importados" em uma assinatura? Quais ferramentas posso usar para ver se a Lindsay e a GlobalSign estão certas?

A propósito, temos computadores com Windows XP, mas a Microsoft deixará de suportar esse sistema operacional em breve. Apesar do que a GlobalSign diz, temobteve para ser uma maneira de fazer isso funcionar no Windows 7.

Com base no conselho de Lindsay, segui as instruções da Microsoft paraDesativar a atualização automática de certificados raize, em seguida, usei a interface do usuáriocertmgr.msc para excluir todos os certificados GoDaddy de "Autoridades de Certificação Raiz Confiáveis" e "Autoridades de Certificação Intermediárias". Então eu assinei novamente meu arquivo inf.

Infelizmente, isso não funcionou! Após a assinatura, verifiquei que todos os certificados do GoDaddy ainda são excluídos.

Não recebi nenhum feedback do GoDaddy sobre a saída designtool verifyou qualquer entrada sobre qual política de assinatura de driver devo verificar ao fazer a verificação. Eu estava esperando que eles pudessem ver a saída da verificação e me dizer o que eu estava fazendo de errado, ou me dizer qual seria a saída correta.

Para completar, aqui estão as três saídas designtool verify depois eu apaguei os certificados e assinei novamente os drivers:

C:\Users\david.POLOLU\Desktop\sign_inf>"C:\Program Files (x86)\Windows Kits\8.0\
bin\x86\signtool.exe" verify /v pololu.cat

Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 5AE4F370471009C8B0ED936C9AE19ED14ABD67D7

Signing Certificate Chain:
    Issued to: Go Daddy Root Certificate Authority - G2
    Issued by: Microsoft Code Verification Root
    Expires:   Thu Apr 15 13:07:40 2021
    SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF

        Issued to: Go Daddy Secure Certificate Authority - G2
        Issued by: Go Daddy Root Certificate Authority - G2
        Expires:   Sat May 03 00:00:00 2031
        SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

            Issued to: Pololu Corporation
            Issued by: Go Daddy Secure Certificate Authority - G2
            Expires:   Sat Aug 31 11:35:25 2013
            SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

The signature is timestamped: Wed Sep 12 14:52:19 2012
Timestamp Verified by:
    Issued to: Starfield Services Root Certificate Authority
    Issued by: Starfield Services Root Certificate Authority
    Expires:   Mon Dec 31 16:59:59 2029
    SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F

        Issued to: Starfield Services Timestamp Authority
        Issued by: Starfield Services Root Certificate Authority
        Expires:   Wed Apr 26 00:00:00 2017
        SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26

SignTool Error: A certificate chain processed, but terminated in a root
        certificate which is not trusted by the trust provider.

Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1

C:\Users\david.POLOLU\Desktop\sign_inf>"C:\Program Files (x86)\Windows Kits\8.0\
bin\x86\signtool.exe" verify /v /pa pololu.cat

Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 5AE4F370471009C8B0ED936C9AE19ED14ABD67D7

Signing Certificate Chain:
    Issued to: Go Daddy Root Certificate Authority - G2
    Issued by: Microsoft Code Verification Root
    Expires:   Thu Apr 15 13:07:40 2021
    SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF

        Issued to: Go Daddy Secure Certificate Authority - G2
        Issued by: Go Daddy Root Certificate Authority - G2
        Expires:   Sat May 03 00:00:00 2031
        SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

            Issued to: Pololu Corporation
            Issued by: Go Daddy Secure Certificate Authority - G2
            Expires:   Sat Aug 31 11:35:25 2013
            SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

The signature is timestamped: Wed Sep 12 14:52:19 2012
Timestamp Verified by:
    Issued to: Starfield Services Root Certificate Authority
    Issued by: Starfield Services Root Certificate Authority
    Expires:   Mon Dec 31 16:59:59 2029
    SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F

        Issued to: Starfield Services Timestamp Authority
        Issued by: Starfield Services Root Certificate Authority
        Expires:   Wed Apr 26 00:00:00 2017
        SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26

SignTool Error: WinVerifyTrust returned error: 0x800B010A
        A certificate chain could not be built to a trusted root authority.

Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1

C:\Users\david.POLOLU\Desktop\sign_inf>"C:\Program Files (x86)\Windows Kits\8.0\
bin\x86\signtool.exe" verify /v /kp pololu.cat

Verifying: pololu.cat
Signature Index: 0 (Primary Signature)
Hash of file (sha1): 5AE4F370471009C8B0ED936C9AE19ED14ABD67D7

Signing Certificate Chain:
    Issued to: Go Daddy Root Certificate Authority - G2
    Issued by: Microsoft Code Verification Root
    Expires:   Thu Apr 15 13:07:40 2021
    SHA1 hash: 842C5CB34B73BBC5ED8564BDEDA786967D7B42EF

        Issued to: Go Daddy Secure Certificate Authority - G2
        Issued by: Go Daddy Root Certificate Authority - G2
        Expires:   Sat May 03 00:00:00 2031
        SHA1 hash: 27AC9369FAF25207BB2627CEFACCBE4EF9C319B8

            Issued to: Pololu Corporation
            Issued by: Go Daddy Secure Certificate Authority - G2
            Expires:   Sat Aug 31 11:35:25 2013
            SHA1 hash: E2FE1275AD8DA85DEABA67ADE26BE42E0834B4C0

The signature is timestamped: Wed Sep 12 14:52:19 2012
Timestamp Verified by:
    Issued to: Starfield Services Root Certificate Authority
    Issued by: Starfield Services Root Certificate Authority
    Expires:   Mon Dec 31 16:59:59 2029
    SHA1 hash: 5D003860F002ED829DEAA41868F788186D62127F

        Issued to: Starfield Services Timestamp Authority
        Issued by: Starfield Services Root Certificate Authority
        Expires:   Wed Apr 26 00:00:00 2017
        SHA1 hash: AEAC793CDD107ACFB314A2FE384A8F16840B7C26

SignTool Error: WinVerifyTrust returned error: 0x800B010A
        A certificate chain could not be built to a trusted root authority.

Number of files successfully Verified: 0
Number of warnings: 0
Number of errors: 1
Editar # 4: seção DefaultInstall é um não-não

Nodocumentação da seção DefaultInstall da Microsoft, descobri isso:

Nota O arquivo INF de um pacote de driver não deve conter um INFDefaultInstall seção se o pacote do driver tiver que ser assinado digitalmente.

Alguém sabe por que isso é verdade? Eu não consegui encontrar uma explicação.

De qualquer forma, eu tirei a seção DefaultInstall do meu arquivo INF, então a partir de agora eu tenho que testá-lo, executando uma pequena DLL que eu escrevi, que chamaSetupCopyOemInf.

Ainda sem sorte; Continuo recebendo o aviso de editor não verificado no computador com Windows Vista.

Editar # 5: o driver JLink está assinado corretamente

Eu estava bisbilhotando em C: \ Windows \ System32 \ DriverStore \ FileRepository para tentar encontrar alguns pacotes de driver devidamente assinados. O primeiro que encontrei é o JLinkCDC.cat/JLinkCDC.inf. A versão do arquivo Inf éDriverVer=01/25/2012,6.0.2600.4. Na máquina do Windows Vista, se eu chamar SetupCopyOemInf no arquivo inf (usando minha DLL), recebo uma mensagem apropriada informando quem é o editor (Segger GMBH ou algo parecido). Portanto, é possível assinar pacotes de driver como o meu corretamente, mas, de alguma forma, o GoDaddy ou eu estamos fazendo algo errado.

O driver JLinkCDC.inf é muito semelhante ao meu driver porque é apenas um arquivo e usa o usbser.sys. A cadeia de confiança de sua assinatura remonta à Autoridade de Certificação Primária Pública da VeriSign Classe 3 - G5.

Basicamente, este driver JLinkCDC é semelhante ao meu e funciona, então eu planejo olhar com cuidado para ver quais são as diferenças.

osaída de signtool verify for JLinkCDC.cat parece muito semelhante ao meu, exceto que ele remonta à Verisign em vez de ao GoDaddy.

Editar # 6: pequenas alterações

Para tornar meu driver mais parecido com JLinkCDC.inf, eu adicioneiDriverPackageType=PlugAndPlay para o arquivo INF e encurtei os nomes dos arquivos: os arquivos agora são chamados de polser.cat e polser.inf. Ainda sem sorte!

Editar # 7: algum sucesso!

Eu penso que as seguintes coisas são verdadeiras; Por favor corrija-me se eu estiver errado:

Para um pacote de driver (arquivo .cat), a opção correta parasigntool verify é/pa. Eu deduzo isso deKMCS_Walkthrough.doc.Para um pacote de driver, o Windows só considera o editor para ser verificado se a cadeia de confiança voltar para um certificado na pasta "Autoridades de certificação raiz confiáveis" em certmgr.msc.Para um pacote de driver, você pode assiná-lo com um certificado cruzado (estendendo a cadeia de confiança do gdroot-g2.crt para a raiz de verificação de código da Microsoft), mas o Windows parece ignorar isso. Isso ocorre porque a raiz de verificação de código da Microsoft não é uma "autoridade de certificação raiz confiável".Existem armazenamentos de certificados para o usuário atual e certificados para a máquina local. Ambos são importantes, então você deve usar oSnap-in de certificados MMC para ver os dois. Certmgr.msc mostra apenas os para o usuário atual.janelasdeve adicionar sem problemas a "Autoridade de Certificação Raiz do Go Daddy - G2" (gdroot-g2.crt) para a pasta "Autoridades de Certificação Raiz Confiáveis" quando necessário, baixando-a do Windows Update, mas isso não acontece.Mais informações aqui.

Eu usei o Visualizador de Eventos do Windows na máquina de teste para ver o que estava acontecendo. Parece que o Windows buscará automaticamente "Autoridade de Certificação Raiz do Go Daddy - G2", mas somente depois que ele exibir a caixa de diálogo de aviso do fornecedor não verificado indesejável. Assim que o usuário fecha essa caixa de diálogo, o certificado é buscado no Windows Update, portanto, a próxima tentativa de instalação deve ser bem-sucedida. Curiosamente, ele faz o download automático do certificado Starfield (que é a raiz na cadeia de confiança do timestamp) em tempo hábil.

Eu obtive minha assinatura para trabalhar com computadores Windows 7 e Windows Vista clicando duas vezes em gdroot-g2.crt e importando-o antes de tentar instalar os drivers. Verei se esse processo pode ser automatizado e adicionado a um instalador.

Eu encontrei um pacote de driver de outra empresa (JLinkCDC.cat) que foi assinado com um certificado da VeriSign, com base em "VeriSign Classe 3 Public Primary Certification Authority - G5". Esse certificado está em todos os computadores que eu olhei, então se você for com a VeriSign ao invés do Go Daddy, eu acho que você pode evitar esse problema com o Windows Update.

Eu notei que os certificados VeriSign usam SHA1 enquanto meus certificados Go Daddy usam SHA256 para o algoritmo de assinatura e algoritmo hash de assinatura. Não tenho certeza se isso importa.

Editar nº 8: perguntado pela Microsoft por ajuda

Veja a discussão e minha conclusão nos fóruns do MSDN:http://social.msdn.microsoft.com/Forums/en-US/wdk/thread/1fede768-7925-4f30-8eef-ce5bd08b0b60

questionAnswers(4)

yourAnswerToTheQuestion