Eu tenho um arquivo EXE que gostaria de assinar para que o Windows não avise o usuário final sobre um aplicativo de um "editor desconhecido". Eu não sou desenvolvedor de Windows. O aplicativo em questão é um protetor de tela gerado a partir de um aplicativo que gera aplicativos de proteção de tela. Como tal, não tenho influência sobre como o arquivo é gerado.
Já descobri que precisarei de um certificado de assinatura de código de uma CA como a Verisign ou instantssl.com. O que não entendo é o que preciso fazer (se possível) para assinar meu arquivo EXE. O que é uma explicação simples?
A resposta de Mel Green me levou mais longe, mas o signtool quer que eu especifique qual certificado usar em qualquer caso. Posso obter um certificado de assinatura de código gratuito de alguma forma para testar se isso funcionará para mim?
Especifique também que tipo de certificado é o correto. A maioria dos sites menciona apenas "assinatura de código" e fala sobre aplicativos de assinatura que são realmente compilados pelo usuário. Este não é o meu caso.
fonte
Respostas:
Você pode tentar usar a Ferramenta de Sinais da Microsoft
Você faz o download como parte do Windows SDK para Windows Server 2008 e .NET 3.5. Depois de baixado, você pode usá-lo na linha de comando da seguinte maneira:
Isso assina um único executável, usando o "melhor certificado" disponível. (Se você não tiver um certificado, ele mostrará uma mensagem de erro do SignTool.)
Ou você pode tentar:
Isso iniciará um assistente que orientará você na assinatura do aplicativo. (Esta opção não está disponível após o Windows SDK 7.0.)
Se você deseja obter um certificado que você pode usar para testar seu processo de assinatura do executável, use a ferramenta .NET Makecert .
Ferramenta de criação de certificados (Makecert.exe)
Depois de criar seu próprio certificado e usá-lo para assinar seu executável, você precisará adicioná-lo manualmente como uma CA raiz confiável para sua máquina para que o UAC diga ao usuário que o executa que é de uma fonte confiável. Importante . A instalação de um certificado como ROOT CA colocará em risco a privacidade dos usuários. Veja o que aconteceu com a DELL. Você pode encontrar mais informações para fazer isso no código e no Windows em:
Pergunta de estouro de pilha Instale certificados no armazenamento de certificados de usuário local do Windows em C #
Instalando um certificado autoassinado como uma CA raiz confiável no Windows Vista
Espero que isso forneça mais algumas informações para quem tentar fazer isso!
fonte
Eu tive o mesmo cenário no meu trabalho e aqui estão nossas descobertas
A primeira coisa que você precisa fazer é obter o certificado e instalá-lo no seu computador; você pode comprar um de uma Autoridade de Certificação ou gerar um usando o makecert .
Aqui estão os prós e contras das 2 opções
Compre um certificado
Gere um certificado usando Makecert
Assine o arquivo executável
Existem duas maneiras de assinar o arquivo que você deseja:
Usando um certificado instalado no computador
signtool.exe assina / a / s MY / sha1 sha1_thumbprint_value / t http://timestamp.verisign.com/scripts/timstamp.dll / v "C: \ filename.dll"
Usando um arquivo de certificado
signtool sign / tr http://timestamp.digicert.com / td sha256 / fd sha256 / f "c: \ caminho \ para \ mycert.pfx" / p pfxpassword "c: \ caminho \ para \ arquivo.exe"
Teste sua assinatura
Método 1: usando o signtool
Vá para: Iniciar> Executar Digite CMD> clique em OK No prompt de comando, digite o diretório em que a ferramenta de assinatura existe Execute o seguinte:
signtool.exe verifica / pa / v "C: \ filename.dll"
Método 2: usando o Windows
Clique com o botão direito do mouse no arquivo assinado. Selecione Propriedades. Selecione a guia Assinaturas digitais. A assinatura será exibida na seção Lista de assinaturas.
Espero que isso possa ajudá-lo
Fontes:
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/ms537361(v=vs.85)
https://www.digicert.com/code-signing/signcode-signtool-command-line.htm
https://knowledge.symantec.com/support/code-signing-support/index?page=content&id=SO15544&actp=search&viewlocale=en_US
https://msdn.microsoft.com/en-us/library/windows/desktop/aa386968(v=vs.85).aspx
fonte
Você pode obter um certificado de assinatura de código barato
gratuitoda Certum se estiver desenvolvendo código-fonte aberto.Uso o certificado deles há mais de um ano e ele se livra da mensagem desconhecida do editor do Windows.
No que diz respeito à assinatura do código, eu uso o signtool.exe a partir de um script como este:
fonte
A revista ASPects da ASP ASP tem uma descrição detalhada de como assinar código (você precisa ser um membro para ler o artigo). Você pode baixá-lo em http://www.asp-shareware.org/
Aqui está o link para uma descrição de como você pode criar seu próprio certificado de teste .
Isso também pode ser interessante.
fonte
Outra opção, se você precisar assinar o executável em uma caixa Linux, é usar o código de sinal das ferramentas de projeto Mono . É suportado no Ubuntu .
fonte
Referência https://steward-fu.github.io/website/driver/wdm/self_sign.htm Nota: signtool.exe do Microsoft SDK
1.primeira vez (para fazer cert privado)
Makecert -r -pe -ss YourName YourName.cer
certmgr.exe -adicione YourName.cer -s -r raiz localMachine
2.Depois (para adicionar seu sinal ao seu aplicativo)
signtool sign / s YourName YourApp.exe
fonte
E ainda outra opção, se você estiver desenvolvendo no Windows 10, mas não tiver o signtool.exe da Microsoft instalado, poderá usar o Bash no Ubuntu no Windows para assinar seu aplicativo. Aqui está um resumo:
https://blog.synapp.nz/2017/06/16/code-signing-a-windows-application-on-linux-on-windows/
fonte
osslsigncode
também está disponível emcygwin
, portanto, se você já estiver usando isso (como eu sou), poderá entrar no seu ambiente atual, em vez de precisar mudar para a WSL.Use o link a seguir para assinar o arquivo .exe (instalação / instalação) (assinar o arquivo exe / instalação sem usar a ferramenta de instalação da Microsoft)
https://ebourg.github.io/jsign/#files
comando de amostra java -jar jsign-2.0.jar --keystore keystore.jks "- alias alias --storepass password MyInstaller.exe
Trabalhou para mim :)
fonte
Esta não é uma resposta direta à pergunta, mas está intimamente relacionada (e útil, espero), uma vez que mais cedo ou mais tarde um programador terá colocado a mão na carteira:
Portanto, os preços da assinatura EV:
1 ano $ 350 + (taxa oculta de $ 50)
2 anos $ 600
3 anos $ 750
[www.ksoftware.net] [3]
eToken enviado como pendrive. Não é necessário leitor.
Você compra na Comodo (Sectigo)
1 ano 350 euros
3 anos 799 euros
sklep.certum.pl
1 ano $ 499 USD
3 ano $ 897 USD
sectigo.com
1 ano $ 410 total
2 anos $ 760 total
3 anos $ 950 total
www.globalsign.com
1 ano: $ 600 (era $ 104)
3 anos:?
www.digicert.com
1 ano: US $ 700
3 anos: caro ridículo
[ https://trustcenter.websecurity.symantec.com/]
Mais preços aqui:
https://cheapsslsecurity.com/sslproducts/codesigningcertificate.html
Veja também o link adicionado por Erick Castrillo: cheappsslsecurity.com/sslproducts/codesigningcertificate.html
fonte