- Overview
- Reference Guide
- Setup & Architecture
- Release Notes
- Workflow
- API Reference
- Integration Guide
- Discovery Agent Setup Guide
ACME
The ACME endpoints manage ACME profiles, external ACME directory URLs, and DNS domains used for ACME validation, and expose the CertSecure Manager ACMEv2 directory.
For the corresponding user interface, refer to the Utilities > ACME section.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /acme/acme_profiles | List ACME profiles. |
| POST | /acme/add_domain | Add ACME domain. |
| POST | /acme/add_url | Add ACME URL. |
| POST | /acme/Change_ca | Change CA for ACME profile. |
| POST | /acme/delete_domain | Delete ACME domain. |
| DELETE | /acme/delete_profile | Delete ACME profile. |
| POST | /acme/delete_url | Delete ACME URL. |
| POST | /acme/generate_profile | Create ACME profile. |
| GET | /acme/get_domains | List ACME domains. |
| GET | /acme/get_urls | List ACME URLs. |
| POST | /acme/update_domain | Update ACME domain. |
| POST | /acme/update_url | Update ACME URL. |
| GET | /acme/validate_domain/{_id} | Validate ACME domain. |
| GET | /acme/validate_url/{_id} | Validate ACME URL. |
| GET | /v2/acme | ACMEv2 directory. |
Note: The endpoints
/acme/add_url, /acme/update_url, /acme/delete_url, /acme/get_urls and /acme/validate_url/{_id} were removed in version 3.4. ACME CAs are configured as connector CAs; see the CA Management endpoints. Every endpoint on this page except GET /v2/acme requires authentication.
GET /acme/acme_profiles
Lists the ACME profiles (ACME accounts) created in CertSecure Manager.
Example Request
curl -X GET "https://<certsecure-backend-url>/acme/acme_profiles" \
-H "Authorization: Bearer <token>"
Responses
| Status Code | Description |
|---|---|
| 200 | Profiles. |
POST /acme/add_domain
Adds a domain for DNS validation with the credentials of its DNS provider.
Request Body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
credentials |
object | Yes | - |
domain |
string | Yes | - |
provider |
string | Yes | DNS provider (Cloudflare, Route53, Azure, etc.) |
auto_revalidate |
boolean | No | Re-validate the domain automatically when the last validation is older than revalidate_after_days. Default false. |
revalidate_after_days |
integer | No | Age in days after which the domain is re-validated. Values are limited to 1 to 365. Default 30. |
Example Request
curl -X POST "https://<certsecure-backend-url>/acme/add_domain" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"credentials": {}, "domain": "string", "provider": "string"}'
Responses
| Status Code | Description |
|---|---|
| 200 | The resource was added. |
POST /acme/add_url
Adds an external ACME directory URL, with optional External Account Binding (EAB) credentials.
Request Body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
cas |
array of string | No | - |
email |
string | No | Email address of the certificate owner. |
google_public_ca |
boolean | No | - |
hmac |
string | No | EAB HMAC key. |
kid |
string | No | EAB key identifier. |
name |
string | Yes | Name of the resource. |
url |
string | Yes | ACME directory URL. |
Example Request
curl -X POST "https://<certsecure-backend-url>/acme/add_url" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"name": "string", "url": "string"}'
Responses
| Status Code | Description |
|---|---|
| 200 | The resource was added. |
POST /acme/Change_ca
Changes the CA and template used by an ACME profile.
Request Body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
UserId |
string | Yes | User ID of the ACME profile. |
ca |
string | Yes | Name of the certificate authority (CA) as configured in CertSecure Manager. |
template |
string | Yes | Name of the certificate template. |
Example Request
curl -X POST "https://<certsecure-backend-url>/acme/Change_ca" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"UserId": "string", "ca": "string", "template": "string"}'
Responses
| Status Code | Description |
|---|---|
| 200 | Changed. |
POST /acme/delete_domain
Deletes a domain configured for DNS validation.
Request Body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | ID of the record. |
Example Request
curl -X POST "https://<certsecure-backend-url>/acme/delete_domain" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"id": "string"}'
Responses
| Status Code | Description |
|---|---|
| 200 | The resource was deleted. |
DELETE /acme/delete_profile
Deletes an ACME profile.
Request Body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
UserId |
string | Yes | User ID of the ACME profile. |
Example Request
curl -X DELETE "https://<certsecure-backend-url>/acme/delete_profile" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"UserId": "string"}'
Responses
| Status Code | Description |
|---|---|
| 200 | The resource was deleted. |
POST /acme/delete_url
Deletes an external ACME directory URL.
Request Body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | ID of the record. |
Example Request
curl -X POST "https://<certsecure-backend-url>/acme/delete_url" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"id": "string"}'
Responses
| Status Code | Description |
|---|---|
| 200 | The resource was deleted. |
POST /acme/generate_profile
Creates an ACME profile for the given email address.
Request Body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
email |
string | Yes | Email address of the certificate owner. |
Example Request
curl -X POST "https://<certsecure-backend-url>/acme/generate_profile" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"email": "string"}'
Responses
| Status Code | Description |
|---|---|
| 200 | The resource was created. |
GET /acme/get_domains
Lists the domains configured for DNS validation, with their DNS provider and validation state.
Each domain also carries last_validated (an ISO 8601 UTC timestamp, or null when the domain has never been validated), auto_revalidate (boolean) and revalidate_after_days (integer). Credentials are never returned.
Example Request
curl -X GET "https://<certsecure-backend-url>/acme/get_domains" \
-H "Authorization: Bearer <token>"
Example Response
{
"domains": [
{
"id": "60052",
"domain": "example.com",
"provider": "digitalocean",
"Valid": "Invalid"
}
]
}
Responses
| Status Code | Description |
|---|---|
| 200 | Domains. |
GET /acme/get_urls
Lists the external ACME directory URLs configured in CertSecure Manager.
Example Request
curl -X GET "https://<certsecure-backend-url>/acme/get_urls" \
-H "Authorization: Bearer <token>"
Example Response
{
"urls": [
{
"id": "54002",
"name": "Lets Encrypt",
"url": "https://acme-v02.api.letsencrypt.org/directory",
"email": null,
"cas": []
}
]
}
Responses
| Status Code | Description |
|---|---|
| 200 | URLs. |
POST /acme/update_domain
Updates a domain configured for DNS validation.
Request Body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
credentials |
object | No | - |
domain |
string | No | - |
id |
string | Yes | ID of the record. |
provider |
string | No | - |
auto_revalidate |
boolean | No | Turn automatic re-validation on or off. |
revalidate_after_days |
integer | No | Age in days after which the domain is re-validated. Values are limited to 1 to 365. |
Example Request
curl -X POST "https://<certsecure-backend-url>/acme/update_domain" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"id": "string"}'
Responses
| Status Code | Description |
|---|---|
| 200 | The resource was updated. |
POST /acme/update_url
Updates an external ACME directory URL.
Request Body (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | ID of the record. |
Example Request
curl -X POST "https://<certsecure-backend-url>/acme/update_url" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"id": "string"}'
Responses
| Status Code | Description |
|---|---|
| 200 | The resource was updated. |
GET /acme/validate_domain/{_id}
Validates a domain configured for DNS validation.
The request returns at once with {"Valid": "Waiting"} and the check runs in the background. After the zone check succeeds, domain control validation is also started at each configured CA that supports validating a domain before an order. Read the result with GET /acme/get_domains.
Request Parameters
| Name | Located In | Type | Required | Description |
|---|---|---|---|---|
_id |
Path | string | Yes | ID of the record. |
Example Request
curl -X GET "https://<certsecure-backend-url>/acme/validate_domain/<_id>" \
-H "Authorization: Bearer <token>"
Responses
| Status Code | Description |
|---|---|
| 200 | Validation result. |
GET /acme/validate_url/{_id}
Validates an external ACME directory URL.
Request Parameters
| Name | Located In | Type | Required | Description |
|---|---|---|---|---|
_id |
Path | string | Yes | ID of the record. |
Example Request
curl -X GET "https://<certsecure-backend-url>/acme/validate_url/<_id>" \
-H "Authorization: Bearer <token>"
Responses
| Status Code | Description |
|---|---|
| 200 | Validation result. |
GET /v2/acme
Returns the ACMEv2 directory (RFC 8555) of CertSecure Manager. ACME clients use this URL as their directory URL.
Note: This endpoint does not require authentication.
Example Request
curl -X GET "https://<certsecure-backend-url>/v2/acme"
Example Response
{
"newNonce": "https://<certsecure-backend-url>/v2/acme/newnonce",
"newAccount": "https://<certsecure-backend-url>/v2/acme/newaccount",
"newOrder": "https://<certsecure-backend-url>/v2/acme/neworders",
"keyChange": "https://<certsecure-backend-url>/v2/acme/key-change",
"meta": {
"name": "ACME Server Home",
"externalAccountRequired": true
}
}
Responses
| Status Code | Description |
|---|---|
| 200 | Directory. |