Client certificate
The Client Certificate device posture attribute checks if the device has a valid certificate signed by a trusted certificate authority (CA). The posture check can be used in Gateway and Access policies to ensure that the user is connecting from a managed device.
 Prerequisites
- A root CA that issues client certificates for your devices. You can use the Cloudflare PKI toolkit to generate a sample root CA for testing.
- Cloudflare WARP client is deployed on the device. For a list of supported modes and operating systems, refer to WARP client checks.
- A client certificate is installed and trusted on the device.System Certificate store macOS System Keychain Windows Current User\PersonalstoreLinux NSSDB 
 Configure the client certificate check
- Use the Upload mTLS certificate endpoint to upload the certificate and private key to Cloudflare. The certificate must be a root CA, formatted as a single string with - \nreplacing the line breaks. The private key is only required if you are using this custom certificate for Gateway HTTPS inspection.curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/mtls_certificates" \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data '{"name": "example_ca_cert","certificates": "-----BEGIN CERTIFICATE-----\nXXXXX\n-----END CERTIFICATE-----","private_key": "-----BEGIN PRIVATE KEY-----\nXXXXX\n-----END PRIVATE KEY-----","ca": true}'- The response will return a UUID for the certificate: {"success": true,"errors": [],"messages": [],"result": {"id": "2458ce5a-0c35-4c7f-82c7-8e9487d3ff60","name": "example_ca_cert","issuer": "O=Example Inc.,L=California,ST=San Francisco,C=US","signature": "SHA256WithRSA"...}
- In Zero Trust, go to Settings > WARP Client. 
- Scroll down to WARP client checks and select Add new. 
- Select Client certificate. 
- You will be prompted for the following information: - Name: Enter a unique name for this device posture check.
- Operating system: Select your operating system.
- Certificate ID: Enter the UUID of the root CA.
- Common name: Enter the common name of the client certificate (not the root CA).
 
- Select Save. 
Next, go to Logs > Posture and verify that the client certificate check is returning the expected results.
 How WARP checks for a client certificate
Learn how the WARP client determines if a client certificate is installed and trusted on the device.
- Open Terminal.
- Run the following command to search for a certificate with a specific common name:
$ /usr/bin/security find-certificate -c "<COMMON_NAME>" -p /Library/Keychains/System.keychain
- Open a PowerShell window.
- Run the following command to search for a certificate with a specific common name:
PS C:\Users\JohnDoe> Get-ChildItem Cert:\CurrentUser\My\ | where{$_.Subject -like "*<COMMON_NAME>*"}
- Open Terminal.
- Run the following command to search for a certificate with a specific common name:
$ certutil -L -d sql:/etc/pki/nssdb -r -n <COMMON_NAME>
For the posture check to pass, a certificate must appear in the output that validates against the uploaded root CA.