通过 Azure Key Vault 进行 ClickOnce 签名

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

有关于点击一次签名的问题。

我有一台装有 Jenkins 的服务器,它可以使用 ClickOnce 作为部署选项来构建 WPF 应用程序。我使用了 MSBuild 和 mage.exe 的一组命令来生成一个应用程序文件,其中包含由提供的 *.pfx 文件签名的部署和应用程序清单。

现在决定不提供pfx文件。相反,所有密钥都移至 Azure Key Vault。

我的问题是 - 使 ClickOnce 应用程序的清单签名与 Azure Key Vault 配合使用的正确流程是什么?我只是不明白如何在没有路径作为 -certfile 参数提供的情况下正确执行 mage -update 。

提前致谢。

wpf jenkins clickonce azure-keyvault
2个回答
0
投票

我在这里使用了代码:

https://github.com/davici-code/AzureSignToolClickOnce

使用 Azure Key Vault 中存储的证书成功签署 Azure DevOps 中的 ClickOnce 应用程序。

它对所有必需的可执行文件和清单文件进行签名。内部 AzureSignTool 用于对可执行文件和法师代码进行签名 带有 Authenticode 的清单。

https://www.davici.nl/blog/clickonce-signing-from-azure-devops-via-azure-key-vault

对于 Jenkins 来说它也可以工作。


0
投票

只是为了提供 2024/2025 年情况的更新,届时 IT 不太可能在证书存储中的构建服务器上为您提供 EV 协同设计证书。

给予:

  • 本地签名的现有 ClickOnce 应用程序
  • 本地证书过期
  • Azure Key Vault 中的新 EV 协同设计证书
  • IT 提供的目录(租户?)ID
  • IT 提供的应用程序 ID
  • IT 提供的客户端机密
  • IT提供的证书名称
  • IT 授予组织内用户签名的权利

为了签署包含此信息的已发布 clickonce 应用程序:

  • 确保根据提供的数据设置环境变量 AZURE_CLIENT_ID AZURE_TENANT_ID AZURE_CLIENT_SECRET
  • 安装此工具已安装https://github.com/dotnet/sign
  • 调用命令
    sign code azure-key-vault "{YOUR_PUBLISH_FOLDER}\{YOUR_APP_NAME}.application" --azure-key-vault-url "{YOUR_KEY_VAULT_URL}" --azure-key-vault-certificate "{YOUR_CERTIFICATE_NAME}" --application-name "{YOUR_APP_NAME}" --publisher-name "{YOUR_PUBLISHER_NAME}" --timestamp-url "http://timestamp.digicert.com/"

这对我来说出奇地好,因为它弄清楚了自动签名的内容,并且现在不需要在构建 dll 上重命名/签名。遗憾的是,由于文档中没有示例,所以花了相当长的时间才弄清楚。另外,我不知道如何在显式指定所有参数(没有环境变量)时使其工作,因为它吹嘘

The client secret options are obsolete and should no longer be specified.
© www.soinside.com 2019 - 2024. All rights reserved.