diff --git a/.infisicalignore b/.infisicalignore
index ec1cbfe16..6cf864bfb 100644
--- a/.infisicalignore
+++ b/.infisicalignore
@@ -54,4 +54,6 @@ k8-operator/config/samples/universalAuthIdentitySecret.yaml:generic-api-key:8
docs/integrations/app-connections/redis.mdx:generic-api-key:80
backend/src/ee/services/app-connections/chef/chef-connection-fns.ts:private-key:42
docs/documentation/platform/pki/enrollment-methods/api.mdx:generic-api-key:93
-docs/documentation/platform/pki/enrollment-methods/api.mdx:private-key:139
\ No newline at end of file
+docs/documentation/platform/pki/enrollment-methods/api.mdx:private-key:139
+docs/documentation/platform/pki/certificate-syncs/aws-secrets-manager.mdx:private-key:62
+docs/documentation/platform/pki/certificate-syncs/chef.mdx:private-key:61
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/create.mdx b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/create.mdx
new file mode 100644
index 000000000..802a6e639
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/create.mdx
@@ -0,0 +1,4 @@
+---
+title: "Create AWS Secrets Manager PKI Sync"
+openapi: "POST /api/v1/pki/syncs/aws-secrets-manager"
+---
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/delete.mdx b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/delete.mdx
new file mode 100644
index 000000000..c2f406cc0
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/delete.mdx
@@ -0,0 +1,4 @@
+---
+title: "Delete AWS Secrets Manager PKI Sync"
+openapi: "DELETE /api/v1/pki/syncs/aws-secrets-manager/{syncId}"
+---
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/get-by-id.mdx b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/get-by-id.mdx
new file mode 100644
index 000000000..22fdf1ea1
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/get-by-id.mdx
@@ -0,0 +1,4 @@
+---
+title: "Get AWS Secrets Manager PKI Sync by ID"
+openapi: "GET /api/v1/pki/syncs/aws-secrets-manager/{syncId}"
+---
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/list.mdx b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/list.mdx
new file mode 100644
index 000000000..f487770bb
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/list.mdx
@@ -0,0 +1,4 @@
+---
+title: "List AWS Secrets Manager PKI Syncs"
+openapi: "GET /api/v1/pki/syncs/aws-secrets-manager"
+---
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/remove-certificates.mdx b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/remove-certificates.mdx
new file mode 100644
index 000000000..6fdbc0aad
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/remove-certificates.mdx
@@ -0,0 +1,4 @@
+---
+title: "Remove Certificates from AWS Secrets Manager"
+openapi: "POST /api/v1/pki/syncs/aws-secrets-manager/{syncId}/remove-certificates"
+---
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/sync-certificates.mdx b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/sync-certificates.mdx
new file mode 100644
index 000000000..f35bc39ed
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/sync-certificates.mdx
@@ -0,0 +1,4 @@
+---
+title: "Sync Certificates to AWS Secrets Manager"
+openapi: "POST /api/v1/pki/syncs/aws-secrets-manager/{syncId}/sync-certificates"
+---
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/update.mdx b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/update.mdx
new file mode 100644
index 000000000..fabbbbe12
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/aws-secrets-manager/update.mdx
@@ -0,0 +1,4 @@
+---
+title: "Update AWS Secrets Manager PKI Sync"
+openapi: "PATCH /api/v1/pki/syncs/aws-secrets-manager/{syncId}"
+---
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/chef/create.mdx b/docs/api-reference/endpoints/pki/syncs/chef/create.mdx
new file mode 100644
index 000000000..64807de11
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/chef/create.mdx
@@ -0,0 +1,4 @@
+---
+title: "Create Chef PKI Sync"
+openapi: "POST /api/v1/pki/syncs/chef"
+---
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/chef/delete.mdx b/docs/api-reference/endpoints/pki/syncs/chef/delete.mdx
new file mode 100644
index 000000000..b22dbda83
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/chef/delete.mdx
@@ -0,0 +1,4 @@
+---
+title: "Delete Chef PKI Sync"
+openapi: "DELETE /api/v1/pki/syncs/chef/{pkiSyncId}"
+---
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/chef/get-by-id.mdx b/docs/api-reference/endpoints/pki/syncs/chef/get-by-id.mdx
new file mode 100644
index 000000000..ece07770e
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/chef/get-by-id.mdx
@@ -0,0 +1,4 @@
+---
+title: "Get Chef PKI Sync by ID"
+openapi: "GET /api/v1/pki/syncs/chef/{pkiSyncId}"
+---
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/chef/list.mdx b/docs/api-reference/endpoints/pki/syncs/chef/list.mdx
new file mode 100644
index 000000000..8e00bed46
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/chef/list.mdx
@@ -0,0 +1,4 @@
+---
+title: "List Chef PKI Syncs"
+openapi: "GET /api/v1/pki/syncs/chef"
+---
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/chef/remove-certificates.mdx b/docs/api-reference/endpoints/pki/syncs/chef/remove-certificates.mdx
new file mode 100644
index 000000000..f4bb6816a
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/chef/remove-certificates.mdx
@@ -0,0 +1,4 @@
+---
+title: "Remove Certificates from Chef"
+openapi: "POST /api/v1/pki/syncs/chef/{pkiSyncId}/remove-certificates"
+---
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/chef/sync-certificates.mdx b/docs/api-reference/endpoints/pki/syncs/chef/sync-certificates.mdx
new file mode 100644
index 000000000..109248d8a
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/chef/sync-certificates.mdx
@@ -0,0 +1,4 @@
+---
+title: "Sync Certificates to Chef"
+openapi: "POST /api/v1/pki/syncs/chef/{pkiSyncId}/sync"
+---
\ No newline at end of file
diff --git a/docs/api-reference/endpoints/pki/syncs/chef/update.mdx b/docs/api-reference/endpoints/pki/syncs/chef/update.mdx
new file mode 100644
index 000000000..2d08b40e9
--- /dev/null
+++ b/docs/api-reference/endpoints/pki/syncs/chef/update.mdx
@@ -0,0 +1,4 @@
+---
+title: "Update Chef PKI Sync"
+openapi: "PATCH /api/v1/pki/syncs/chef/{pkiSyncId}"
+---
\ No newline at end of file
diff --git a/docs/docs.json b/docs/docs.json
index aea022fd4..72182232e 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -765,7 +765,9 @@
"pages": [
"documentation/platform/pki/certificate-syncs/overview",
"documentation/platform/pki/certificate-syncs/aws-certificate-manager",
- "documentation/platform/pki/certificate-syncs/azure-key-vault"
+ "documentation/platform/pki/certificate-syncs/aws-secrets-manager",
+ "documentation/platform/pki/certificate-syncs/azure-key-vault",
+ "documentation/platform/pki/certificate-syncs/chef"
]
},
{
@@ -2674,6 +2676,18 @@
"api-reference/endpoints/pki/syncs/aws-certificate-manager/remove-certificates"
]
},
+ {
+ "group": "AWS Secrets Manager",
+ "pages": [
+ "api-reference/endpoints/pki/syncs/aws-secrets-manager/list",
+ "api-reference/endpoints/pki/syncs/aws-secrets-manager/get-by-id",
+ "api-reference/endpoints/pki/syncs/aws-secrets-manager/create",
+ "api-reference/endpoints/pki/syncs/aws-secrets-manager/update",
+ "api-reference/endpoints/pki/syncs/aws-secrets-manager/delete",
+ "api-reference/endpoints/pki/syncs/aws-secrets-manager/sync-certificates",
+ "api-reference/endpoints/pki/syncs/aws-secrets-manager/remove-certificates"
+ ]
+ },
{
"group": "Azure Key Vault",
"pages": [
@@ -2685,6 +2699,18 @@
"api-reference/endpoints/pki/syncs/azure-key-vault/sync-certificates",
"api-reference/endpoints/pki/syncs/azure-key-vault/remove-certificates"
]
+ },
+ {
+ "group": "Chef",
+ "pages": [
+ "api-reference/endpoints/pki/syncs/chef/list",
+ "api-reference/endpoints/pki/syncs/chef/get-by-id",
+ "api-reference/endpoints/pki/syncs/chef/create",
+ "api-reference/endpoints/pki/syncs/chef/update",
+ "api-reference/endpoints/pki/syncs/chef/delete",
+ "api-reference/endpoints/pki/syncs/chef/sync-certificates",
+ "api-reference/endpoints/pki/syncs/chef/remove-certificates"
+ ]
}
]
}
diff --git a/docs/documentation/platform/pki/certificate-syncs/aws-secrets-manager.mdx b/docs/documentation/platform/pki/certificate-syncs/aws-secrets-manager.mdx
new file mode 100644
index 000000000..aa931ff18
--- /dev/null
+++ b/docs/documentation/platform/pki/certificate-syncs/aws-secrets-manager.mdx
@@ -0,0 +1,249 @@
+---
+title: "AWS Secrets Manager"
+description: "Learn how to configure an AWS Secrets Manager Certificate Sync for Infisical PKI."
+---
+
+**Prerequisites:**
+
+- Create an [AWS Connection](/integrations/app-connections/aws)
+- Ensure your network security policies allow incoming requests from Infisical to this certificate sync provider, if network restrictions apply.
+
+
+ The AWS Secrets Manager Certificate Sync requires the following permissions to be set on the AWS IAM user
+ for Infisical to sync certificates to AWS Secrets Manager: `secretsmanager:CreateSecret`, `secretsmanager:UpdateSecret`,
+ `secretsmanager:GetSecretValue`, `secretsmanager:DeleteSecret`, `secretsmanager:ListSecrets`.
+
+Any role with these permissions would work such as a custom policy with **SecretsManager** permissions.
+
+
+
+
+ Certificates synced to AWS Secrets Manager will be stored as JSON secrets,
+ preserving both the certificate and private key components as separate fields within the secret value.
+
+
+
+
+ 1. Navigate to **Project** > **Integrations** > **Certificate Syncs** and press **Add Sync**.
+ 
+
+ 2. Select the **AWS Secrets Manager** option.
+ 
+
+ 3. Configure the **Destination** to where certificates should be deployed, then click **Next**.
+ 
+
+ - **AWS Connection**: The AWS Connection to authenticate with.
+ - **Region**: The AWS region where secrets will be stored.
+ - **KMS Key ID** (Optional): The KMS key ID to use for encrypting secrets. Leave blank to use the default AWS managed key.
+
+ 4. Configure the **Sync Options** to specify how certificates should be synced, then click **Next**.
+ 
+
+ - **Enable Removal of Expired/Revoked Certificates**: If enabled, Infisical will remove certificates from the destination if they are no longer active in Infisical.
+ - **Preserve Secret on Renewal**: Only applies to certificate renewals. When a certificate is renewed in Infisical, this option controls how the renewed certificate is handled. If enabled, the renewed certificate will update the existing secret, preserving the same secret name. If disabled, the renewed certificate will be created as a new secret with a new name.
+ - **Update Existing Certificates**: If enabled, Infisical will update existing secrets when certificate content changes.
+ - **Certificate Name Schema** (Optional): Customize how secret names are generated in AWS Secrets Manager. Use `{{certificateId}}` as a placeholder for the certificate ID.
+ - **Auto-Sync Enabled**: If enabled, certificates will automatically be synced when changes occur. Disable to enforce manual syncing only.
+
+ 5. Configure the **Field Mappings** to customize how certificate data is stored in AWS Secrets Manager secrets, then click **Next**.
+ 
+
+ - **Certificate Field**: The field name where the certificate will be stored in the secret value (default: `certificate`)
+ - **Private Key Field**: The field name where the private key will be stored in the secret value (default: `private_key`)
+ - **Certificate Chain Field**: The field name where the full certificate chain will be stored in the secret value (default: `certificate_chain`)
+ - **CA Certificate Field**: The field name where the CA certificate will be stored in the secret value (default: `ca_certificate`)
+
+
+ **AWS Secrets Manager Secret Structure**: Certificates are stored in AWS Secrets Manager as JSON secrets with the following structure (field names can be customized via field mappings):
+ ```json
+ {
+ "certificate": "-----BEGIN CERTIFICATE-----\n...",
+ "private_key": "-----BEGIN PRIVATE KEY-----\n...",
+ "certificate_chain": "-----BEGIN CERTIFICATE-----\n...",
+ "ca_certificate": "-----BEGIN CERTIFICATE-----\n..."
+ }
+ ```
+
+ **Example with Custom Field Mappings**:
+ ```json
+ {
+ "ssl_cert": "-----BEGIN CERTIFICATE-----\n...",
+ "ssl_key": "-----BEGIN PRIVATE KEY-----\n...",
+ "ssl_chain": "-----BEGIN CERTIFICATE-----\n...",
+ "ssl_ca": "-----BEGIN CERTIFICATE-----\n..."
+ }
+ ```
+
+
+ 6. Configure the **Details** of your AWS Secrets Manager Certificate Sync, then click **Next**.
+ 
+
+ - **Name**: The name of your sync. Must be slug-friendly.
+ - **Description**: An optional description for your sync.
+
+ 7. Select which certificates should be synced to AWS Secrets Manager.
+ 
+
+ 8. Review your AWS Secrets Manager Certificate Sync configuration, then click **Create Sync**.
+ 
+
+ 9. If enabled, your AWS Secrets Manager Certificate Sync will begin syncing your certificates to the destination endpoint.
+ 
+
+
+ To create an **AWS Secrets Manager Certificate Sync**, make an API request to the [Create AWS Secrets Manager Certificate Sync](/api-reference/endpoints/pki/syncs/aws-secrets-manager/create) API endpoint.
+
+ ### Sample request
+
+
+ You can optionally specify `certificateIds` during sync creation to immediately add certificates to the sync.
+ If not provided, you can add certificates later using the certificate management endpoints.
+
+
+ ```bash Request
+ curl --request POST \
+ --url https://app.infisical.com/api/v1/pki/syncs/aws-secrets-manager \
+ --header 'Authorization: Bearer ' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "name": "my-aws-secrets-manager-cert-sync",
+ "projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "description": "an example certificate sync",
+ "connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "destination": "aws-secrets-manager",
+ "isAutoSyncEnabled": true,
+ "certificateIds": [
+ "550e8400-e29b-41d4-a716-446655440000",
+ "660f1234-e29b-41d4-a716-446655440001"
+ ],
+ "syncOptions": {
+ "canRemoveCertificates": true,
+ "preserveSecretOnRenewal": true,
+ "canImportCertificates": false,
+ "certificateNameSchema": "myapp-{{certificateId}}",
+ "fieldMappings": {
+ "certificate": "ssl_cert",
+ "privateKey": "ssl_key",
+ "certificateChain": "ssl_chain",
+ "caCertificate": "ssl_ca"
+ }
+ },
+ "destinationConfig": {
+ "region": "us-east-1",
+ "keyId": "alias/my-kms-key"
+ }
+ }'
+ ```
+
+ ### Example with Default Field Mappings
+
+ ```bash Request
+ curl --request POST \
+ --url https://app.infisical.com/api/v1/pki/syncs/aws-secrets-manager \
+ --header 'Authorization: Bearer ' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "name": "my-aws-secrets-manager-cert-sync-default",
+ "projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "description": "AWS Secrets Manager sync with default field mappings",
+ "connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "destination": "aws-secrets-manager",
+ "isAutoSyncEnabled": true,
+ "syncOptions": {
+ "canRemoveCertificates": true,
+ "preserveSecretOnRenewal": true,
+ "canImportCertificates": false,
+ "certificateNameSchema": "infisical-{{certificateId}}",
+ "fieldMappings": {
+ "certificate": "certificate",
+ "privateKey": "private_key",
+ "certificateChain": "certificate_chain",
+ "caCertificate": "ca_certificate"
+ }
+ },
+ "destinationConfig": {
+ "region": "us-west-2"
+ }
+ }'
+ ```
+
+ ### Sample response
+
+ ```json Response
+ {
+ "pkiSync": {
+ "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "name": "my-aws-secrets-manager-cert-sync",
+ "description": "an example certificate sync",
+ "destination": "aws-secrets-manager",
+ "isAutoSyncEnabled": true,
+ "destinationConfig": {
+ "region": "us-east-1",
+ "keyId": "alias/my-kms-key"
+ },
+ "syncOptions": {
+ "canRemoveCertificates": true,
+ "preserveSecretOnRenewal": true,
+ "canImportCertificates": false,
+ "certificateNameSchema": "myapp-{{certificateId}}",
+ "fieldMappings": {
+ "certificate": "ssl_cert",
+ "privateKey": "ssl_key",
+ "certificateChain": "ssl_chain",
+ "caCertificate": "ssl_ca"
+ }
+ },
+ "projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "createdAt": "2023-01-01T00:00:00.000Z",
+ "updatedAt": "2023-01-01T00:00:00.000Z"
+ }
+ }
+ ```
+
+
+
+
+## Certificate Management
+
+Your AWS Secrets Manager Certificate Sync will:
+
+- **Automatic Deployment**: Deploy certificates in Infisical to AWS Secrets Manager as JSON secrets with customizable field names
+- **Certificate Updates**: Update certificates in AWS Secrets Manager when renewals occur
+- **Expiration Handling**: Optionally remove expired certificates from AWS Secrets Manager (if enabled)
+- **Format Preservation**: Maintain certificate format during sync operations
+- **Field Customization**: Map certificate data to custom field names that match your application requirements
+- **CA Certificate Support**: Include CA certificates in secrets for complete certificate chain management
+- **KMS Encryption**: Optionally use custom KMS keys for secret encryption
+- **Regional Deployment**: Deploy secrets to specific AWS regions
+
+
+ AWS Secrets Manager Certificate Syncs support both automatic and manual
+ synchronization modes. When auto-sync is enabled, certificates are
+ automatically deployed as they are issued or renewed.
+
+
+## Manual Certificate Sync
+
+You can manually trigger certificate synchronization to AWS Secrets Manager using the sync certificates functionality. This is useful for:
+
+- Initial setup when you have existing certificates to deploy
+- One-time sync of specific certificates
+- Testing certificate sync configurations
+- Force sync after making changes
+
+To manually sync certificates, use the [Sync Certificates](/api-reference/endpoints/pki/syncs/aws-secrets-manager/sync-certificates) API endpoint or the manual sync option in the Infisical UI.
+
+
+ AWS Secrets Manager does not support importing certificates back into Infisical
+ due to the nature of AWS Secrets Manager where certificates are stored as JSON secrets
+ rather than managed certificate objects.
+
+
+## Secret Naming Constraints
+
+AWS Secrets Manager has specific naming requirements for secrets:
+
+- **Allowed Characters**: Letters, numbers, hyphens (-), and underscores (_) only
+- **Length**: 1-512 characters
diff --git a/docs/documentation/platform/pki/certificate-syncs/chef.mdx b/docs/documentation/platform/pki/certificate-syncs/chef.mdx
new file mode 100644
index 000000000..c9cb2d675
--- /dev/null
+++ b/docs/documentation/platform/pki/certificate-syncs/chef.mdx
@@ -0,0 +1,238 @@
+---
+title: "Chef"
+description: "Learn how to configure a Chef Certificate Sync for Infisical PKI."
+---
+
+**Prerequisites:**
+
+- Create a [Chef Connection](/integrations/app-connections/chef)
+- Ensure your network security policies allow incoming requests from Infisical to this certificate sync provider, if network restrictions apply.
+
+
+ The Chef Certificate Sync requires the following permissions to be set on the Chef user
+ for Infisical to sync certificates to Chef: `data bag read`, `data bag create`, `data bag update`, `data bag delete`.
+
+Any role with these permissions would work such as a custom role with **Data Bag** permissions.
+
+
+
+
+ Certificates synced to Chef will be stored as data bag items within the specified data bag,
+ preserving both the certificate and private key components as separate fields.
+
+
+
+
+ 1. Navigate to **Project** > **Integrations** > **Certificate Syncs** and press **Add Sync**.
+ 
+
+ 2. Select the **Chef** option.
+ 
+
+ 3. Configure the **Destination** to where certificates should be deployed, then click **Next**.
+ 
+
+ - **Chef Connection**: The Chef Connection to authenticate with.
+ - **Data Bag Name**: The name of the Chef data bag where certificates will be stored.
+
+ 4. Configure the **Sync Options** to specify how certificates should be synced, then click **Next**.
+ 
+
+ - **Enable Removal of Expired/Revoked Certificates**: If enabled, Infisical will remove certificates from the destination if they are no longer active in Infisical.
+ - **Preserve Data Bag Item on Renewal**: Only applies to certificate renewals. When a certificate is renewed in Infisical, this option controls how the renewed certificate is handled. If enabled, the renewed certificate will update the existing data bag item, preserving the same item name. If disabled, the renewed certificate will be created as a new data bag item with a new name.
+ - **Update Existing Certificates**: If enabled, Infisical will update existing data bag items when certificate content changes.
+ - **Certificate Name Schema** (Optional): Customize how certificate item names are generated in Chef data bags. Use `{{certificateId}}` as a placeholder for the certificate ID.
+ - **Auto-Sync Enabled**: If enabled, certificates will automatically be synced when changes occur. Disable to enforce manual syncing only.
+
+ 5. Configure the **Field Mappings** to customize how certificate data is stored in Chef data bag items, then click **Next**.
+ 
+
+ - **Certificate Field**: The field name where the certificate will be stored in the data bag item (default: `certificate`)
+ - **Private Key Field**: The field name where the private key will be stored in the data bag item (default: `private_key`)
+ - **Certificate Chain Field**: The field name where the full certificate chain will be stored in the data bag item (default: `certificate_chain`)
+ - **CA Certificate Field**: The field name where the CA certificate will be stored in the data bag item (default: `ca_certificate`)
+
+
+ **Chef Data Bag Item Structure**: Certificates are stored in Chef data bags as items with the following structure (field names can be customized via field mappings):
+ ```json
+ {
+ "id": "certificate-item-name",
+ "certificate": "-----BEGIN CERTIFICATE-----\n...",
+ "private_key": "-----BEGIN PRIVATE KEY-----\n...",
+ "certificate_chain": "-----BEGIN CERTIFICATE-----\n...",
+ "ca_certificate": "-----BEGIN CERTIFICATE-----\n..."
+ }
+ ```
+
+ **Example with Custom Field Mappings**:
+ ```json
+ {
+ "id": "certificate-item-name",
+ "ssl_cert": "-----BEGIN CERTIFICATE-----\n...",
+ "ssl_key": "-----BEGIN PRIVATE KEY-----\n...",
+ "ssl_chain": "-----BEGIN CERTIFICATE-----\n...",
+ "ssl_ca": "-----BEGIN CERTIFICATE-----\n..."
+ }
+ ```
+
+
+ 6. Configure the **Details** of your Chef Certificate Sync, then click **Next**.
+ 
+
+ - **Name**: The name of your sync. Must be slug-friendly.
+ - **Description**: An optional description for your sync.
+
+ 7. Select which certificates should be synced to Chef.
+ 
+
+ 8. Review your Chef Certificate Sync configuration, then click **Create Sync**.
+ 
+
+ 9. If enabled, your Chef Certificate Sync will begin syncing your certificates to the destination endpoint.
+ 
+
+
+ To create a **Chef Certificate Sync**, make an API request to the [Create Chef Certificate Sync](/api-reference/endpoints/pki/syncs/chef/create) API endpoint.
+
+ ### Sample request
+
+
+ You can optionally specify `certificateIds` during sync creation to immediately add certificates to the sync.
+ If not provided, you can add certificates later using the certificate management endpoints.
+
+
+ ```bash Request
+ curl --request POST \
+ --url https://app.infisical.com/api/v1/pki/syncs/chef \
+ --header 'Authorization: Bearer ' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "name": "my-chef-cert-sync",
+ "projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "description": "an example certificate sync",
+ "connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "destination": "chef",
+ "isAutoSyncEnabled": true,
+ "certificateIds": [
+ "550e8400-e29b-41d4-a716-446655440000",
+ "660f1234-e29b-41d4-a716-446655440001"
+ ],
+ "syncOptions": {
+ "canRemoveCertificates": true,
+ "preserveArn": true,
+ "canImportCertificates": false,
+ "certificateNameSchema": "myapp-{{certificateId}}",
+ "fieldMappings": {
+ "certificate": "ssl_cert",
+ "privateKey": "ssl_key",
+ "certificateChain": "ssl_chain",
+ "caCertificate": "ssl_ca"
+ }
+ },
+ "destinationConfig": {
+ "dataBagName": "ssl_certificates"
+ }
+ }'
+ ```
+
+ ### Example with Default Field Mappings
+
+ ```bash Request
+ curl --request POST \
+ --url https://app.infisical.com/api/v1/pki/syncs/chef \
+ --header 'Authorization: Bearer ' \
+ --header 'Content-Type: application/json' \
+ --data '{
+ "name": "my-chef-cert-sync-default",
+ "projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "description": "Chef sync with default field mappings",
+ "connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "destination": "chef",
+ "isAutoSyncEnabled": true,
+ "syncOptions": {
+ "canRemoveCertificates": true,
+ "preserveArn": true,
+ "canImportCertificates": false,
+ "certificateNameSchema": "{{commonName}}-{{certificateId}}",
+ "fieldMappings": {
+ "certificate": "certificate",
+ "privateKey": "private_key",
+ "certificateChain": "certificate_chain",
+ "caCertificate": "ca_certificate"
+ }
+ },
+ "destinationConfig": {
+ "dataBagName": "certificates"
+ }
+ }'
+ ```
+
+ ### Sample response
+
+ ```json Response
+ {
+ "pkiSync": {
+ "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "name": "my-chef-cert-sync",
+ "description": "an example certificate sync",
+ "destination": "chef",
+ "isAutoSyncEnabled": true,
+ "destinationConfig": {
+ "dataBagName": "ssl_certificates"
+ },
+ "syncOptions": {
+ "canRemoveCertificates": true,
+ "preserveArn": true,
+ "canImportCertificates": false,
+ "certificateNameSchema": "myapp-{{certificateId}}",
+ "fieldMappings": {
+ "certificate": "ssl_cert",
+ "privateKey": "ssl_key",
+ "certificateChain": "ssl_chain",
+ "caCertificate": "ssl_ca"
+ }
+ },
+ "projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "connectionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
+ "createdAt": "2023-01-01T00:00:00.000Z",
+ "updatedAt": "2023-01-01T00:00:00.000Z"
+ }
+ }
+ ```
+
+
+
+
+## Certificate Management
+
+Your Chef Certificate Sync will:
+
+- **Automatic Deployment**: Deploy certificates in Infisical to Chef data bags with customizable field names
+- **Certificate Updates**: Update certificates in Chef data bags when renewals occur
+- **Expiration Handling**: Optionally remove expired certificates from Chef data bags (if enabled)
+- **Format Preservation**: Maintain certificate format during sync operations
+- **Field Customization**: Map certificate data to custom field names that match your Chef cookbook requirements
+- **CA Certificate Support**: Include CA certificates in data bag items for complete certificate chain management
+
+
+ Chef Certificate Syncs support both automatic and manual
+ synchronization modes. When auto-sync is enabled, certificates are
+ automatically deployed as they are issued or renewed.
+
+
+## Manual Certificate Sync
+
+You can manually trigger certificate synchronization to Chef using the sync certificates functionality. This is useful for:
+
+- Initial setup when you have existing certificates to deploy
+- One-time sync of specific certificates
+- Testing certificate sync configurations
+- Force sync after making changes
+
+To manually sync certificates, use the [Sync Certificates](/api-reference/endpoints/pki/syncs/chef/sync-certificates) API endpoint or the manual sync option in the Infisical UI.
+
+
+ Chef does not support importing certificates back into Infisical
+ due to the nature of Chef data bags where certificates are stored as data
+ rather than managed certificate objects.
+
\ No newline at end of file
diff --git a/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-certificates.png b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-certificates.png
new file mode 100644
index 000000000..58eaae85f
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-certificates.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-destination.png b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-destination.png
new file mode 100644
index 000000000..559d7ab5c
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-destination.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-details.png b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-details.png
new file mode 100644
index 000000000..d3617bcd1
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-details.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-field-mappings.png b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-field-mappings.png
new file mode 100644
index 000000000..04b158346
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-field-mappings.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-options.png b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-options.png
new file mode 100644
index 000000000..a97ad21fe
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-options.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-review.png b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-review.png
new file mode 100644
index 000000000..23733e1bf
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-review.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-synced.png b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-synced.png
new file mode 100644
index 000000000..b230bc554
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/aws-secrets-manager-synced.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/select-aws-secrets-manager-option.png b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/select-aws-secrets-manager-option.png
new file mode 100644
index 000000000..fbc4115b7
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/aws-secrets-manager/select-aws-secrets-manager-option.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/chef/chef-certificates.png b/docs/images/platform/pki/certificate-syncs/chef/chef-certificates.png
new file mode 100644
index 000000000..c4d7022ea
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/chef/chef-certificates.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/chef/chef-destination.png b/docs/images/platform/pki/certificate-syncs/chef/chef-destination.png
new file mode 100644
index 000000000..b8cc5c365
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/chef/chef-destination.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/chef/chef-details.png b/docs/images/platform/pki/certificate-syncs/chef/chef-details.png
new file mode 100644
index 000000000..aa568b2ad
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/chef/chef-details.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/chef/chef-field-mappings.png b/docs/images/platform/pki/certificate-syncs/chef/chef-field-mappings.png
new file mode 100644
index 000000000..de580f849
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/chef/chef-field-mappings.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/chef/chef-options.png b/docs/images/platform/pki/certificate-syncs/chef/chef-options.png
new file mode 100644
index 000000000..01bdbc9b8
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/chef/chef-options.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/chef/chef-review.png b/docs/images/platform/pki/certificate-syncs/chef/chef-review.png
new file mode 100644
index 000000000..43f294585
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/chef/chef-review.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/chef/chef-synced.png b/docs/images/platform/pki/certificate-syncs/chef/chef-synced.png
new file mode 100644
index 000000000..f4ed46add
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/chef/chef-synced.png differ
diff --git a/docs/images/platform/pki/certificate-syncs/chef/select-chef-option.png b/docs/images/platform/pki/certificate-syncs/chef/select-chef-option.png
new file mode 100644
index 000000000..d7b8d9c9b
Binary files /dev/null and b/docs/images/platform/pki/certificate-syncs/chef/select-chef-option.png differ