Como posso evitar necessidade de re-assinar o meu código a cada 1 ou 2 anos?
-
06-09-2019 - |
Pergunta
Eu estava lendo O que acontece quando um certificado de assinatura de código expira - Stack estouro e se perguntando sobre uma resposta mais sólida. A resposta dada foi mais sobre como configurar o seu próprio CA. Mesmo com seu próprio CA você ainda vai precisar para lidar com vencimento certificados de código.
Se você assinou o código sem usar um tempo de carimbar serviço, após o certificado expirar o seu código não será mais confiável, e dependendo das definições de segurança não podem ser autorizados a executar. Você precisará assinar novamente todo o seu código com um novo certificado, ou com um certificado renovado, a cada 1 ou 2 anos.
Trusted timestamping (digital) permite a assinatura digital para ser válido mesmo depois de o próprio certificado expirou. Você precisaria de código re-assinar com o novo certificado somente se você tiver feito alterações.
Será que isso tudo som correto? Se assim for, eu preciso de recomendações sobre o serviço timestamping para uso, de preferência de alguém que realmente tem usado um. Eu também gostaria de saber se existem soluções internas, semelhante a ser seu próprio CA.
Agora isso se aplica a scripts do PowerShell, mas eu acabará por ter o mesmo problema com outro código.
Atualizar : Amostra de como assinar um script PS com um timestamp (você pode fazer um script para isso):
Set-AuthenticodeSignature -filepath "D:\Projects\A Sample\MyFile.ps1"
-cert gci cert:\CurrentUser\My -codesigning
| where -Filter {$_.FriendlyName -eq "Thawte Code Signing"}
-IncludeChain All
-TimeStampServer "http://timestamp.verisign.com/scripts/timstamp.dll"
Então, para ver o Certificado e TimeStamper certificado do assinante, você pode fazer isso:
Get-AuthenticodeSignature MyFile.ps1 | fl *
Ela dá-lhe o assunto (CN, OU, etc.), Emissora, antes / depois datas e Impressões digitais, tanto para o seu cert e cert do TimeStamper. Você também recebe uma mensagem indicando o status da assinatura.
Solução
Você é melhor fora selecionando um dos fornecedores de certificados confiáveis ??(VeriSign, Thawte, Comodo, etc.). Isso permite que você assinar o seu software sem que o usuário confiar explicitamente sua CA raiz privado Nós usamos tanto Verisign e Thawte, Comodo mesmo GoDaddy com timestamping sem quaisquer problemas com o software tornando-se mesmo anos inválidos depois que o certificado expirar.
Outras dicas
Tempo stamping é um serviço gratuito - é realmente apenas uma fornecedora confiável de verificar que você assinou o arquivo em um determinado momento. serviço timestamp da Verisign é o padrão. O último exemplo na ajuda para Set-AuthenticodeSignature demonstra como usá-lo.
Lee Holmes [MSFT] Desenvolvimento do Windows PowerShell Microsoft Corporation
Você não pode realmente escapar ter que renunciar código eventualmente. A vantagem de executar o seu próprio CA é que você pode optar por emitir os seus certificados de assinatura de código com vida útil mais longa do que o padrão, permitindo assim que você esperar mais tempo antes de ter que renunciar nada. A desvantagem é, naturalmente, ter outro serviço ou servidor (o seu CA) para lidar com eles.