Note
dotnetup はパブリック プレビュー段階です。 その機能と動作は、一般公開前に変更される可能性があります。
dotnetupは、ダウンロードした .NET SDK とランタイムを展開する前に検証します。 検証の種類は、ビルドの取得元によって異なります。
リリース済みビルド
リリースされたビルドの場合、 dotnetup は署名付きリリース マニフェストで始まる信頼のチェーンを使用します。
-
dotnetupは、.NETリリース マニフェストをダウンロードします。 これらのマニフェストは、各チャネルのリリース インデックスとreleases.jsonファイルです。 -
dotnetupは、各マニフェストのデタッチされたコード署名 (.p7sファイル) を検証します。 署名がない場合、または有効でない場合、コマンドの実行は失敗します。 - 検証済みマニフェストには、各アーカイブの SHA-512 ハッシュが含まれています。
-
dotnetupはアーカイブをダウンロードし、その SHA-512 ハッシュをマニフェスト内のハッシュと比較します。 ハッシュが一致しない場合、コマンドは失敗し、dotnetupはアーカイブを抽出しません。
署名されたマニフェストは各アーカイブのハッシュをピン留めするため、 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
BlockUnsignedDownloads レジストリ値を、REG_DWORDの下に、0 以外の値を持つHKLM\SOFTWARE\Policies\Microsoft\dotnet\Dotnetupとして作成します。 たとえば、管理者特権の 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ダウンロード スクリプトは、ダウンロードしたdotnetup実行可能ファイルをその SHA-512 チェックサム ファイルで検証します。 詳細については、「dotnetup の使用を開始する」を参照してください。
参照
.NET