NuGet 警告 NU3042
Linux および macOS のみの NuGet 6.6.0 以降
次の X.509 ルート証明書は <file-path> で証明書バンドルに存在しないため、信頼されていません。 詳細については、NU3042 のドキュメントを参照してください。
件名: <証明書のサブジェクト>
フィンガープリント (SHA-256): <認証書フィンガープリント>
証明書 (PEM)
<PEM でエンコードされた証明書>
問題点
署名済みパッケージの検証に失敗した場合に警告 NU3042 が発生します。これは、コード署名またはタイムスタンプ付きの適切な信頼されたルート証明書バンドルにルート証明書が見つからなかったためです。 この警告は、署名付きパッケージの検証が有効になっている場合にのみ Linux と macOS で発生し、Windows では発生しません。 NU3042 は NU3018 または NU3028 に付随する必要があります。
各 .NET 7+ SDK リリースには、Microsoft の信頼されたルート プログラムから提供される 2 つのルート証明書バンドルが含まれています。 1 つの証明書バンドルには、コード署名に有効なすべての信頼されたルートが含まれています。もう 1 つはタイムスタンプに有効なすべての信頼されたルートを含んでいます。 NuGet では、署名付きパッケージの検証が有効な場合、Linux および macOS でこれらの証明書バンドルが使用されます。
Linux では、NuGet は、.NET SDK のコード証明書バンドルよりもシステム全体のコード署名証明書バンドルを優先します。
NU3042 の根本原因は、次のいずれかある可能性があります。
- (Linux のみ)システム全体のコード署名証明書バンドルには、警告で参照されているルート証明書が含まれていません。
- .NET SDK の証明書バンドルが期限切れです。
詳細については、「NuGet の署名済みパッケージの検証」を参照してください。
解決策
Linux では、証明書を信頼し、システム全体のコード署名証明書バンドルを使用している場合は、ルート証明書をバンドルに追加することを検討してください。 このソリューションは、システム全体の信頼を付与するため、適切でない場合があります。
.NET SDK の証明書バンドルが期限切れの場合は、.NET SDK のより新しいリリースに更新してください。
他のすべてが失敗した場合は、環境変数 DOTNET_NUGET_SIGNATURE_VERIFICATION
を false
に設定して署名済みパッケージの検証をオプトアウトし、NuGet チームに問題点を提起して、プラットフォームで署名済みパッケージ検証を改善する方法を提案します。
詳細については、「NuGet の署名済みパッケージの検証」を参照してください。