此文章適用於:✔️ .NET 6 SDK 與更新版本
名稱
dotnet nuget sign:使用憑證簽署所有符合第一個引數的 NuGet 套件。
概要
dotnet nuget sign [<package-path(s)>]
[--certificate-path <PATH>]
[--certificate-store-name <STORENAME>]
[--certificate-store-location <STORELOCATION>]
[--certificate-subject-name <SUBJECTNAME>]
[--certificate-fingerprint <FINGERPRINT>]
[--certificate-password <PASSWORD>]
[--hash-algorithm <HASHALGORITHM>]
[-o|--output <OUTPUT DIRECTORY>]
[--overwrite]
[--timestamp-hash-algorithm <HASHALGORITHM>]
[--timestamper <TIMESTAMPINGSERVER>]
[-v|--verbosity <LEVEL>]
dotnet nuget sign -h|--help
描述
dotnet nuget sign 命令會使用憑證簽署所有符合第一個引數的 NuGet 套件。 只要提供主體名稱或 SHA-1 指紋,即可從檔案或安裝在憑證存放區的憑證取得具有私密金鑰的憑證。
注意
此命令需要對程式碼簽署和時間標記都有效的憑證根存放區。 此外,作業系統和 .NET SDK 的某些組合可能不支援此命令。 如需詳細資訊,請參閱 NuGet 簽署套件驗證。
引數
package-path(s)指定要簽署的套件所在的檔案路徑。 您可以傳入多個引數,以簽署多個套件。
選項
--certificate-path <PATH>指定簽署套件時要使用的憑證的檔案路徑。
注意
此選項目前僅支援包含憑證私密金鑰的
PKCS12 (PFX)檔案。--certificate-store-name <STORENAME>指定用於搜尋憑證的 X.509 憑證存放區的名稱。 預設值為 "My",個人憑證的 X.509 憑證存放區。 若要透過
--certificate-subject-name或--certificate-fingerprint選項指定憑證,就必須使用此選項。--certificate-store-location <STORELOCATION>指定用於搜尋憑證的 X.509 憑證存放區。 預設值為 "CurrentUser",目前使用者所用的 X.509 憑證存放區。 若要透過
--certificate-subject-name或--certificate-fingerprint選項指定憑證,就必須使用此選項。--certificate-subject-name <SUBJECTNAME>指定用於在本機憑證存放區中搜尋憑證的憑證主體名稱。 搜尋是使用提供的值不區分大小寫的字串比較,它會尋找包含該字串之主體名稱的所有憑證,而不論其他主體值為何。 您可透過
--certificate-store-name與--certificate-store-location選項指定憑證存放區。注意
此選項目前僅支援結果中的單一相符憑證。 若結果中有多個相符憑證,或者沒有任何相符憑證,sign 命令就會失敗。
--certificate-fingerprint <FINGERPRINT>指定用來搜尋憑證本機證書存儲之憑證的指紋。
從 .NET 9 開始,此選項可用來指定憑證的SHA-1、SHA-256、SHA-384或SHA-512指紋。 不過,
NU3043當使用 SHA-1 憑證指紋時,會引發警告,因為它不再被視為安全。 在 .NET 10 和更新版本中, 警告會提升為錯誤。 僅支援 SHA-2 系列指紋 (SHA-256、SHA-384 和 SHA-512)。pre-.NET 所有 9 個版本的 .NET SDK 都會繼續只接受 SHA-1 憑證指紋。
--certificate-password <PASSWORD>視需要指定憑證密碼。 如果憑證受到密碼保護,但未提供密碼,sign 命令就會失敗。
注意
sign命令僅支援非互動模式。 執行時不會提示輸入密碼。--hash-algorithm <HASHALGORITHM>要用於簽署套件的雜湊演算法。 預設為 SHA256。 可能的值包含 SHA256、SHA384 與 SHA512。
-o|--output指定已簽署套件應儲存至哪個目錄。 如果未指定此選項,預設會覆寫已簽署套件的原始套件。
--overwrite指出應覆寫目前的簽章。 根據預設,如果套件已有簽章,此命令會失敗。
--timestamp-hash-algorithm <HASHALGORITHM>RFC 3161 時間戳記伺服器要使用的雜湊演算法。 預設為 SHA256。
--timestamper <TIMESTAMPINGSERVER>RFC 3161 時間戳記伺服器的 URL。
-
-v|--verbosity <LEVEL>設定命令的詳細資訊層級。 允許的值為
q[uiet]、m[inimal]、n[ormal]、d[etailed]和diag[nostic]。 預設為minimal。 如需詳細資訊,請參閱LoggerVerbosity。 -
-?|-h|--help列印如何使用命令的描述。
範例
使用 cert.pfx 憑證 (未受密碼保護) 簽署 foo.nupkg:
dotnet nuget sign foo.nupkg --certificate-path cert.pfx使用 cert.pfx 憑證 (受密碼保護) 簽署 foo.nupkg:
dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password使用憑證簽署 foo.nupkg (受密碼保護) 與預設憑證存放區 (CurrentUser\My) 中指定的 SHA-256 指紋相符:
dotnet nuget sign foo.nupkg --certificate-fingerprint B2C40F2F8775D7B7EBEB76BD5A9D3A4BC3F4B8A4D8D7C5F8A4C6B3E7A9E2D5F1 --certificate-password password使用符合預設憑證存放區 (CurrentUser\My) 中指定主體名稱 的憑證 (受密碼保護) 簽署 "Test certificate for testing signing":
dotnet nuget sign foo.nupkg --certificate-subject-name "Test certificate for testing signing" --certificate-password password使用憑證 (受密碼保護) 簽署 foo.nupkg ,與憑證存放區 CurrentUser\Root 中指定的 SHA-256 指紋相符:
dotnet nuget sign foo.nupkg --certificate-fingerprint B2C40F2F8775D7B7EBEB76BD5A9D3A4BC3F4B8A4D8D7C5F8A4C6B3E7A9E2D5F1 --certificate-password password --certificate-store-location CurrentUser --certificate-store-name Root簽署多個 NuGet 套件:foo.nupkg 與使用 cert.pfx 憑證所指定的目錄中所有 .nupkg 檔案:
dotnet nuget sign foo.nupkg c:\mydir\*.nupkg --certificate-path cert.pfx使用 cert.pfx 憑證 (受密碼保護) 簽署 foo.nupkg,並使用
http://timestamp.test加上時間戳記:dotnet nuget sign foo.nupkg --certificate-path cert.pfx --certificate-password password --timestamper http://timestamp.test使用 cert.pfx 憑證 (未受密碼保護) 簽署 foo.nupkg,並將已簽署的套件儲存在指定目錄下:
dotnet nuget sign foo.nupkg --certificate-path cert.pfx --output c:\signed\使用 cert.pfx 憑證 (未受密碼保護) 簽署foo.nupkg;若套件已簽署,則覆寫目前的簽章:
dotnet nuget sign foo.nupkg --certificate-path cert.pfx --overwrite