Azure Artifact Signing Public Trust returns persistent HTTP 403 at digest submission after RBAC, identity, service-principal, and network isolation

Luke Connolly 0 Reputation points
2026-10-18T22:00:45.51+00:00

I am unable to sign a Windows x64 executable using Azure Artifact Signing Public Trust.

The client successfully reaches the Artifact Signing service and fails consistently at:

Submitting digest for signing...

The service then returns:

Azure.RequestFailedException: Service request failed.

Status: 403 (Forbidden)

followed by:

SignTool Error: An unexpected internal error has occurred.

Error information: "Error: SignerSign() failed." (-2147467259/0x80004005)

The stack fails at:

Azure.CodeSigning.CertificateProfileRestClient.SignAsync(...)

Azure.CodeSigning.CertificateProfileClient.StartSignAsync(...)

Azure.CodeSigning.Dlib.Core.DigestSigner.SignAsync(...)

I have completed the documented 403 troubleshooting and several additional A/B tests.

CONFIGURATION

Artifact Signing region:

East US

Endpoint:

https://eus.codesigning.azure.net

Certificate profile type:

Public Trust

Microsoft.CodeSigning provider:

Registered

Artifact Signing account provisioning:

Succeeded

Certificate profile provisioning:

Succeeded

Certificate profile status:

Active

Identity validation:

Completed

The live account URI returned by Azure is:

https://eus.codesigning.azure.net

Therefore the configured endpoint exactly matches the actual account region/URI.

A fresh short-lived certificate was issued for the profile on 2026-10-18 and is currently Active.

The active certificate subject was independently queried and exactly matches the expected application/MSIX publisher identity.

TOOLING

Windows 11 x64

SignTool:

10.0.26100.9169

Azure.CodeSigning.Dlib.dll:

1.0.118.0

Dlib SHA-256:

b5eda3ca46583ae373167692f193a687a40fbb976149a8750aee483e62d53eec

.NET Runtime:

Microsoft.NETCore.App 8.0.30

Azure CLI:

2.90.0

RBAC / AUTHENTICATION TESTING

The original interactive signing identity has:

Artifact Signing Certificate Profile Signer

at the exact certificate-profile scope.

As an additional diagnostic, the same Signer role was also assigned at the Artifact Signing account scope.

The signing identity was verified by Object ID, not display name.

I then:

  1. Cleared Azure CLI authentication.
  2. Performed a fresh login to the correct tenant/subscription.
  3. Verified the subscription is Enabled.
  4. Verified Artifact Signing resources again.
  5. Successfully obtained an Artifact Signing audience bearer token using:

az account get-access-token --scope "https://codesigning.azure.net/.default"

The signing attempt still returned HTTP 403.

SERVICE-PRINCIPAL A/B TEST

To rule out a problem with the original interactive/B2B identity, I created a completely separate temporary service principal.

The service principal was granted only:

Artifact Signing Certificate Profile Signer

at the exact certificate-profile scope.

Azure CLI authentication as the service principal succeeded.

Artifact Signing audience-token acquisition succeeded.

I then attempted to sign a COPY of the exact same executable using:

  • the same PC
  • the same Artifact Signing account
  • the same Public Trust certificate profile
  • the same active certificate
  • the same East US endpoint
  • the same SignTool
  • the same Azure.CodeSigning.Dlib
  • the same signing scripts

Only the Azure authentication principal changed.

Result:

Submitting digest for signing...

HTTP 403 Forbidden

SignerSign() failed

Therefore the same signing failure occurs with two completely separate Azure principals.

NETWORK A/B TEST

The service-principal test was then repeated using a mobile phone hotspot instead of the normal Internet connection.

Nothing else changed.

Result:

Submitting digest for signing...

HTTP 403 Forbidden

SignerSign() failed

Therefore the failure has now reproduced over two independent network paths.

BUILD / EXECUTABLE ISOLATION

The application build itself succeeds before Artifact Signing is invoked.

Restore succeeds.

Warnings-as-errors Release compilation succeeds.

Self-contained win-x64 publish succeeds.

The executable is produced successfully.

The failure occurs only when the signing client submits the Authenticode digest to Azure Artifact Signing.

IDENTITY-VALIDATION / PROFILE QUESTION

There is one additional detail I would specifically like the Artifact Signing team to verify server-side.

