dotnet nuget sign
此文章適用於:✔️ .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 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
使用符合預設憑證存放區 (CurrentUser\My) 中指定 SHA-1 指紋的憑證 (受密碼保護) 簽署 foo.nupkg:
dotnet nuget sign foo.nupkg --certificate-fingerprint 89967D1DD995010B6C66AE24FF8E66885E6E03A8 --certificate-password password
使用符合預設憑證存放區 (CurrentUser\My) 中指定主體名稱 "Test certificate for testing signing" 的憑證 (受密碼保護) 簽署 foo.nupkg:
dotnet nuget sign foo.nupkg --certificate-subject-name "Test certificate for testing signing" --certificate-password password
使用符合憑證存放區 CurrentUser\Root 中指定 SHA-1 指紋的憑證 (受密碼保護) 簽署 foo.nupkg:
dotnet nuget sign foo.nupkg --certificate-fingerprint 89967D1DD995010B6C66AE24FF8E66885E6E03A8 --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