Assinatura de Pacotes VSIX
Os conjuntos de extensão não precisam ser assinados antes de poderem correr no Visual Studio, mas é uma boa prática fazer isso.
Adicionar uma assinatura digital a um pacote VSIX protege sua extensão e evita adulterações. Durante a instalação, o instalador do VSIX exibe a assinatura e um link para o certificado. Se o conteúdo do VSIX for modificado sem atualizar a assinatura, o instalador apenas avisa o usuário de uma assinatura de pacote inválida. Este guia pressupõe que já criou umVSIX.
Obter um certificado de assinatura de código
Certificados válidos podem ser obtidos de uma autoridade de certificação pública, como:
A lista completa de autoridades de certificação confiáveis pelo Windows também pode ser obtida em http://aka.ms/trustcertpartners.
Você pode usar certificados autoemitidos para fins de teste. No entanto, pacotes VSIX assinados usando certificados auto-emitidos não são aceitos pelo Visual Studio Marketplace. Saiba mais sobre como gerar certificados autoassinados com o .NET CLI.
Assinando um VSIX com a Sign CLI
VSIXSignTool foi preterido em favor de Sign CLI (github.com). Essa ferramenta é publicada no NuGet como uma ferramenta dotnet em Sign (nuget.org) e dá suporte à assinatura local ou ao uso da assinatura na nuvem do Azure Key Vault.
Para assinatura local, a CLI de Assinatura suporta certificados e chaves privadas armazenados em qualquer combinação destes locais:
- Ficheiros
PFX
,P7B
ouCER
- Importado para o Gerenciador de Certificados do Windows
- Armazenado em um dispositivo USB com acesso através de um Cryptographic Service Provider (CSP)
Instalando a CLI do Sign
Abra uma instância do Developer PowerShell.
Verifique se nuget.org foi adicionado e habilitado como uma fonte do NuGet.
- Verifique suas fontes usando
dotnet nuget list source
- Adicione NuGet.org como fonte usando
dotnet nuget add source -n NuGet.org https://api.nuget.org/v3/index.json
- Verifique suas fontes usando
Instale o Sign executando
dotnet tool install sign --version <version> --global
, onde<version>
é a versão mais recente disponível em Sign (nuget.org).-
--global
é opcional e instala a ferramenta no local padrão das ferramentas .NET que é adicionada automaticamente à variável de ambiente PATH.
-
Instalação offline do Sign CLI
Para ambientes isolados, você pode baixar o pacote NuGet Sign CLI mais recente e instalá-lo usando:
dotnet tool install --global --add-source <path-to-folder> <tool-name> --version <version>
Por exemplo:
dotnet tool install --global --add-source D:\NuGetTools sign --version 99.0
Usando a CLI de Assinatura
Uma vez instalado, o Sign CLI pode ser acessível numa instância do Developer PowerShell usando sign code <command> <options>
. Para obter um detalhamento das opções, consulte Referência de CLI de assinatura para pacotes VSIX. Você pode obter ajuda da linha de comando digitando sign code -h
.
Importante
A CLI de assinatura suporta apenas SHA-256
, SHA-384
e SHA-512
como algoritmos de impressão digital válidos. Você pode usar o PowerShell para obter impressões digitais usando: Get-FileHash -Algorithm SHA256 <path to .cer file> | Format-Table -AutoSize
- Assinatura usando um arquivo PFX com uma impressão digital SHA-256:
sign code certificate-store -cfp 80BB567B...52CB95D4C -cf "D:\Certs\f5ec6169345347a7cd2f83af662970d5d0bfc914.pfx" -d "My VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"
Observação
Os arquivos PFX contêm certificado e chave privada usados para assinatura e não estão em conformidade com os requisitos do C/A Browser Forum para Validação Estendida (EV) e assinatura não-EV. recomenda-se usar apenas chaves privadas armazenadas em um dispositivo HSM (Hardened Secure Module) e acessá-las usando um CSP (Provedor de Serviços de Criptografia).
- Assinatura usando o Microsoft Certificate Manager e uma impressão digital SHA512 (opção-csp):
sign code certificate-store -cfp A87A60A6F...894559B98 -csp "Microsoft Software Key Storage Provider" -d "VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"
- Assinar usando uma chave privada em uma unidade USB (opção-csp):
sign code certificate-store -cfp B113E82D...F5CF294BE0B -csp "eToken Base Cryptographic Provider" -d "VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"
- Assinatura usando uma unidade USB usando um contêiner de chave específico (opções-csp e -k):
sign code certificate-store -cfp 15BB56B0...1ACB959D0 -csp "eToken Base Cryptographic Provider" -k "NuGet Signing.629c9149345347cd2f83af6f5ec70d5d0a7bf616" -d "VSIX Signature" -t "http://timestamp.acs.microsoft.com/" "C:\Users\Contoso\Downloads\FingerSnapper2022.vsix"