The subscription currently contains two separate Completed Public identity-validation records for the same individual.

The newly created Public Trust certificate profile is linked to one of those Completed validations and has successfully received a fresh Active short-lived certificate.

I am not assuming that having two Completed validations is itself an error.

However, there are other current Microsoft Q&A reports where certificate-profile creation/renewal resulted in a profile being associated with an older identity-validation record despite a different Completed validation being selected in the portal.

Could Microsoft please verify from the Artifact Signing backend that:

  1. The current certificate profile is associated with the intended Completed identity-validation record.
  2. The identity-validation/profile association shown by the control plane matches the data-plane association used by StartSignAsync.
  3. The fresh Active certificate on the profile is actually authorized and usable by the signing data plane.
  4. There is no backend account/profile authorization, eligibility, provisioning, compliance, or policy state causing StartSignAsync to reject the request.

CURRENT TEST MATRIX

Correct East US endpoint:

PASS

Live account URI:

PASS

Artifact Signing account provisioning:

PASS

Public Trust profile provisioning:

PASS

Profile Active:

PASS

Completed identity validation:

PASS

Fresh Active certificate:

PASS

Certificate subject matches publisher:

PASS

Microsoft.CodeSigning registered:

PASS

Interactive-user Artifact Signing token:

PASS

Profile-level Signer RBAC:

PASS

Account-level Signer RBAC diagnostic:

PASS

Fresh interactive authentication:

PASS

Separate service-principal authentication:

PASS

Service-principal Artifact Signing token:

PASS

Normal network signing:

403

Service-principal signing:

403

Mobile-hotspot service-principal signing:

403

USEFUL UTC FAILURE TIMES

Production release-candidate signing attempt:

2026-10-18 approximately 20:58:59 UTC

Separate service-principal diagnostic:

2026-10-18 approximately 21:15:26 UTC

Service-principal diagnostic over mobile hotspot:

2026-10-18 approximately 21:21:49 UTC

CORRELATION IDS

Production attempt:

PCDI-Build6-v3-1.0.2.0

Service-principal diagnostic:

PCDI-Build6-v3-SP-Diagnostic

RELATED MICROSOFT Q&A CASES

I found several recent Artifact Signing Q&A cases with potentially related symptoms, including:

"Azure Artifact Signing Public Trust returns HTTP 403 Forbidden when submitting digest" — September 2026

"Artifact Signing: sign returns 403 (empty body) for all identities..." — September 2026

"Artifact Signing: Cannot recreate Certificate Profile following identity validation" — August 2026

"Certificate profile stopped making new certificates" — March 2026

The first case is particularly similar because the failure occurs at "Submitting digest for signing..." after the normal documented prerequisites have been verified.

The identity-validation/profile case is also relevant because it reports inconsistent server-side association between a newly created certificate profile and multiple identity-validation records.

REQUEST

Could a Microsoft Artifact Signing engineer or moderator please investigate the service-side logs for the UTC timestamps and correlation IDs above?

At this point the same HTTP 403 has been reproduced after:

  • documented 403 prerequisites were verified
  • the exact account endpoint was queried from Azure
  • certificate-profile RBAC was verified
  • an additional account-level RBAC test was performed
  • fresh authentication was performed
  • the Artifact Signing audience token was successfully acquired
  • a completely separate service principal was tested
  • two independent Internet connections were tested

This appears to be beyond a normal local endpoint/RBAC/credential/network configuration problem.

Please specifically investigate the Artifact Signing account/profile data-plane authorization and backend provisioning state, including the linkage between the active certificate profile, its Completed identity validation, and the active short-lived certificate.

My Azure subscription uses Basic support, so I cannot open a normal technical support case.

I can provide the exact Artifact Signing account name, certificate profile name, subscription ID, tenant ID, Entra object IDs, resource IDs, screenshots, and sanitized logs privately to a Microsoft moderator or engineer if required.

I have intentionally omitted those identifiers from this public post.

Artifact Signing
Artifact Signing

A fully managed end-to-end service for digitally signing code, documents, and applications. (formerly Trusted Signing)

0 comments No comments

1 answer

Sort by: Most helpful
  1. AI answer

    2026-10-18T22:01:47.6366667+00:00

    Pin the Artifact Signing client to AzureCliCredential for one final controlled test; acquiring a valid token with Azure CLI does not establish that DefaultAzureCredential selected that same identity when the dlib submitted the digest.

    Run a credential-isolated signing test

    Artifact Signing’s dlib uses DefaultAzureCredential, which tries multiple credential providers in sequence. Microsoft documents that unwanted providers can be disabled individually, and a closely matching Submitting digest for signing 403 was resolved by excluding the other providers.^1^^2^

    1. Sign out of Azure CLI, then authenticate as the intended test principal in the correct tenant and subscription.
    2. Modify a copy of metadata.json so that only AzureCliCredential remains available:
    {
      "Endpoint": "https://eus.codesigning.azure.net",
      "CodeSigningAccountName": "<artifact-signing-account-name>",
      "CertificateProfileName": "<certificate-profile-name>",
      "CorrelationId": "PCDI-Build6-v3-AzureCliOnly",
      "ExcludeCredentials": [
        "EnvironmentCredential",
        "WorkloadIdentityCredential",
        "ManagedIdentityCredential",
        "SharedTokenCacheCredential",
        "VisualStudioCredential",
        "VisualStudioCodeCredential",
        "AzurePowerShellCredential",
        "AzureDeveloperCliCredential",
        "InteractiveBrowserCredential"
      ]
    }
    
    1. Run the existing x64 SignTool command against an unsigned copy of the executable with /v /debug.
    2. Record the exact UTC start time and retain the complete console output.

    Do not exclude AzureCliCredential in this test. Also verify that CodeSigningAccountName is the Artifact Signing resource name—not an email address, application name, or Entra identity—and that CertificateProfileName is the exact profile resource name. Those fields and the regional endpoint are the identifiers sent by the signing integration.^1^

    If this succeeds, the previous attempts were authenticating through another provider in the DefaultAzureCredential chain. Keep the exclusions appropriate to the credential used by the production process.

    If the isolated test still returns 403

    Backend investigation is warranted. Your tests already cover nearly all officially documented 403 checks: endpoint, signer role, account/profile names, runtime and toolchain, completed identity validation, active profile, endpoint reachability, and an alternate network.^3^

    The certificate profile is the resource that both generates signing certificates and receives the signing-role authorization; it must align with a completed identity validation of the same trust model.^4^ A persistent failure across two principals after credential isolation cannot be diagnosed conclusively from the client-side 403 alone.

    Request that Microsoft check:

    • Whether each correlation ID reached the Artifact Signing data plane.
    • The server-side authorization decision and reason code for StartSignAsync.
    • Account and certificate-profile provisioning/eligibility state.
    • The profile’s effective association with the intended completed Public Trust identity validation.
    • Whether the currently active short-lived certificate is enabled for data-plane signing.
    • Any compliance, policy, billing, or subscription-state gate not exposed by the control plane.
    • Whether a regional service incident affected East US at the supplied UTC times.

    Escalation package

    From the Artifact Signing account in Azure portal, open Support + Troubleshooting. If offered, continue through Create a support request or the Priority Community Support/Q&A route. Technical support normally depends on the support plan, but the portal determines the available route.^5^

    Include privately:

    • Subscription, tenant, account, profile, identity-validation, and resource IDs.
    • Both principal object IDs and the RBAC scope.
    • Exact UTC timestamps and unique correlation IDs.
    • Full verbose/debug SignTool output.
    • metadata.json with names retained but secrets removed.
    • SignTool, dlib, .NET, Azure CLI, and OS versions.
    • Dlib and unsigned executable SHA-256 hashes.
    • Screenshot/export showing profile Active, validation Completed, and certificate status.
    • Confirmation that the Azure-CLI-only test still failed.

    Retain the exact unsigned file and its hash; Microsoft specifically recommends preserving the file/hash and optionally subscribing to signing transaction events for troubleshooting.^3^

    Do not publish tenant IDs, subscription IDs, object IDs, or logs containing tokens. A Microsoft moderator can initiate a private Q&A conversation, where subscription/tenant IDs and scrubbed traces are permitted; only Microsoft moderators—not ordinary users—can send that private message.^6^


    References

    1. Set up signing integrations to use Artifact Signing
    2. Unable to get artifact signing to work. - Microsoft Q&A
    3. Artifact Signing FAQ
    4. Artifact Signing resources and roles
    5. Create an Azure support request
    6. Private messages on Microsoft Q&A
    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.