Como o dotnetup verifica as transferências

Note

dotnetup está em pré-visualização pública. As suas funcionalidades e comportamento podem mudar antes da disponibilidade geral.

dotnetup verifica os SDKs .NET e os runtimes que transfere antes de os extrair. O tipo de verificação depende de onde vem a build.

Versões lançadas

Para versões lançadas, dotnetup usa uma cadeia de confiança que começa com um manifesto de lançamento assinado:

  1. dotnetup transfere os manifestos de lançamento do .NET. Estes manifests são o índice de lançamentos e o ficheiro releases.json para cada canal.
  2. dotnetup verifica a assinatura de código desanexada (.p7s ficheiro) de cada ficheiro de manifesto. Se a assinatura estiver em falta ou não for válida, o comando falha.
  3. O manifest verificado contém o hash SHA-512 de cada arquivo compactado.
  4. dotnetup descarrega o ficheiro e compara o seu hash SHA-512 com o hash do manifesto. Se os hashes não coincidirem, o comando falha e dotnetup não extrai o ficheiro.

Porque o manifesto assinado fixa o hash de cada ficheiro, dotnetup não verifica uma assinatura separada para cada ficheiro.

A verificação de assinatura também verifica o estado da revogação de certificados online. Permitir o acesso aos endpoints de revogação de certificados. Se a rede bloquear estas verificações, a verificação falha e dotnetup interrompe a instalação, mesmo quando a assinatura é válida.

Validade do manifesto

Os manifestos de lançamento contêm um tempo de validade. dotnetup verifica se o manifesto não expirou, mesmo que os hashes da assinatura e do arquivo compactado sejam válidos. Também verifica se o ficheiro de manifesto foi assinado antes do prazo de expiração.

Um relógio do sistema incorreto ou um manifesto expirado podem causar falhas na verificação. Para orientações sobre recuperação, consulte Um manifest de versão expirou.

Certificados confiáveis

Para assinaturas de manifestos e os seus carimbos temporais, dotnetup utiliza certificados raiz de confiança incluídos com a ferramenta. Não adiciona certificados do trust store do sistema operativo a essas raízes de trust.

Adicionar um certificado ao armazenamento de confiança do sistema operativo não faz com que dotnetup confie numa assinatura de manifesto de lançamento da cadeia desse certificado. A assinatura deve cumprir a política de verificação do dotnetup e encadear até uma raiz confiável incluída.

Versões diárias e pré-lançamento não listadas

As versões diárias e as versões pré-lançamento que não estão no manifesto de lançamento assinado, vêm de um feed diferente. Estas builds têm um ficheiro de hash SHA-512 mas sem assinatura de código. Para estas compilações, dotnetup verifica apenas o hash SHA-512.

dotnetup utiliza este caminho quando instala:

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

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 mais informações sobre builds diárias, veja Usar versões de pré-visualização e builds diárias.

Bloquear downloads não assinados

Os administradores podem bloquear a instalação de builds que não estejam assinadas por código. Quando esta política está em vigor, dotnetup continua a instalar as versões lançadas, mas as instalações de versões pré-lançamento diárias e não listadas falham.

Windows

Crie o valor de registo BlockUnsignedDownloads como um REG_DWORD com um valor diferente de zero em HKLM\SOFTWARE\Policies\Microsoft\dotnet\Dotnetup. Por exemplo, execute estes comandos numa sessão PowerShell elevada:

$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, elimine o valor ou defina-o para 0.

Linux e macOS

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

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

Para repor a política, apague o ficheiro.

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 publicada ou peça ao seu administrador para limpar a política.

O executável dotnetup

Os get-dotnetup scripts de download verificam o executável descarregado dotnetup através do seu ficheiro de soma de verificação SHA-512. Para mais informações, consulte Começar com o dotnetup.

Ver também