dotnetup이 다운로드를 확인하는 방법

Note

dotnetup 는 공개 미리보기로 제공됩니다. 해당 기능 및 동작은 정식 출시 전에 변경될 수 있습니다.

dotnetup는 다운로드한 .NET SDK 및 런타임을 추출하기 전에 확인합니다. 확인 유형은 빌드의 원본 위치에 따라 달라집니다.

릴리스 빌드

릴리스된 빌드의 경우 dotnetup는 서명된 릴리스 매니페스트로 시작하는 신뢰 체인을 사용합니다.

  1. dotnetup는 .NET 릴리스 매니페스트를 다운로드합니다. 이러한 매니페스트는 각 채널의 릴리스 인덱스와 releases.json 파일입니다.
  2. dotnetup 는 각 매니페스트의 분리된 코드 서명(.p7s 파일)을 확인합니다. 서명이 없거나 유효하지 않으면 명령이 실패합니다.
  3. 확인된 매니페스트에는 각 보관 파일의 SHA-512 해시가 포함됩니다.
  4. dotnetup 는 보관 파일을 다운로드하고 해당 SHA-512 해시를 매니페스트의 해시와 비교합니다. 해시가 일치하지 않으면 명령이 실패하며 보관 파일도 추출하지 않습니다.

서명된 매니페스트는 각 보관 파일의 해시를 고정하므로 dotnetup는 각 보관 파일에 대해 별도의 서명을 확인하지 않습니다.

서명 확인은 온라인으로 인증서 폐지 상태도 확인합니다. 필요한 인증서 폐기 확인 엔드포인트에 대한 액세스를 허용합니다. 네트워크에서 이러한 검사를 차단하는 경우 서명이 유효한 경우에도 확인이 실패하고 dotnetup가 설치를 중지합니다.

매니페스트 만료

릴리스 매니페스트에는 만료 시간이 포함됩니다. dotnetup 서명 및 보관 해시가 유효한 경우에도 매니페스트가 만료되지 않았는지 확인합니다. 또한 매니페스트가 만료 시간 전에 서명되었는지 확인합니다.

시스템 시계가 잘못되었거나 매니페스트가 만료되면 확인이 실패할 수 있습니다. 복구 지침은 릴리스 매니페스트가 만료됨을 참조하세요.

신뢰할 수 있는 인증서

매니페스트 서명 및 해당 타임스탬프의 경우 dotnetup는 도구와 함께 번들로 제공되는 신뢰할 수 있는 루트 인증서를 사용합니다. 운영 체제의 트러스트 저장소에서 해당 신뢰 루트에 인증서를 추가하지 않습니다.

운영 체제의 신뢰 저장소에 인증서를 추가해도 dotnetup가 해당 인증서 체인의 릴리스 매니페스트 서명을 신뢰하게 되는 것은 아닙니다. 서명은 dotnetup의 확인 정책을 충족하고 번들된 신뢰할 수 있는 루트까지 체인이 연결되어야 합니다.

일별 및 미등록 사전 릴리스 빌드

서명된 릴리스 매니페스트에 없는 일일 빌드 및 시험판 버전은 다른 피드에서 제공됩니다. 이러한 빌드에는 SHA-512 해시 파일이 있지만 코드 서명은 없습니다. 이러한 빌드의 경우 dotnetup SHA-512 해시만 확인합니다.

dotnetup에서는 설치할 때 이 경로를 사용합니다.

  • daily 또는 10.0-daily와 같은 일일 채널입니다.
  • 릴리스 매니페스트에 없는 완전히 지정된 사전 릴리스 버전(예: 10.0.100-preview.4.25216.37)입니다.

설치를 시작하기 전에 dotnetup에 다음 경고가 표시됩니다.

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

일일 빌드에 대한 자세한 내용은 미리 보기 및 일일 빌드 사용을 참조하세요.

서명되지 않은 다운로드 차단

관리자는 코드 서명되지 않은 빌드 설치를 차단할 수 있습니다. 이 정책이 적용되는 dotnetup 경우에도 릴리스된 빌드를 설치하지만 일별 및 미등록 시험판 빌드의 설치는 실패합니다.

Windows

HKLM\SOFTWARE\Policies\Microsoft\dotnet\Dotnetup 아래에 BlockUnsignedDownloads 레지스트리 값을 0이 아닌 값으로 REG_DWORD 만듭니다. 예를 들어 관리자 권한 PowerShell 세션에서 다음 명령을 실행합니다.

$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

정책을 지우려면 값을 삭제하거나 0으로 설정합니다.

Linux 및 macOS

/etc/dotnet/dnup-block-unsigned-downloads 파일을 만듭니다. 파일의 콘텐츠는 중요하지 않습니다. 다음은 그 예입니다.

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

정책을 지우려면 파일을 삭제하세요.

차단된 설치

정책이 설치를 차단하는 경우 dotnetup에 다음 메시지와 유사한 오류가 표시됩니다.

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 ...

계속하려면 릴리스된 버전을 설치하거나 관리자에게 정책을 지워달라고 요청하세요.

dotnetup 실행 파일

다운로드 스크립트는 get-dotnetup SHA-512 체크섬 파일을 사용하여 다운로드한 dotnetup 실행 파일을 확인합니다. 자세한 내용은 dotnetup 시작을 참조하세요.

dotnetup self update 또한 다운로드한 실행 파일의 SHA-512 체크섬을 확인합니다. Windows에서 설치된 실행 파일이 Authenticode로 서명된 경우 대체 파일에는 Microsoft가 신뢰하는 루트가 있는 Authenticode 서명이 있어야 합니다. 다른 플랫폼 및 서명되지 않은 Windows 설치는 체크섬을 사용합니다.

자체 업데이트는 현재 앞에서 설명한 서명된 .NET 릴리스 매니페스트가 아닌 서명되지 않은 Blob 피드를 사용합니다. 서명되지 않은 다운로드 정책은 이 피드에서 자체 업데이트를 차단합니다.

교체 후 dotnetup은 새 실행 파일을 --version와 함께 실행하고 해당 버전이 확정된 릴리스와 일치하는지 확인합니다. 이 검사가 실패하면 dotnetup은 이전 실행 파일을 복원하려고 시도합니다. 이 시작 시 확인은 다운로드를 검증하지 않습니다.

또한, 다음을 참조하세요.