<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.0.0 -",
    "macOS: 13.1.0 -",
    "tvOS: 16.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 9.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "DeviceManagement",
  "identifier" : "/documentation/DeviceManagement/ACMECertificate",
  "metadataVersion" : "0.1.0",
  "role" : "Device Management Profile",
  "symbol" : {
    "kind" : "Device Management Profile",
    "modules" : [
      "Device Management"
    ],
    "preciseIdentifier" : "mdm-profiles:ACMECertificate"
  },
  "title" : "ACMECertificate"
}
-->

# ACMECertificate

The payload that configures Automated Certificate Management Environment (ACME) settings.

```
object ACMECertificate
```

## Discussion

Specify `com.apple.security.acme` as the payload type.

Use this payload to specify how the device requests a client certificate from an Automated Certificate Management Environment (ACME) server. Other payloads can reference the resulting client identity by the payload’s `PayloadUUID`.

First the device generates an asymmetric key pair based upon the `KeyType`, `KeySize`, and `HardwareBound` fields. Then the device communicates with the ACME server. It requests a new order using the `ClientIdentifier` as the `permanent-identifier`. The ACME server responds with a challenge type of `device-attest-01`. If `Attest` is `true` the device requests an attestation of the key and device properties. Then it replies to the challenge with a WebAuthn attestation statement, and this contains the attestation if the device obtained one. The device submits a certificate signing request matching the key and containing the `ClientIdentifier`, `Subject`, `SubjectAltName`, `UsageFlags`, and `ExtendedKeyUsage` fields. The ACME server issues a certificate, and the device stores the resulting identity.

For details on the content of the attestation provided to the ACME server, see the documentation of the `DevicePropertiesAttestation` key in the [`DeviceInformationResponse.QueryResponses`](/documentation/DeviceManagement/DeviceInformationResponse/QueryResponses-data.dictionary)response. In the attestation certificate the value of the freshness code OID is the SHA-256 hash of the `token` from the `device-attest-01` challenge.

### ACME attestation hardware support

The following table indicates which System on Chips (SoCs) support ACME attestation.
If the Attest key is false or ignored, the ACME server does not receive an attestation.

|Attest key support|iPhone, iPad                        |Mac           |Apple TV               |Apple Watch   |Vision Pro|
|------------------|------------------------------------|--------------|-----------------------|--------------|----------|
|Must be false     |none                                |T1 and earlier|none                   |none          |none      |
|Ignored           |A10x Fusion and earlier             |T2            |A10x Fusion and earlier|S3 and earlier|none      |
|Supported         |A11 Bionic and later<br>All M series|Apple silicon |A12 Bionic and later   |S4 and later  |All       |

### Profile availability

|||
|--------------------------|------------------------------------------------|
|Device channel            |iOS, macOS, Shared iPad, tvOS, visionOS, watchOS|
|User channel              |macOS                                           |
|Allow manual install      |iOS, macOS, tvOS, visionOS, watchOS             |
|Requires supervision      |N/A                                             |
|Requires user-approved MDM|N/A                                             |
|Allowed in user enrollment|iOS, macOS, visionOS                            |
|Allow multiple payloads   |iOS, macOS, Shared iPad, tvOS, visionOS, watchOS|

### Example Profile

```plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PayloadContent</key>
    <array>
        <dict>
            <key>ClientIdentifier</key>
            <string>this is an identifier</string>
            <key>ExtendedKeyUsage</key>
            <array>
                <string>1.3.6.1.5.5.7.3.2</string>
            </array>
            <key>HardwareBound</key>
            <true/>
            <key>KeySize</key>
            <integer>384</integer>
            <key>KeyType</key>
            <string>ECSECPrimeRandom</string>
            <key>UsageFlags</key>
            <integer>5</integer>
            <key>PayloadIdentifier</key>
            <string>com.example.myacmepayload</string>
            <key>PayloadType</key>
            <string>com.apple.security.acme</string>
            <key>PayloadUUID</key>
            <string>cbdc6238-feec-4171-878d-34e576bbb813</string>
            <key>PayloadVersion</key>
            <integer>1</integer>
            <key>Subject</key>
            <array>
                <array>
                    <array>
                        <string>C</string>
                        <string>US</string>
                    </array>
                </array>
                <array>
                    <array>
                        <string>O</string>
                        <string>Example Inc.</string>
                    </array>
                </array>
                <array>
                    <array>
                        <string>1.2.840.113635.100.6.99999.99999</string>
                        <string>test custom OID value</string>
                    </array>
                </array>
            </array>
            <key>SubjectAltName</key>
            <dict>
                <key>dNSName</key>
                <string>site.example.com</string>
            </dict>
            <key>DirectoryURL</key>
            <string>https://acme.example.com/acme</string>
        </dict>
    </array>
    <key>PayloadDisplayName</key>
    <string>ACME</string>
    <key>PayloadIdentifier</key>
    <string>com.example.myprofile</string>
    <key>PayloadType</key>
    <string>Configuration</string>
    <key>PayloadUUID</key>
    <string>ce876f81-abf0-46f9-9e68-9b3a7ede8097</string>
    <key>PayloadVersion</key>
    <integer>1</integer>
</dict>
</plist>
```

## Topics

### Objects

[`ACMECertificate.SubjectAltName`](/documentation/DeviceManagement/ACMECertificate/SubjectAltName-data.dictionary)

The subject’s alternative name details.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)
