Como o dotnetup verifica os downloads

Note

dotnetup está em versão prévia pública. Seus recursos e comportamento podem mudar antes da disponibilidade geral.

dotnetupverifica os .NET SDKs e runtimes que ele baixa antes de extraí-los. O tipo de verificação depende de onde o build vem.

Builds lançadas

Para builds lançados, dotnetup usa uma cadeia de confiança que começa com um manifesto de versão assinado:

  1. dotnetupbaixa os manifestos de versão do .NET. Esses manifests são o índice de releases e o arquivo releases.json para cada canal.
  2. dotnetup verifica a assinatura de código destacada (.p7s arquivo) de cada arquivo de manifesto. Se a assinatura estiver ausente ou não for válida, o comando falhará.
  3. O manifesto verificado contém o hash SHA-512 de cada arquivo.
  4. dotnetup baixa o arquivo e compara seu hash SHA-512 com o hash no manifesto. Se os hashes não corresponderem, o comando falhará e dotnetup não extrairá o arquivo compactado.

Como o manifesto assinado fixa o hash de cada arquivo compactado, dotnetup não verifica uma assinatura separada para cada arquivo compactado.

A verificação de assinatura também verifica o status de revogação de certificado online. Permitir o acesso aos pontos de extremidade de revogação de certificado necessários. Se a rede bloquear essas verificações, a verificação falhará e dotnetup interromperá a instalação, mesmo quando a assinatura for válida.

Expiração do manifesto

Os manifests de release contêm um tempo de expiração. dotnetup verifica se o manifesto não expirou, mesmo que seus hashes de assinatura e arquivo sejam válidos. Ele também verifica se o arquivo de manifesto foi assinado antes do tempo de expiração.

Um relógio do sistema incorreto ou um manifesto expirado podem causar falha na verificação. Para obter diretrizes de recuperação, consulte Um manifesto de versão expirou.

Certificados confiáveis

Para assinaturas de manifesto e seus carimbos de data/hora, dotnetup usa certificados raiz confiáveis agrupados com a ferramenta. Ele não adiciona certificados do repositório de confiança do sistema operacional a essas raízes de confiança.

Adicionar um certificado ao repositório de confiança do sistema operacional não faz com que dotnetup confie em uma assinatura de manifesto de versão da cadeia desse certificado. A assinatura deve satisfazer a política de verificação do dotnetup e encadear até uma raiz confiável incluída no pacote.

Builds de pré-lançamento diários e não listados

Os builds diários e as versões de pré-lançamento que não estão no manifesto de versão assinado são provenientes de um feed diferente. Esses builds têm um arquivo de hash SHA-512, mas nenhuma assinatura de código. Para esses builds, dotnetup verifica apenas o hash SHA-512.

dotnetup usa esse caminho quando você instala:

  • Um canal diário, como daily ou 10.0-daily.
  • Uma versão de pré-lançamento totalmente especificada, como 10.0.100-preview.4.25216.37, que não está no manifesto da versão.

Antes do início da instalação, dotnetup mostra este aviso:

⚠ Daily builds are not code-signed. Only the SHA-512 hash is verified.

Para obter mais informações sobre builds diários, consulte Usar versões prévias e builds diários.

Bloquear downloads não assinados

Os administradores podem bloquear a instalação de builds que não têm assinatura de código. Quando essa política estiver em vigor, dotnetup ainda instalará builds lançados, mas as instalações de builds de pré-lançamento diários e não listados falharão.

Windows

Crie o valor de registro BlockUnsignedDownloads como um REG_DWORD com um valor diferente de zero em HKLM\SOFTWARE\Policies\Microsoft\dotnet\Dotnetup. Por exemplo, execute estes comandos em uma sessão do PowerShell com privilégios elevados:

$key = 'HKLM:\SOFTWARE\Policies\Microsoft\dotnet\Dotnetup'
New-Item -Path $key -Force | Out-Null
New-ItemProperty -Path $key -Name 'BlockUnsignedDownloads' -PropertyType DWord -Value 1 -Force | Out-Null

Para limpar a política, exclua o valor ou defina-o como 0.

Linux e macOS

Crie o /etc/dotnet/dnup-block-unsigned-downloads arquivo. O conteúdo do arquivo não importa. Por exemplo:

sudo mkdir -p /etc/dotnet
sudo touch /etc/dotnet/dnup-block-unsigned-downloads

Para remover a política, exclua o arquivo.

Instalações bloqueadas

Quando a política bloqueia uma instalação, dotnetup mostra um erro semelhante à seguinte mensagem:

An IT policy on this machine requires code-signed downloads. Installing daily or unsigned prerelease builds of SDK <version> is blocked. Choose a released version, or have an administrator clear the policy ...

Para continuar, instale uma versão lançada ou peça ao administrador para remover a política.

O executável dotnetup

Os get-dotnetup scripts de download verificam o executável baixado dotnetup com seu arquivo de soma de verificação SHA-512. Para obter mais informações, consulte Introdução ao dotnetup.

Consulte também