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>

    指定用于在本地证书存储中搜索证书的证书 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