如何在 Azure DevOps 经典管道中使用 DigiCert 签名管理器控制器 (smctl)?

问题描述 投票:0回答:1

如果我在 Azure YAML 管道中使用它,以下任务将使用 DigiCert 签名管理器控制器 (smctl) 对安装程序进行签名,不会出现任何问题。

- task: CmdLine@2
  displayName: 'Sign setup file'
  inputs:
    script: 
      smctl sign --verbose --keypair-alias=$(digicert-key-pair-alias) --certificate=$(Agent.TempDirectory)\KeyCert.pem  --config-file $(SSMClientToolsSetup.PKCS11_CONFIG) --input $(System.ArtifactsDirectory)
  env:
    SM_HOST: $(CodeSigningHost)
    SM_API_KEY: $(digicert-api-key)
    SM_CLIENT_CERT_PASSWORD: $(digicert-cert-pw)
    SM_CLIENT_CERT_FILE: $(caCertificate.secureFilePath)

在 Azure DevOps 发布管道中使用完全相同的任务不起作用:请参阅此屏幕截图:

我收到此错误:

Command : 
 signtool sign  /tr http://timestamp.digicert.com /td SHA256  /fd  SHA256   /csp "DigiCert Signing Manager KSP" /kc "***" /f "D:\a\_temp\KeyCert.pem"  "D:\a\1\a\setup\ApplicationService_Setup_4.2.0.57.exe" 
Error : 
Done Adding Additional Store
Error information: "Error: SignerSign() failed." (-2146893779/0x8009002d)
 
 exit status 1: SignTool Error: An unexpected internal error has occurred.

我在两个管道中调用相同的必要任务,如 DigiCert 说明 中所述。 DigiCert 工具已正确下载并安装在两个管道中。必要的证书和所有环境变量也在那里。

据我了解,签名过程应该适用于两种类型的管道。我在两个管道中调用相同的任务。两个管道都可以访问包含要签名的证书的安全文件和变量组,其中包含 DigiCert 工具使用的秘密参数。

azure-devops code-signing digicert smctl
1个回答
0
投票

我发现错误-2146893779/0x8009002d 意味着我的签名用完了。使用 keyLocker 配置方法签署证书带有固定数量的签名。 我希望 DigiCert 在他们的文档中提及这一点(s.SignTool 错误和解决方案),但事实并非如此。

© www.soinside.com 2019 - 2024. All rights reserved.