对 VSIX 包的 CLI 参考进行签名
sign
- Dotnet 工具,用于在磁盘上或 Windows 证书管理器(WCM)、加密服务提供商(CSP)或 Azure Key Vault 上使用 PFX、CER 或 P7B 证书对文件和容器进行签名。
重要
签名 CLI 仅支持有效指纹算法 SHA-256
、SHA-384
和 SHA-512
。 可以使用 PowerShell 获取指纹:Get-FileHash -Algorithm SHA256 <path to .cer file> | Format-Table -AutoSize
重要
签名 CLI 仅支持 RSA
算法,因此使用 ECDSA
生成指纹在安装过程中将失败签名验证。 这不会阻止安装,但在安装期间 VSIX 安装程序窗口中会显示“签名无效”警告。
概要
sign code certificate-store [<PATH(s)>]
[-cf|--certificate-file <PATH>]
[-p|--password <PASSWORD>]
[-cfp|--certificate-fingerprint <SHA>]
[-csp|--crypto-service-provider <CSPNAME>]
[-k|--key-container <HASHALGORITHM>]
[-km|--use-machine-key-container]
[-d|--description <DESCRIPTION>]
[-u|--descriptionUrl <URL>]
[-fd|--file-digest <DIGEST>]
[-t|--timestamp-url <URL>]
[-tr|--timestamp-rfc3161 <URL>]
[-td|--timestamp-digest <DIGEST>]
[-o|--output <PATH>]
[-b|--base-directory <wORKINGDIRECTORY>]
[-f|--force]
[-m|--max-concurrency <MAXCONCURRENCY>]
[-fl|--filelist <FILELISTPATH>]
[-i]|--interactive
sign code certificate-store -h|--help
描述
Sign CLI
是一种 Dotnet 工具,以递归方式使用证书和专用对文件和容器进行签名。 可以通过提供 SHA-256
、SHA-384
或 SHA-512
指纹,从文件(PFX、P7B、CER)或证书存储中安装的证书获取证书和私钥。 可以使用制造商实现的 加密服务提供程序(CSP)并从证书存储访问来访问 USB 密钥。
安装
使用 dotnet tool install sign --prerelease --global
全局安装 Sign CLI
签名 CLI 的脱机安装
对于独立环境,可以下载签名 CLI NuGet 包,并使用:
dotnet tool install --global --add-source <path-to-folder> <tool-name> --version <version>
参数
VSIX-paths(s)
指定要签名的 VSIX 包的路径(s)。
选项
-cf|--certificate-file <PATH>
包含证书和私钥的 PFX、P7B 或 CER 文件。
-p|--password <PASSWORD>
证书文件的可选密码。
-cfp|--certificate-fingerprint <SHA>
SHA-256、SHA-384 或 SHA-512 指纹用于在签名之前标识证书。
-csp|--crypto-service-provider <CSP NAME>
包含私钥的加密服务提供程序。
注意
可以通过运行
certutil -csplist
查看所有可用的 CSP,其中旧版 CSP 指定了“提供程序类型”,CNG 提供程序的名称通常具有“密钥存储提供程序”。certutil -csptest "<provider name>"
提供有关特定提供程序的详细信息。-k|--key-container <CONTAINER NAME>]
私钥容器名称。
注意
可以通过运行
certutil -csp <Provider Name> -key
来查找 CSP 中存储的所有密钥。-km|--use-machine-key-container]
使用计算机级私钥容器,而不是默认用户级容器。
-d|--description <DESCRIPTION>
签名证书的说明。
-u|--descriptionUrl <URL>
签名证书的说明 URL。
-fd | --file-digest <DIGEST>
用于对文件进行哈希处理的摘要算法。
-t|--timestamp-url <URL>
RFC 3161 时间戳服务器 URL。 [default: http://timestamp.acs.microsoft.com/]
-tr | --timestamp-rfc3161 <URL>
指定 RFC 3161 时间戳服务器的 URL。
-td|--timestamp-digest <DIGEST>
与
-tr
开关一起使用,以请求 RFC 3161 时间戳服务器使用的摘要算法。-o|--output <PATH>
如果指定了多个文件,则输出文件或文件夹。 如果省略,则覆盖输入。
-b|--base-directory <PATH>
用于替代工作目录的文件的基目录。
--f|--force
覆盖签名(如果存在)。
-m|--max-concurrency <MAXCONCURRENCY>
最大并发性(默认值为 4)
-fl | --filelist <PATH>
包含要签名的文件的路径的文件的路径,或从容器中的签名中排除的路径。
-?|-h|--help
打印有关如何使用命令的说明。
-i|--interactive
在某些情况下(例如,使用用户保护的密钥时)需要用户输入的提示,用户必须输入密码。
例子
使用导入到 用户 证书存储的证书对 contoso.vsix 进行签名:
sign code certificate-store contoso.vsix -cfp 24D589...FB9523B36E -d "Constoso VSIX Signature" -u "http://www.contoso.com"
使用 SHA-512 指纹使用证书 cert.pfx(不受密码保护)对 contoso.vsix 进行签名:
sign code certificate-store contoso.vsix -cfp A87A6F...894559B981 -cfpa sha512 -cf D:\certificates\cert.pfx -d "Constoso VSIX Signature" -u "http://www.contoso.com"
使用证书 cert.pfx(受密码保护)对 contoso.vsix 进行签名:
sign code certificate-store contoso.vsix -cfp 24D589...FB9523B36E -cf cert.pfx -p <password> -d "Constoso VSIX Signature" -u "http://www.contoso.com"
对多个 VSIX 包进行签名 - contoso.vsix,并使用证书 cert.pfx(不受密码保护)目录中的所有 .vsix 文件:
sign code certificate-store *.vsix -cfp 24D589...FB9523B36E -cf cert.pfx -d "Constoso VSIX Signature" -u "http://www.contoso.com"
使用存储在安全 USB 驱动器中的证书对 contoso.vsix 进行签名。
sign code certificate-store contoso.vsix -cfp 24D589...FB9523B36E -csp "Microsoft Software Key Storage Provider" -k "VsixSigning 0B2D249223B36D00A7DF07FB95E24D58" -d "Constoso VSIX Signature" -u "http://www.contoso.com"
使用存储在安全 USB 驱动器中的证书对 contoso.vsix 进行 签名,并从 计算机 证书存储(-km 选项)进行访问。
sign code certificate-store contoso.vsix -cfp 24D589...FB9523B36E -csp "Microsoft Software Key Storage Provider" -k "VsixSigning 0B2D249223B36D00A7DF07FB95E24D58" -km -d "Constoso VSIX Signature" -u "http://www.contoso.com"
注意
如果未提供
-k
选项,该工具将检查提供的 CSP 中的所有容器,以获取匹配的 SHA 指纹证书。使用安全 USB 驱动器中存储的证书 (-fd)、时间戳服务器(-t)和签名 VSIX 的自定义输出路径(-o)对 contoso.vsix 进行签名。
sign code certificate-store contoso.vsix -cfp 24D589...FB9523B36E -csp "Microsoft Software Key Storage Provider" -k "VsixSigning 0B2D249223B36D00A7DF07FB95E24D58" -d "Constoso VSIX Signature" -u "http://www.contoso.com" -t "http://timestamp.acs.microsoft.com/" -fd sha256 -o "ContosoSigned.vsix"