Assinar um ficheiro EXE do Windows
Tenho um ficheiroEXE que gostaria de assinar para que o Windows não Alerte o utilizador final sobre uma aplicação de um "editor desconhecido". Eu não sou um desenvolvedor do Windows. A aplicação em questão é um protector de ecrã gerado a partir de uma aplicação que gera aplicações de protecção de ecrã. Como tal, não tenho influência sobre como o arquivo é gerado.
já descobri que vou precisar de um Código de assinatura de um CA como Verisign ou instantssl.com. o que eu não entendo é o que eu preciso fazer (se for possível) para assinar o meu arquivo EXE. O que é uma explicação simples?
A resposta do Mel Green levou-me mais longe, mas a signtool quer que especifique que Certificado usar. Posso obter um certificado de assinatura de código grátis de alguma forma para testar se isso vai funcionar para mim em tudo?indique também qual o tipo de certificado correcto. A maioria dos sites só mencionam "assinatura de código" e falam sobre aplicações de assinatura que são realmente compilados pelo Usuário. Não é o caso para mim.
9 answers
Pode tentar usar a Ferramenta de Sinais da Microsoft
Faz o download como parte do SDK do Windows para o Windows Server 2008 e o.NET 3.5. Uma vez baixado, você pode usá-lo a partir da linha de comando assim:
Signtool sign / a MyFile.exe
Isto assina um único executável, usando o "melhor certificado" disponível. (Se você não tem certificado, ele irá mostrar uma mensagem de erro SignTool.)
Ou podes tentar:
Signtool signwizard
Isto irá lançar um assistente que o ajudará a assinar a sua aplicação. (Esta opção não está disponível após o Windows SDK 7. 0.)
Se quiser obter um certificado que possa usar para testar o seu processo de assinatura do executável, poderá usar a ferramenta. net Makecert .
Ferramenta De Criação De Certificados (Makecert.exe)
Depois de ter criado o seu próprio certificado e o ter usado para assinar o seu executável, é necessário adicioná-lo manualmente como uma AC raiz de confiança para a sua máquina, a fim de UAC para dizer ao utilizador que está a executá-lo que é de uma fonte de confiança. importante . a instalação de um certificado como ROOT CA colocará em risco a privacidade dos seus utilizadores. Olha o que aconteceu com o DELL. Você pode encontrar mais informações para realizar isso em código e através do Windows em: Espero que isso forneça mais informações para quem tentar fazer isto!A primeira coisa que você tem a fazer é obter o certificado e instalar no seu computador, você pode comprar um de um Autoridade de certificação ou gerar um usando makecert.
Aqui estão os prós e contras das 2 opções
Comprar um certificado
-
prós
- utilizando um certificado emitido por uma AC (Autoridade responsável pelo certificado) poder certifique-se de que o Windows não alertará o utilizador final sobre uma aplicação de um "editor desconhecido" em qualquer computador que utilize o certificado da CA (OS normalmente vem com os certificados de raiz de manny CA's)
-
conts:
-
Há um custo envolvido em obter um certificado de uma CA
Para os preços, ver https://cheapsslsecurity.com/sslproducts/codesigningcertificate.html e https://www.digicert.com/code-signing/
-
Há um custo envolvido em obter um certificado de uma CA
Gerar um certificado com o Makecert
-
prós:
- os passos são fáceis e você pode partilhar o certificado com os utilizadores finais
-
conts:
- os utilizadores finais terão de instalar manualmente o certificado nas suas máquinas e dependendo dos seus clientes que possam não ser uma opção
- certificados gerados com os makecert são normalmente utilizados para o desenvolvimento e ensaio, não para a produção
Assinar o ficheiro executável
Há duas formas de assinar o ficheiro que queres:-
Usando um certificado instalado no computador
signtool.exe sign /a /s MY /sha1 sha1_thumbprint_value /t http://timestamp.verisign.com/scripts/timstamp.dll /v "C:\filename.dll"
- neste exemplo, estamos a usar um certificado guardado na pasta pessoal com uma impressão digital SHA1 (esta impressão digital vem do certificado) para assinar o ficheiro localizado em
C:\filename.dll
- neste exemplo, estamos a usar um certificado guardado na pasta pessoal com uma impressão digital SHA1 (esta impressão digital vem do certificado) para assinar o ficheiro localizado em
-
Usando um ficheiro de certificado
signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /f "c:\path\to\mycert.pfx" /p pfxpassword "c:\path\to\file.exe"
- neste exemplo estamos a usar o certificado
c:\path\to\mycert.pfx
com a senhapfxpassword
para assinar o ficheiroc:\path\to\file.exe
- neste exemplo estamos a usar o certificado
Teste A Sua Assinatura
-
Método 1: Utilizar signtool
Ir para: iniciar > correr
TipoCMD
> carregue em OK
Na linha de comandos, indique a pasta ondesigntool
Existe
Executar o seguinte:signtool.exe verify /pa /v "C:\filename.dll"
-
Método 2: Utilizar O Windows
Carregue com o botão direito no ficheiro assinado
Seleccionar As Propriedades De
Seleccione a página assinaturas digitais. A assinatura será apresentada na secção lista de assinaturas.
Fontes:
Você pode obter um freecheap code signing certificate do Certum Se estiver a fazer o desenvolvimento de código aberto.
No que diz respeito a assinar o código, Uso signtool.exe de um guião como este:
signtool.exe sign /t http://timestamp.verisign.com/scripts/timstamp.dll /f "MyCert.pfx" /p MyPassword /d SignedFile.exe SignedFile.exe
Os aspectos da revista ASP têm uma descrição detalhada sobre como assinar o código (você tem que ser um membro para ler o artigo). Você pode baixá-lo através de http://www.asp-shareware.org/
Aqui está a ligação para uma descrição de como pode fazer o seu próprio certificado de teste.
Outra opção, se precisar de assinar o executável numa caixa Linux, é usar signcode das ferramentas do projecto Mono . É suportado no Ubuntu .
Referência https://steward-fu.github.io/website/driver/wdm/self_sign.htm Nota: signtool.exe da Microsoft SDK
1.Primeira vez (para fazer certificado privado)
Makecert - r-pe-ss o teu nome.cer
Certmgr.exe-adicione o seu nome.raiz de cer-s-r localmachina
2.Depois (para adicionar o seu sinal à sua aplicação)
Signtool sign /s o seu nome YourApp.exeUtilize a seguinte ligação para assinar .ficheiro exe (setup/ installer) (assinar o ficheiro exe/setup sem usar o Microsoft setup signtool)
Https://ebourg.github.io/jsign/#files
Comando Sample java-jar jsign-2.0.jar ... Keystone Keystone.jks", também conhecido por storepass password MyInstaller.exe
Funcionou para mim:]
Esta não é uma resposta directa à pergunta, mas está intimamente relacionada (e espero que seja útil) uma vez que, mais cedo ou mais tarde, um programador terá posto a mão na carteira:
Os preços da Assinatura EV (OV não ajuda muito):
1 ano 379 euros
en.sklep.certum.pl
(apenas para os utilizadores Polacos)
1 ano 350 $ + (50 $ taxa escondida)
2 anos 600 $
3 anos 750
(OV: $84 por ano)
www.ksoftware.net
eToken enviado como USB Stick. Não é preciso ler. Você realmente compra do Comodo (Sectigo). São muito lentos.
1 ano 364 euros+19% IVA
(OV 69+IVA)
www.leaderssl.de
1 ano 499 USD
3 anos 897 USD
sectigo.com
1 ano 410 $total
2 anos $760 total
3 anos 950 $total
www.globalsign.com
1 ano: 600 dólares (foram 104 dólares)
3 Anos: ?
www.digicert.com
1 ano: $700
3 anos: ridículo expensive
[symantec.com]
cheapsslsecurity.com codificar EV
cheapsslsecurity.com só SSL!
E mais uma opção, se estiver a desenvolver no Windows 10, mas não tiver o signtool da Microsoft.o exe instalado, pode usar o Bash no Ubuntu no Windows para assinar a sua aplicação. Aqui está um run down:
Https://blog.synapp.nz/2017/06/16/code-signing-a-windows-application-on-linux-on-windows/