NuGet 警告 NU3042
Linux および macOS のみの NuGet 6.6.0 以降
The following X.509 root certificate is untrusted because it is not present in the certificate bundle at <file-path>. For more information, see documentation for NU3042. Subject: <certificate subject> Fingerprint (SHA-256): <certificate fingerprint> Certificate (PEM): <PEM-encoded certificate>
問題点
署名済みパッケージの検証に失敗した場合に警告 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 の署名済みパッケージの検証」を参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示