Appearance
Tokens de API y Agentes
¿Qué es un agente?
Un agente es un pequeño programa que se instala en un servidor donde hay un certificado SSL que se quiere automatizar.
Se utilizan agentes cuando el servidor no se puede abrir a CertGuardian para que instale el certificado, por lo que el certificado lo pide y lo instala el servidor pidiéndolo a CertGuardian.
API
Los agentes utilizan una API que permite consultar cuántos días le quedan al certificado, poder descargar el certificado para instalar uno nuevo y actualizar el CSR de un certificado.
Autenticación
La autenticación se hace mediante un Token de API que tiene que estar en la cabecera X-CG-AGENT-TOKEN de todas las llamadas a la API.
Endpoints
Consultar fecha caducidad certificado
Para consultar la fecha de caducidad del certificado usamos: /api/agent/certInfo/:id.
INFO
El id se puede obtener con al petición de listar certificado.
Ejemplo de petición:
bash
curl --location 'https://api-certguardian.entorno.es/api/agent/certInfo/23' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-CG-AGENT-TOKEN: ******' \js
const myHeaders = new Headers();
myHeaders.append("Accept", "application/json");
myHeaders.append("Content-Type", "application/json");
myHeaders.append("X-CG-AGENT-TOKEN", "******'");
const requestOptions = {
method: "GET",
headers: myHeaders,
redirect: "follow"
};
fetch("https://api-certguardian.entorno.es/api/agent/certInfo/23", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));python
import requests
import json
url = "https://api-certguardian.entorno.es/api/agent/certInfo/23"
payload = {}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-CG-AGENT-TOKEN': '******'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)Ejemplo de respuesta:
json
{
"id": 23,
"common_name": "dominios.bike",
"cert_expiry_date_timestamp": "2026-06-15T23:59:59.000000Z",
"cert_expiry_days": 41
}Instalar certificados
Para instalar un certificado usamos: /api/agent/getCertPem/:id.
INFO
El id se puede obtener con al petición de listar certificado.
Ejemplo de petición:
bash
curl --location 'https://api-certguardian.entorno.es/api/agent/getCertPem/23' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-CG-AGENT-TOKEN: ******' \js
const myHeaders = new Headers();
myHeaders.append("Accept", "application/json");
myHeaders.append("Content-Type", "application/json");
myHeaders.append("X-CG-AGENT-TOKEN", "******'");
const requestOptions = {
method: "GET",
headers: myHeaders,
redirect: "follow"
};
fetch("https://api-certguardian.entorno.es/api/agent/getCertPem/23", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));python
import requests
import json
url = "https://api-certguardian.entorno.es/api/agent/getCertPem/23"
payload = {}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-CG-AGENT-TOKEN': '******'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)Ejemplo de respuesta:
json
{
"certificate_id": 149,
"common_name": "www.dominios.bike",
"cert_expiry_date_timestamp": "2026-05-12T23:59:59.000000Z",
"cert_expiry_days": 7,
"files": {
"cert": "",
"certpfx": "",
"chain": "",
"fullchain": "",
"privkey": ""
}
}Listar certificados del agente
(wip)
Actualizar CSR de un certificado
(wip)
Desarrollo de agentes y ejemplos
Detectar que el certificado se ha renovado
Para detecar un certificado renovado el agente tiene que tener una tarea programada (cada día, por ejemplo) que llame al endpoint de consultar fecha caducidad.
Ejemplo (wip):
Descargar el certificado
Una vez detectado que el certificado ha sido renovado hay que descargar el certificado con endpoint descarga de certificado.
Ejemplo (wip):
Instalación del certificado
En esta parte tienes que realizar las llamadas API necesarias para que tu servidor añada el certificado nuevo.
Ejemplo:
Ejemplo completo
wip
Agentes disponibles
Estos son los agente que hemos desarrollado que tenemos disponibles: