Skip to content

Commit 59ee6aa

Browse files
Highlight Trusted Signing endpoint region requirement and add 403 Forbidden troubleshooting
Make the Endpoint region requirement obvious and provide a concrete example (403 Forbidden + SignerSign failure) with steps to resolve when the endpoint doesn’t match the region of the Trusted Signing account/certificate profile.
1 parent a34eea5 commit 59ee6aa

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

articles/trusted-signing/how-to-signing-integrations.md

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,8 @@ To sign by using Trusted Signing, you need to provide the details of your Truste
147147
}
148148
```
149149

150-
The `"Endpoint"` URI value must be a URI that aligns with the region where you created your Trusted Signing account and certificate profile when you set up these resources. The table shows regions and their corresponding URIs.
150+
> [!IMPORTANT]
151+
> The `"Endpoint"` URI value must match the region where you created your Trusted Signing account **and** the certificate profile. Use one of the region-specific URIs in the table below. A region/endpoint mismatch commonly causes a 403 Forbidden error and an internal `SignerSign()` failure during signing.
151152
152153
| Region | Region class fields | Endpoint URI value |
153154
|--------------|-----------|------------|
@@ -160,6 +161,44 @@ To sign by using Trusted Signing, you need to provide the details of your Truste
160161

161162
<sup>1</sup> The optional `"CorrelationId"` field is an opaque string value that you can provide to correlate sign requests with your own workflows, such as build identifiers or machine names.
162163

164+
#### Endpoint mismatch error example
165+
166+
If the endpoint does not match the region where the Trusted Signing account and certificate profile were created, a sign request can fail with a 403 Forbidden response and an internal SignTool error. This indicates the service rejected the request due to an incorrect regional endpoint.
167+
168+
Example failure output:
169+
170+
```
171+
Submitting digest for signing...
172+
Unhandled managed exception
173+
Azure.RequestFailedException: Service request failed.
174+
Status: 403 (Forbidden)
175+
176+
Headers:
177+
Date: Sun, 09 Nov 2025 20:39:58 GMT
178+
Connection: keep-alive
179+
Strict-Transport-Security: REDACTED
180+
x-azure-ref: REDACTED
181+
X-Cache: REDACTED
182+
Content-Length: 0
183+
184+
at Azure.CodeSigning.CertificateProfileRestClient.SignAsync(String codeSigningAccountName, String certificateProfileName, SignRequest body, String xCorrelationId, String clientVersion, CancellationToken cancellationToken)
185+
at Azure.CodeSigning.CertificateProfileClient.StartSignAsync(String codeSigningAccountName, String certificateProfileName, SignRequest body, String xCorrelationId, String clientVersion, CancellationToken cancellationToken)
186+
at Azure.CodeSigning.Dlib.Core.DigestSigner.SignAsync(UInt32 algorithm, Byte[] digest, SafeFileHandle safeFileHandle, CancellationToken cancellationToken)
187+
at Azure.CodeSigning.Dlib.Core.DigestSigner.Sign(UInt32 algorithm, Byte[] digest, SafeFileHandle safeFileHandle)
188+
at AuthenticodeDigestSignExWithFileHandleManaged(_CRYPTOAPI_BLOB* pMetadataBlob, UInt32 digestAlgId, Byte* pbToBeSignedDigest, UInt32 cbToBeSignedDigest, Void* hFile, _CRYPTOAPI_BLOB* pSignedDigest, _CERT_CONTEXT** ppSignerCert, Void* hCertChainStore)
189+
190+
SignTool Error: An unexpected internal error has occurred.
191+
Error information: "Error: SignerSign() failed." (-2147467259/0x80004005)
192+
```
193+
194+
Resolution:
195+
1. Verify the region where the Trusted Signing account and certificate profile were provisioned.
196+
2. Update the `"Endpoint"` value in the JSON to the correct regional URI from the table above.
197+
3. Retry the signing operation.
198+
199+
Tip: A 403 with zero content length and `SignerSign()` failure is a strong indicator of an endpoint–region mismatch.
200+
201+
163202
### Authentication
164203

165204
This Task performs authentication using [DefaultAzureCredential](/dotnet/api/azure.identity.defaultazurecredential), which attempts a series of authentication methods in order. If one method fails, it attempts the next one until authentication is successful.

0 commit comments

Comments
 (0)