docs/documentation/platform/pki/code-signing/signers.mdx
A Signer is a named code-signing identity bound to an X.509 certificate with the codeSigning extended key usage (EKU). Signers represent signing capabilities—for example, release-signer for production releases or ci-signer for CI pipeline artifacts.
Private keys never leave the Infisical server. When a signing operation is requested, the server retrieves the key, computes the signature, and returns only the signature bytes.
| Feature | Description |
|---|---|
| Bound to certificate | Every signer must be linked to a certificate with the codeSigning EKU |
| Optional signing policy | Attach a signing policy to require approval before signing |
| RSA and ECDSA | Supports RSA (2048, 3072, 4096-bit) and ECDSA (P-256, P-384, P-521) |
| Audit trail | Every signing operation is recorded with actor, algorithm, and grant information |
<Note>
Only certificates with the `codeSigning` EKU appear when creating a signer.
</Note>
Without a policy, any authorized user or identity can sign immediately.
Fill in the following fields:
- **Name**: A slug-friendly name for the signer such as `release-signer`.
- **Description**: An optional description of the signer's purpose.
- **Certificate**: The code-signing certificate to bind to this signer.
- **Signing Policy** (optional): The signing policy that governs signing access for this signer. If omitted, signing is allowed without approval.
Press **Create** to save the signer.
The available signing algorithms depend on the certificate's key type:
| Algorithm | Description |
|---|---|
RSASSA_PKCS1_V1_5_SHA256 | RSA PKCS#1 v1.5 with SHA-256 |
RSASSA_PKCS1_V1_5_SHA384 | RSA PKCS#1 v1.5 with SHA-384 |
RSASSA_PKCS1_V1_5_SHA512 | RSA PKCS#1 v1.5 with SHA-512 |
RSASSA_PSS_SHA256 | RSA-PSS with SHA-256 |
RSASSA_PSS_SHA384 | RSA-PSS with SHA-384 |
RSASSA_PSS_SHA512 | RSA-PSS with SHA-512 |
| Algorithm | Description |
|---|---|
ECDSA_SHA256 | ECDSA with SHA-256 |
ECDSA_SHA384 | ECDSA with SHA-384 |
ECDSA_SHA512 | ECDSA with SHA-512 |
You can also sign data programmatically by making an API request to the Sign endpoint:
curl --request POST \
--url https://app.infisical.com/api/v1/pki/signers/{signerId}/sign \
--header 'Authorization: Bearer <access-token>' \
--header 'Content-Type: application/json' \
--data '{
"data": "<base64-encoded-data>",
"signingAlgorithm": "RSASSA_PKCS1_V1_5_SHA256",
"isDigest": true,
"clientMetadata": {
"tool": "custom-pipeline",
"hostname": "build-server-1"
}
}'