Windows Authenticode signing for QuiltSync uses Azure Trusted Signing authenticated via GitHub Actions OIDC. No certificate secrets are stored in GitHub — the private key never leaves Azure.
- GitHub Actions requests an OIDC token from GitHub's identity provider
azure/loginexchanges that token for an Azure access token (federated identity, no client secret)- After the Tauri build,
azure/trusted-signing-actionsends the built.exeand.msiartifacts to Azure for signing - Azure returns the signed files; the private key is never exposed to the runner
In the Azure portal:
- Search for Trusted Signing
- Create a new account (choose a region close to your runners, e.g. East US)
- Note the endpoint URL (e.g.
https://eus.codesigning.azure.net)
Reference: https://learn.microsoft.com/azure/trusted-signing/quickstart
Inside the Trusted Signing account:
- Create a Certificate Profile of type Public Trust
- Set the Organization to
Quilt Data, Inc.(exact casing) - Note the profile name
In Azure Active Directory (Entra ID):
- Create a new App Registration
- Note the Application (client) ID and Directory (tenant) ID
On the App Registration → Certificates & secrets → Federated credentials:
- Add a credential for GitHub Actions
- Organization:
quiltdata - Repository:
quilt-rs - Entity: Environment →
<your environment name>(matchesinputs.environmentin the workflow) - Note: if you don't use environments, use Branch and set
main
On the Certificate Profile resource → Access control (IAM):
- Add role assignment: Trusted Signing Certificate Profile Signer
- Assign to the App Registration (service principal) created above
Settings → Secrets and variables → Actions → Variables:
| Variable | Value |
|---|---|
AZURE_TENANT_ID |
Directory (tenant) ID from the App Registration |
AZURE_CLIENT_ID |
Application (client) ID from the App Registration |
AZURE_SUBSCRIPTION_ID |
Azure subscription ID |
AZURE_TRUSTED_SIGNING_ENDPOINT |
Endpoint URL (e.g. https://eus.codesigning.azure.net) |
AZURE_TRUSTED_SIGNING_ACCOUNT |
Trusted Signing account name |
AZURE_TRUSTED_SIGNING_PROFILE |
Certificate profile name |
WINDOWS_PFX_BASE64WINDOWS_PFX_PASSWORD
After a signed release build:
- Download the installer from GitHub Releases
- Right-click → Properties → Digital Signatures — confirm publisher shows Quilt Data, Inc.
- Or in PowerShell:
Get-AuthenticodeSignature .\QuiltSync_x.y.z_x64-setup.exe - Signing history is also visible in the Azure portal under the Certificate Profile
Azure Trusted Signing issues Public Trust certificates (equivalent to EV), which carry immediate SmartScreen trust — no reputation-building period required.
To maintain trust:
- Do not change the publisher name or certificate subject
- Renew the certificate profile before expiration using the same organization identity
Changing organization identity resets SmartScreen reputation.