curl --request POST \
--url https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"caCertificate": "<string>",
"allowedCommonNames": "<string>",
"allowedSubjectAltNames": [
"<string>"
],
"verifyClientCertificateChain": false,
"accessTokenTrustedIps": [
{
"ipAddress": "0.0.0.0/0"
},
{
"ipAddress": "::/0"
}
],
"accessTokenTTL": 2592000,
"accessTokenMaxTTL": 2592000,
"accessTokenNumUsesLimit": 0
}
'import requests
url = "https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId}"
payload = {
"caCertificate": "<string>",
"allowedCommonNames": "<string>",
"allowedSubjectAltNames": ["<string>"],
"verifyClientCertificateChain": False,
"accessTokenTrustedIps": [{ "ipAddress": "0.0.0.0/0" }, { "ipAddress": "::/0" }],
"accessTokenTTL": 2592000,
"accessTokenMaxTTL": 2592000,
"accessTokenNumUsesLimit": 0
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
caCertificate: '<string>',
allowedCommonNames: '<string>',
allowedSubjectAltNames: ['<string>'],
verifyClientCertificateChain: false,
accessTokenTrustedIps: [{ipAddress: '0.0.0.0/0'}, {ipAddress: '::/0'}],
accessTokenTTL: 2592000,
accessTokenMaxTTL: 2592000,
accessTokenNumUsesLimit: 0
})
};
fetch('https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'caCertificate' => '<string>',
'allowedCommonNames' => '<string>',
'allowedSubjectAltNames' => [
'<string>'
],
'verifyClientCertificateChain' => false,
'accessTokenTrustedIps' => [
[
'ipAddress' => '0.0.0.0/0'
],
[
'ipAddress' => '::/0'
]
],
'accessTokenTTL' => 2592000,
'accessTokenMaxTTL' => 2592000,
'accessTokenNumUsesLimit' => 0
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId}"
payload := strings.NewReader("{\n \"caCertificate\": \"<string>\",\n \"allowedCommonNames\": \"<string>\",\n \"allowedSubjectAltNames\": [\n \"<string>\"\n ],\n \"verifyClientCertificateChain\": false,\n \"accessTokenTrustedIps\": [\n {\n \"ipAddress\": \"0.0.0.0/0\"\n },\n {\n \"ipAddress\": \"::/0\"\n }\n ],\n \"accessTokenTTL\": 2592000,\n \"accessTokenMaxTTL\": 2592000,\n \"accessTokenNumUsesLimit\": 0\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"caCertificate\": \"<string>\",\n \"allowedCommonNames\": \"<string>\",\n \"allowedSubjectAltNames\": [\n \"<string>\"\n ],\n \"verifyClientCertificateChain\": false,\n \"accessTokenTrustedIps\": [\n {\n \"ipAddress\": \"0.0.0.0/0\"\n },\n {\n \"ipAddress\": \"::/0\"\n }\n ],\n \"accessTokenTTL\": 2592000,\n \"accessTokenMaxTTL\": 2592000,\n \"accessTokenNumUsesLimit\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"caCertificate\": \"<string>\",\n \"allowedCommonNames\": \"<string>\",\n \"allowedSubjectAltNames\": [\n \"<string>\"\n ],\n \"verifyClientCertificateChain\": false,\n \"accessTokenTrustedIps\": [\n {\n \"ipAddress\": \"0.0.0.0/0\"\n },\n {\n \"ipAddress\": \"::/0\"\n }\n ],\n \"accessTokenTTL\": 2592000,\n \"accessTokenMaxTTL\": 2592000,\n \"accessTokenNumUsesLimit\": 0\n}"
response = http.request(request)
puts response.read_body{
"identityTlsCertAuth": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"identityId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"encryptedCaCertificate": "<unknown>",
"allowedSubjectAltNames": [
"<string>"
],
"accessTokenTTL": 7200,
"accessTokenMaxTTL": 7200,
"accessTokenNumUsesLimit": 0,
"accessTokenTrustedIps": "<unknown>",
"allowedCommonNames": "<string>",
"verifyClientCertificateChain": false
}
}{
"reqId": "<string>",
"statusCode": 400,
"message": "<string>",
"error": "<string>",
"details": "<unknown>"
}{
"reqId": "<string>",
"statusCode": 401,
"message": "<string>",
"error": "<string>"
}{
"reqId": "<string>",
"statusCode": 403,
"message": "<string>",
"error": "<string>",
"details": "<unknown>"
}{
"reqId": "<string>",
"statusCode": 404,
"message": "<string>",
"error": "<string>"
}{
"reqId": "<string>",
"statusCode": 422,
"error": "<string>",
"message": "<unknown>"
}{
"reqId": "<string>",
"statusCode": 500,
"message": "<string>",
"error": "<string>"
}Attach
Attach TLS Certificate Auth configuration onto machine identity
curl --request POST \
--url https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"caCertificate": "<string>",
"allowedCommonNames": "<string>",
"allowedSubjectAltNames": [
"<string>"
],
"verifyClientCertificateChain": false,
"accessTokenTrustedIps": [
{
"ipAddress": "0.0.0.0/0"
},
{
"ipAddress": "::/0"
}
],
"accessTokenTTL": 2592000,
"accessTokenMaxTTL": 2592000,
"accessTokenNumUsesLimit": 0
}
'import requests
url = "https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId}"
payload = {
"caCertificate": "<string>",
"allowedCommonNames": "<string>",
"allowedSubjectAltNames": ["<string>"],
"verifyClientCertificateChain": False,
"accessTokenTrustedIps": [{ "ipAddress": "0.0.0.0/0" }, { "ipAddress": "::/0" }],
"accessTokenTTL": 2592000,
"accessTokenMaxTTL": 2592000,
"accessTokenNumUsesLimit": 0
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
caCertificate: '<string>',
allowedCommonNames: '<string>',
allowedSubjectAltNames: ['<string>'],
verifyClientCertificateChain: false,
accessTokenTrustedIps: [{ipAddress: '0.0.0.0/0'}, {ipAddress: '::/0'}],
accessTokenTTL: 2592000,
accessTokenMaxTTL: 2592000,
accessTokenNumUsesLimit: 0
})
};
fetch('https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'caCertificate' => '<string>',
'allowedCommonNames' => '<string>',
'allowedSubjectAltNames' => [
'<string>'
],
'verifyClientCertificateChain' => false,
'accessTokenTrustedIps' => [
[
'ipAddress' => '0.0.0.0/0'
],
[
'ipAddress' => '::/0'
]
],
'accessTokenTTL' => 2592000,
'accessTokenMaxTTL' => 2592000,
'accessTokenNumUsesLimit' => 0
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId}"
payload := strings.NewReader("{\n \"caCertificate\": \"<string>\",\n \"allowedCommonNames\": \"<string>\",\n \"allowedSubjectAltNames\": [\n \"<string>\"\n ],\n \"verifyClientCertificateChain\": false,\n \"accessTokenTrustedIps\": [\n {\n \"ipAddress\": \"0.0.0.0/0\"\n },\n {\n \"ipAddress\": \"::/0\"\n }\n ],\n \"accessTokenTTL\": 2592000,\n \"accessTokenMaxTTL\": 2592000,\n \"accessTokenNumUsesLimit\": 0\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"caCertificate\": \"<string>\",\n \"allowedCommonNames\": \"<string>\",\n \"allowedSubjectAltNames\": [\n \"<string>\"\n ],\n \"verifyClientCertificateChain\": false,\n \"accessTokenTrustedIps\": [\n {\n \"ipAddress\": \"0.0.0.0/0\"\n },\n {\n \"ipAddress\": \"::/0\"\n }\n ],\n \"accessTokenTTL\": 2592000,\n \"accessTokenMaxTTL\": 2592000,\n \"accessTokenNumUsesLimit\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://us.infisical.com/api/v1/auth/tls-cert-auth/identities/{identityId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"caCertificate\": \"<string>\",\n \"allowedCommonNames\": \"<string>\",\n \"allowedSubjectAltNames\": [\n \"<string>\"\n ],\n \"verifyClientCertificateChain\": false,\n \"accessTokenTrustedIps\": [\n {\n \"ipAddress\": \"0.0.0.0/0\"\n },\n {\n \"ipAddress\": \"::/0\"\n }\n ],\n \"accessTokenTTL\": 2592000,\n \"accessTokenMaxTTL\": 2592000,\n \"accessTokenNumUsesLimit\": 0\n}"
response = http.request(request)
puts response.read_body{
"identityTlsCertAuth": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"identityId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"encryptedCaCertificate": "<unknown>",
"allowedSubjectAltNames": [
"<string>"
],
"accessTokenTTL": 7200,
"accessTokenMaxTTL": 7200,
"accessTokenNumUsesLimit": 0,
"accessTokenTrustedIps": "<unknown>",
"allowedCommonNames": "<string>",
"verifyClientCertificateChain": false
}
}{
"reqId": "<string>",
"statusCode": 400,
"message": "<string>",
"error": "<string>",
"details": "<unknown>"
}{
"reqId": "<string>",
"statusCode": 401,
"message": "<string>",
"error": "<string>"
}{
"reqId": "<string>",
"statusCode": 403,
"message": "<string>",
"error": "<string>",
"details": "<unknown>"
}{
"reqId": "<string>",
"statusCode": 404,
"message": "<string>",
"error": "<string>"
}{
"reqId": "<string>",
"statusCode": 422,
"error": "<string>",
"message": "<unknown>"
}{
"reqId": "<string>",
"statusCode": 500,
"message": "<string>",
"error": "<string>"
}Authorizations
An access token in Infisical
Path Parameters
The ID of the machine identity to attach the configuration onto.
Body
The PEM-encoded CA certificate to validate client certificates.
1 - 10240The comma-separated list of trusted common names that are allowed to authenticate with Infisical.
1The comma-separated list of trusted subject alternative names that are allowed to authenticate with Infisical. Prefix entries by type (URI:, DNS:, IP:, EMAIL:). Bare entries are treated as DNS names.
1When false (default), the CA certificate must be the direct issuer of the client's leaf certificate. When true, the CA certificate is treated as a trust anchor and the client-presented chain (leaf plus intermediates) is validated up to it, supporting issuers that rotate beneath a stable root such as SPIRE X.509-SVIDs.
The IPs or CIDR ranges that access tokens can be used from.
1Show child attributes
Show child attributes
The lifetime for an access token in seconds.
0 <= x <= 315360000The maximum lifetime for an access token in seconds.
1 <= x <= 315360000The maximum number of times that an access token can be used.
x >= 0Response
Default Response
Show child attributes
Show child attributes
Was this page helpful?