Estou tentando assinar um pacote appx do Windows 8 com um arquivo pfx que tenho. Estou usando um comando assim:
signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"
E a partir disso, recebo:
Erro SignTool: Não foram encontrados certificados que atendiam a todos os critérios especificados.
Quais "critérios" não estou cumprindo? Isso é apenas para teste, portanto, esses são certificados autoassinados. Tentei importar a chave e depois assiná-la, mas sempre resulta no mesmo erro. Como faço para corrigir isso?
Signtool
está tentando encontrar o certificado no armazenamento de certificados raiz confiáveis e você não tem certificados de assinatura de código lá.Respostas:
Ao obter esse erro pelo Visual Studio, foi porque havia uma configuração de certificado de assinatura para corresponder ao computador em que foi originalmente desenvolvido.
Você pode verificar isso acessando as propriedades do projeto> guia assinatura e verificando os detalhes do certificado.
Você pode desmarcar a opção "Assinar os manifestos do ClickOnce" para desativar a assinatura.
Se você não deseja desativar esta opção, precisará instalar o certificado.
fonte
Tente com / debug. 1,2 Como em:
Isso ajudará você a descobrir o que está acontecendo. Você deve obter uma saída como esta:
Você pode ver qual filtro está fazendo com que seu certificado não funcione ou se nenhum certificado foi considerado.
Mudei os hashes e outras informações, mas você deve entender. Espero que isto ajude.
1 Observe:
signtool
é específico sobre onde a/debug
opção é colocada. Ele precisa ir atrás dasign
declaração.2 Observe também: a
/debug
opção funciona apenas com algumas versões dosigntool
. A versão WDK tem a opção, enquanto a versão do Windows SDK não.fonte
Sempre verifique primeiro a data de validade do seu certificado, porque a maioria dos certificados tem uma data de validade. No meu caso, o certificado expirou e eu estava tentando criar um projeto.
fonte
certutil -dump mycertificate.pfx
. Observe a última entrada, pois as primeiras são a CA, não o seu certificado de assinatura de código.Se você não precisa assinar o aplicativo, clique com o botão direito do mouse no seu projeto
Project Properties -> Signing -> uncheck "Sign the ClickOnce Manifest"
Além disso, como sugere este artigo da MS,
fonte
basta desmarcar a opção 'Assine o clique uma vez manifestado' na guia de assinatura nas propriedades do projeto, ele removerá o erro e você poderá criar um novo a partir daí.
fonte
Obteve o mesmo problema, verificou-se que a chave privada do certificado não tinha permissão.
Para corrigir - abra o gerenciamento de certificação, encontre seu certificado, clique com o botão direito do mouse -> Gerenciar chaves privadas e, em segurança, verifique se o usuário foi adicionado e recebeu permissões, que o corrigiram para mim.
fonte
No meu caso, tenho o tipo errado de certificado que estou tentando associar.
Eu tinha "Autenticação de servidor" em vez de "Assinatura de código" .
Você poderá ver isso no snap ao certificado na seção Finalidade pretendida.
Depois disso, tudo funciona bem.
fonte
Caso alguém mais se depare com isso: Meu problema acabou sendo que eu precisava executar o prompt de comando como administrador antes de usar o aplicativo signtool.exe. Então tudo funciona maravilhosamente.
fonte
Eu tive o mesmo problema no desenvolvimento de aplicativos de console e, como solução rápida ,
vá
project properties
entãoclique na
signing
guia e desmarque "Assine o ClickOnce Manifest".Descrição da imagem:
FYI Você também pode ver esta solução de vídeo em menos de um minuto . A foto acima é tirada do vídeo.
fonte
Resolvi isso usando o
/sm
sinalizador para especificar a procura na loja de máquinas em vez do padrão, que é minha loja (Usuário local). Além disso, pode ajudar a ativar a depuração do signtool usando/debug
.fonte
Eu tive esse problema e não tenho certeza de qual etapa abaixo fez funcionar, mas espero que isso ajude outra pessoa ... foi isso que eu fiz:
certmgr.msc
e exporte o certificado (encontrado em qualquer loja que você usou na 1ª etapa) como um arquivo pfx incluindo chave privada e propriedades estendidas (provavelmente desnecessárias)signtool sign /f "c:\mycert.pfx" /p mypassword /d "description" /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetPath)
que a senha é igual à fornecida durante a Exportação
fonte
.crt
arquivo que o Comodo forneceu em vez de instalar o certificado e depois exportá-lo.pfx
.Estou com o mesmo problema, lendo algumas respostas (postadas aqui), vi meu certificado expirado.
Basta criar um novo no meu projeto inicial. Em seguida, no gerenciador de certificados excluiu o certificado expirado.
Agora tudo compila bem.
fonte
Os critérios incluem nome da conta (cuja chave privada está associada), domínio, empresa, data de validade, finalidades pretendidas, entre outras coisas.
Existem muitos motivos possíveis para esse erro ocorrer, alguns já foram listados. Aqui está outra dica: Ao importar um certificado, certifique-se de trabalhar com o arquivo original recebido da autoridade de certificação (CA) , ou então algumas das propriedades podem ser perdidas.
Exemplo: recentemente tentei importar um certificado exportado de uma conta diferente na mesma máquina. O certificado tornou-se visível para minha conta, mas não estava associado à minha conta e, como resultado,
signtool
se recusou a reconhecê-lo sem fornecer explicitamente o nome do arquivo e uma senha. Que, quando feito como parte do processo de compilação e gravado explicitamente em um arquivo em lotes ou arquivo de origem, pode não ser suficientemente seguro. (A importação do certificado original emitido pela CA o resolveu.)fonte
Eu tive a mesma mensagem " Após o filtro de chave privada, restam 0 certs " e passei grande parte da minha vida tentando descobrir o que a mensagem significava.
O problema era que eu havia instalado o certificado incorretamente no repositório de certificados do Windows, portanto não havia chave privada associada ao certificado de assinatura de código.
O que eu deveria ter feito foi o seguinte:
Usando o Firefox ou o Internet Explorer, envie a solicitação ao emissor. Isso gera uma chave privada que é armazenada silenciosamente pelo navegador (uma caixa de diálogo aparece por uma fração de segundo no Firefox). Observe que outros navegadores podem não funcionar: sua vida é muito curta para descobrir se eles funcionam.
Envie a solicitação, pule pelos aros e laços de validação do emissor, sacrifique uma cabra, ore aos deuses, envie uma declaração assinada por seus bisavós, etc.
Faça o download do certificado (.crt) e importe-o para o mesmo navegador . O navegador agora possui a chave privada e o certificado .
Exporte o certificado do navegador como um arquivo de troca de informações pessoais (.p12). Você será solicitado a fornecer uma senha para proteger este arquivo.
Mantenha uma cópia de backup do arquivo .p12.
Execute o Gerenciador de Certificados (certmgr.msc), clique com o botão direito do mouse no armazenamento de certificados pessoais , selecione Todas as tarefas / Importar ... e importe o arquivo .p12 para o Windows. Você será solicitado a senha usada para proteger o arquivo. Nesse momento, dependendo dos requisitos de segurança, você pode marcar a chave como exportável para restaurar uma cópia da loja do Windows. Você também pode marcar que uma senha é necessária antes do uso, se desejar interromper scripts em lote.
Execute a ferramenta signool com sucesso, respire aliviado e pondere quanto da sua vida você desperdiçou devido a mensagens de erro incorretas e documentação insuficiente ou ausente.
fonte
Eu tive esse problema também, tentei muito. Usei o SDK e a assinatura do Visual Studio, mas em todos os lugares recebi "Não foram encontrados certificados que atendam a todos os critérios".
Solução: lembre-se de que, se "depois do filtro de chave privada": '0 esquerda' aparecer com a opção signtool sign / debug ..., a causa é que o seu PC não possui a CA na loja. Para resolver isso, instale primeiro a CA (no meu caso, um arquivo .crt) e execute o sinal novamente. Deve funcionar agora!
O Signtool somente pode ser usado com uma autoridade de certificação solicitada e de propriedade do mesmo PC.
fonte
Meu problema acabou sendo que eu não entendia as opções da ferramenta de ferramentas. Eu havia fornecido a opção / n com algo que não correspondia ao meu certificado. Quando tirei isso, ele parou de reclamar.
fonte
Eu tive um problema semelhante: o nome do computador foi alterado e o certificado expirou. Consegui resolver esse problema criando um novo certificado de teste.
No Visual Studio, clique com o botão direito do mouse no projeto no Solution Explorer. Selecione propriedades. Selecione a janela de propriedades Entrando. Clique em "Criar certificado de teste ....". Digite as informações da senha para o certificado de teste e clique em ok.
fonte
Com / debug, quando você recebe esta mensagem "Após o filtro de chave privada, restam 0 certs.", Um motivo pode ser que o arquivo pfx não tenha a chave privada. Ao exportar o certificado instalado para o arquivo pfx, ative a caixa de seleção para incluir também a chave privada.
fonte
Vá para
project properties
e desmarque todos os campos doFirm
antes de iniciar a compilaçãofonte