Documentación API de Gestión de Certificados SSL
Información General
URL Base: http://certificados.psi.unc.edu.ar/api/
Acceso: Interno (solo disponible dentro de la PSI)
Descripción: API para la gestión completa del ciclo de vida de certificados SSL, permitiendo crear, listar, verificar y eliminar certificados para dominios.
Endpoints Disponibles
1. Listar Certificados
Endpoint: /cert-list
Método: GET
Descripción: Obtiene un listado de todos los certificados existentes.
Parámetros: No requiere parámetros.
Respuesta: Lista de certificados ordenados por fecha de creación (descendente).
Ejemplo de uso:
GET http://certificados.psi.unc.edu.ar/api/cert-list
2. Crear Certificado para Dominio(s) Específico(s)
Endpoint: /cert-create
Método: GET
Descripción: Crea un nuevo certificado SSL para uno o más dominios.
Parámetros:
domains
(obligatorio): Lista de dominios separados por "+" para los cuales se creará el certificado.
Proceso:
- Verifica que no exista un certificado previo para los dominios especificados
- Comprueba que todos los dominios resuelvan al mismo balanceador
- Verifica la correcta configuración del balanceador
- Emite el certificado
- Instala el certificado en
/opt/certificados-ssl/
- Hace push al repositorio Git
Respuestas posibles:
OK: certificado creado para [domains]
- Operación exitosaERROR 1: ya existe cert para [domain]
- Ya existe un certificado para alguno de los dominiosERROR 2: DNS para [domain] no resuelve a un balanceador
- El DNS no resuelve a un balanceador conocidoERROR 3: DNS no coincide al mismo balanceador
- Los dominios no resuelven al mismo balanceadorERROR 4: Balanceador mal configurado para [domain]
- Configuración incorrecta en el balanceadorERROR 6: Fallo de emisión para [domains]
- Error en la emisión del certificadoERROR 7: No se pudo instalar cert [first]
- Error al instalar el certificadoERROR 8: GIT problema con push
- Error al hacer push al repositorio
Consideraciones:
- Este proceso puede demorar un tiempo considerable (en el orden de 1 minuto).
Ejemplo de uso:
GET http://certificados.psi.unc.edu.ar/api/cert-create?domains=ejemplo.unc.edu.ar+subdominio.ejemplo.unc.edu.ar
3. Crear Certificado por Validación DNS
Endpoint: /cert-create-dns
Método: GET
Descripción: Crea un nuevo certificado mediante validación DNS que puede ser específico o wildcard.
Parámetros:
domain
(obligatorio): Dominio para el cual se creará el certificado. Si contiene*
será un certificado wildcard (ej.*.ejemplo.unc.edu.ar
); de lo contrario será un certificado específico.
Proceso:
- Verifica que no exista un certificado previo para el dominio
- Comprueba que exista el alias DNS requerido para la validación:
- Para certificados wildcard:
_acme-challenge.[dominio]
debe apuntar aasterisco.certificados.informatica.unc.edu.ar
- Para certificados específicos:
_acme-challenge.[dominio]
debe apuntar aespecifico.certificados.informatica.unc.edu.ar
- Para certificados wildcard:
- Emite el certificado
- Instala el certificado en:
- Para certificados wildcard:
/opt/certificados-ssl/asterisco/[dominio sin *]/
- Para certificados específicos:
/opt/certificados-ssl/[dominio]/
- Para certificados wildcard:
- Hace push al repositorio Git
Respuestas posibles:
OK: certificado creado para [domain]
- Operación exitosaERROR 1: ya existe cert para [domain]
- Ya existe un certificado para el dominioERROR 2: '[alias_actual]', se esperaba '[alias]'
- El registro CNAME no está configurado correctamenteERROR 3: Fallo de emisión para [domain]
- Error en la emisión del certificadoERROR 4: No se pudo instalar cert [domain]
- Error al instalar el certificadoERROR 5: GIT problema con push
- Error al hacer push al repositorio
Ejemplo de uso para certificado específico:
GET http://certificados.psi.unc.edu.ar/api/cert-create-dns?domain=ejemplo.unc.edu.ar
Ejemplo de uso para certificado wildcard:
GET http://certificados.psi.unc.edu.ar/api/cert-create-dns?domain=*.ejemplo.unc.edu.ar
4. Eliminar Certificado
Endpoint: /cert-remove
Método: GET
Descripción: Elimina un certificado existente.
Restricciones: Disponible solo desde IPs específicas (127.0.0.1, 192.168.1.0)
Parámetros:
domain
(obligatorio): Dominio del certificado a eliminar.
Proceso:
- Revoca el certificado en la CA
- Remueve el certificado de la lista de certificados gestionados
- Elimina el directorio del certificado
- Actualiza el repositorio Git
- Elimina el certificado de la base de datos
Respuestas posibles:
EXITO: certificado de [domain] removido
- Operación exitosaERROR 1: no existe el directorio de cert para [domain]
- No existe directorio para el certificadoERROR 2: no aparece el cert para [domain]
- El certificado no está en la listaERROR 3: no existe [domain] en el repositorio
- El certificado no está en el repositorio
Ejemplo de uso (solo desde IPs autorizadas):
GET http://certificados.psi.unc.edu.ar/api/cert-remove?domain=ejemplo.unc.edu.ar
5. Verificar Existencia de Certificado
Endpoint: /cert-exist
Método: GET
Descripción: Verifica si existe un certificado para un dominio específico y lista todos los dominios cubiertos por ese certificado.
Parámetros:
domain
(obligatorio): Dominio a verificar.
Respuestas posibles:
- Lista de dominios cubiertos por el certificado (si existe)
fail
- No existe certificado para el dominio
Ejemplo de uso:
GET http://certificados.psi.unc.edu.ar/api/cert-exist?domain=ejemplo.unc.edu.ar
6. Descargar Certificado en formato ZIP
Endpoint: /cert-get-zip
Método: GET
Descripción: Genera y devuelve un archivo ZIP con el certificado completo.
Content-Type: application/zip
Parámetros:
domain
(obligatorio): Dominio cuyo certificado se desea descargar.asterisco
(opcional): Con valor "yes" si se trata de un certificado wildcard.
Respuestas posibles:
- Archivo ZIP con el certificado
Nok
- No existe certificado para el dominio
Ejemplo de uso para certificado normal:
GET http://certificados.psi.unc.edu.ar/api/cert-get-zip?domain=ejemplo.unc.edu.ar
Ejemplo de uso para certificado wildcard:
GET http://certificados.psi.unc.edu.ar/api/cert-get-zip?domain=ejemplo.unc.edu.ar&asterisco=yes
En caso del certificado wildcard, el dominio NO debe ponerse con asterico
7. Test (Endpoint de Prueba)
Endpoint: /test
Método: GET
Descripción: Endpoint de ejemplo para pruebas. No realiza ninguna acción.
Ejemplo de uso:
GET http://certificados.psi.unc.edu.ar/api/test
8. Fecha del Servidor
Endpoint: /date
Método: GET
Descripción: Devuelve la fecha y hora actual del servidor.
Ejemplo de uso:
GET http://certificados.psi.unc.edu.ar/api/date
9. Prueba de Argumentos
Endpoint: /args
Método: GET
Descripción: Endpoint para probar el paso de argumentos en formato key=value
.
Ejemplo de uso:
GET http://certificados.psi.unc.edu.ar/api/args?key1=value1&key2=value2
Consideraciones Adicionales
Estructura de Almacenamiento de Certificados
- Certificados normales:
/opt/certificados-ssl/[dominio]/
- Certificados wildcard:
/opt/certificados-ssl/asterisco/[dominio]/
Archivos en el Directorio del Certificado
Cada directorio de certificado contiene:
cert.pem
- Certificado del servidorprivkey.pem
- Clave privadafullchain.pem
- Cadena completa (certificado + intermedios)chain.pem
- Certificados intermedios
Validación DNS para Certificados
Para emitir certificados mediante validación DNS, es necesario configurar un registro CNAME:
- Para certificados wildcard:
_acme-challenge.[dominio]
debe apuntar aasterisco.certificados.informatica.unc.edu.ar
- Para certificados específicos:
_acme-challenge.[dominio]
debe apuntar aespecifico.certificados.informatica.unc.edu.ar
Actualización en Balanceadores
Tras crear o eliminar certificados, el sistema notifica automáticamente a los siguientes balanceadores:
- bal-1
- bal-2
- bal-3
- g3-lb-1
- bal-4
Fin de la documentación.
Referidos:
- Gabriel Guillaumet (gguillaumet011@unc.edu.ar)
- Valentin Castellano (valentin.castellano@unc.edu.ar)