You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add opt-in Windows Authenticode signing via Azure Trusted Signing
Windows .exe and .msi artifacts are currently only Sigstore-signed, which
does not satisfy Windows SmartScreen — so downloaded connector executables
(e.g. baton-active-directory) trigger SmartScreen warnings (CE-424).
Add Authenticode signing to the goreleaser-windows job using Azure Trusted
Signing (CE-178), gated behind a new windows_authenticode_signing input
(default false) so existing releases are unaffected until the Azure account
is provisioned.
When enabled, the job:
- logs in to Azure via GitHub Actions OIDC (no certificate material in secrets)
- installs the Microsoft `sign` CLI
- signs the raw .exe in a GoReleaser build post-hook, before it is packaged,
so the binary in both the .zip and the .msi is signed
- signs the .msi in place via a GoReleaser signs entry ordered ahead of the
cosign signature, so the Sigstore bundle and all downstream hashes cover the
Authenticode-signed bytes
Signing logic lives in scripts/sign-windows-authenticode.ps1, which calls
`sign code trusted-signing` and verifies the result. New optional inputs
(trusted_signing_*) and secrets (AZURE_CLIENT_ID/TENANT_ID/SUBSCRIPTION_ID)
are validated up front. README and release-workflow docs updated.
Co-authored-by: c1-squire-dev[bot] <c1-squire-dev[bot]@users.noreply.github.com>
Copy file name to clipboardExpand all lines: .github/workflows/release.yaml
+120Lines changed: 120 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -52,6 +52,26 @@ on:
52
52
type: string
53
53
default: ""
54
54
description: "Path to a custom WXS file in the caller repo for MSI generation (relative to repo root). If not provided, uses default template."
55
+
windows_authenticode_signing:
56
+
required: false
57
+
type: boolean
58
+
default: false
59
+
description: "Whether to Authenticode-sign Windows .exe and .msi artifacts with Azure Trusted Signing. When true, the AZURE_CLIENT_ID/AZURE_TENANT_ID/AZURE_SUBSCRIPTION_ID secrets and the trusted_signing_* inputs are required."
60
+
trusted_signing_endpoint:
61
+
required: false
62
+
type: string
63
+
default: ""
64
+
description: "Azure Trusted Signing region endpoint (e.g. https://wus2.codesigning.azure.net/). Required when windows_authenticode_signing is true."
65
+
trusted_signing_account_name:
66
+
required: false
67
+
type: string
68
+
default: ""
69
+
description: "Azure Trusted Signing account name. Required when windows_authenticode_signing is true."
70
+
trusted_signing_certificate_profile:
71
+
required: false
72
+
type: string
73
+
default: ""
74
+
description: "Azure Trusted Signing certificate profile name. Required when windows_authenticode_signing is true."
55
75
secrets:
56
76
RELENG_GITHUB_TOKEN:
57
77
required: true
@@ -68,6 +88,15 @@ on:
68
88
GORELEASER_PRO_KEY:
69
89
required: false
70
90
description: "GoReleaser Pro license key for MSI builds. Required when msi is true."
91
+
AZURE_CLIENT_ID:
92
+
required: false
93
+
description: "Client ID of the Azure AD app used for Trusted Signing OIDC login. Required when windows_authenticode_signing is true."
94
+
AZURE_TENANT_ID:
95
+
required: false
96
+
description: "Azure AD tenant ID for Trusted Signing OIDC login. Required when windows_authenticode_signing is true."
97
+
AZURE_SUBSCRIPTION_ID:
98
+
required: false
99
+
description: "Azure subscription ID hosting the Trusted Signing account. Required when windows_authenticode_signing is true."
Copy file name to clipboardExpand all lines: README.md
+36Lines changed: 36 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -82,6 +82,10 @@ The release workflow accepts the following input parameters:
82
82
| `docker_extra_files` | No | `""` | Comma-separated list of extra files/dirs to include in Docker build context |
83
83
| `msi` | No | `true` | Whether to build MSI Windows installers |
84
84
| `msi_wxs_path` | No | `""` | Path to custom WXS template for MSI installer (uses default if not set) |
85
+
| `windows_authenticode_signing` | No | `false` | Authenticode-sign Windows `.exe` and `.msi` via Azure Trusted Signing (requires the `trusted_signing_*` inputs and `AZURE_*` secrets) |
86
+
| `trusted_signing_endpoint` | No | `""` | Azure Trusted Signing region endpoint (e.g. `https://wus2.codesigning.azure.net/`); required when `windows_authenticode_signing: true` |
87
+
| `trusted_signing_account_name` | No | `""` | Azure Trusted Signing account name; required when `windows_authenticode_signing: true` |
88
+
| `trusted_signing_certificate_profile` | No | `""` | Azure Trusted Signing certificate profile name; required when `windows_authenticode_signing: true` |
85
89
86
90
2. Ensure your repository has the following secrets configured:
87
91
@@ -92,6 +96,7 @@ The release workflow accepts the following input parameters:
92
96
- `AC_PROVIDER`: Apple Connect provider
93
97
- `DATADOG_API_KEY`: Datadog API key for monitoring releases
94
98
- `GORELEASER_PRO_KEY`: GoReleaser Pro license key (required when `msi: true`, the default)
99
+
- `AZURE_CLIENT_ID` / `AZURE_TENANT_ID` / `AZURE_SUBSCRIPTION_ID`: Azure OIDC identity for Trusted Signing (required only when `windows_authenticode_signing: true`)
95
100
96
101
3. Remove all GoReleaser, gon files, Dockerfile, and Dockerfile.lambda files from your connector repository, if they were previously created there.
97
102
@@ -175,6 +180,37 @@ To disable MSI builds entirely (e.g., for connectors that don't need Windows ins
175
180
176
181
When `msi: false`, the `GORELEASER_PRO_KEY` secret is not required.
177
182
183
+
### Windows Authenticode Signing
184
+
185
+
Sigstore (cosign) signatures prove provenance but do not satisfy Windows
186
+
SmartScreen. To eliminate SmartScreen warnings on the `.exe` and `.msi`, enable
187
+
Authenticode signing via [Azure Trusted Signing](https://learn.microsoft.com/azure/trusted-signing/):
Runs linting, tests, and optional regression verification. See [detailed documentation](docs/verify-workflow.md) for jobs, regression testing, and all options.
0 commit comments