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
命令使用证书对匹配第一个参数的所有包进行签名。 通过提供使用者名称或 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 指纹。 但是,使用 SHA-1 证书指纹时会引发
NU3043
警告,因为它不再被视为安全。所有以前版本的 .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
使用证书 cert.pfx 对多个 NuGet 包进行签名 - foo.nupkg 和指定的目录中所有的 .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