Lanzador Productos Bitnami Documentaciónimaxe CLI Blog Contacto
imaxe tls certificados v1.0.0

Certificados HTTPS, sin dolor

Emite y renueva certificados Let's Encrypt gratuitos para tu servidor y los recarga sin cortar el servicio. Un comando lo pone en marcha; a partir de ahí se renueva solo.

$ imaxe tls issue app.ejemplo.com --email [email protected]
Versión
v1.0.0
Subcomandos
6
Config
/etc/imaxe/tls.yml
Requiere root
Renovación
auto · timer

Qué hace este módulo #

Un certificado TLS es lo que convierte http:// en https://: cifra la conexión entre tus visitantes y el servidor, y hace que el navegador muestre el candado en vez de un aviso de «sitio no seguro».

El módulo tls se encarga de todo el ciclo de vida de ese certificado apoyándose en certbot: lo solicita a Let's Encrypt (una autoridad gratuita y reconocida), demuestra que el dominio es tuyo mediante el reto ACME, instala el certificado donde tu servidor web lo espera y lo renueva automáticamente antes de que caduque — sin que tengas que acordarte.

Antes de empezar

Tu dominio (p. ej. app.ejemplo.com) debe apuntar por DNS a la IP de este servidor, y el puerto 80 debe estar accesible para el reto HTTP-01. Si no, la emisión fallará en el paso de validación.

Guía rápidatareas paso a paso

Tareas comunes #

Elige lo que quieres hacer. Cada receta trae el comando ya escrito — solo cambia el dominio y tu correo por los tuyos, y pulsa Copiar.

1

Emitir mi primer certificado

Consigue el candado HTTPS para tu dominio en un minuto.

Conéctate por SSH a tu servidor con el usuario ubuntu.

Lanza el comando cambiando el dominio y el correo por los tuyos (el correo solo se usa para avisarte si algo caduca):

terminal
$ sudo imaxe tls issue app.ejemplo.com --email [email protected]

Espera unos segundos. Verás el progreso del reto y, al final, la fecha de caducidad.

Tu sitio ya carga por https:// con candado. La renovación automática queda activada — no tienes que hacer nada más.
2

Ver cuáles hay y cuándo caducan

Comprueba de un vistazo el estado de tus certificados.

Un resumen rápido del estado general y del timer de renovación:

terminal
$ sudo imaxe tls status

¿Quieres el detalle dominio a dominio, con días restantes y ruta del fullchain? Usa list:

terminal
$ sudo imaxe tls list
Si ves algún dominio con pocos días, salta a la receta Forzar una renovación.
3

Forzar una renovación

Normalmente es automática, pero puedes adelantarla si lo necesitas.

Renueva todos los certificados próximos a caducar (esto es justo lo que hace el timer):

terminal
$ sudo imaxe tls renew

¿Quieres ensayarlo primero sin tocar disco, o renovar aunque aún queden días? Añade --dry-run o --force:

terminal
$ sudo imaxe tls renew --dry-run
$ sudo imaxe tls renew --force
El servidor web se recarga solo con el certificado nuevo. Tus visitantes no notan ningún corte.
4

Revocar un certificado

Invalida un certificado en la autoridad (p. ej. si la clave se filtró).

Revoca el certificado de un dominio en Let's Encrypt, indicando el motivo si lo conoces:

terminal
$ sudo imaxe tls revoke app.ejemplo.com --reason keycompromise
El certificado deja de ser válido de inmediato. Si el dominio sigue en uso, vuelve a emitir uno nuevo con issue.
5

Borrar un certificado del disco

Deja de gestionar un dominio que ya no usas.

Elimina el certificado y sus claves del disco. Ojo: esto no lo revoca en la autoridad — para eso usa revoke antes.

terminal
$ sudo imaxe tls delete tienda.ejemplo.com
El dominio desaparece de imaxe tls list y su renovación automática se detiene.
¿Algo no funcionó?

El error más habitual es que el DNS aún no ha propagado o el puerto 80 está cerrado. Espera unos minutos y reintenta. Si persiste, prueba primero en modo de pruebas con --staging (ver la referencia) para no gastar el cupo de intentos.

Referencia CLIcomandos, flags y ficheros

Sinopsis #

uso
imaxe tls <subcomando> [<dominio>...] [--email CORREO] [flags]

Los subcomandos que tocan certificados requieren privilegios de root (usa sudo) porque escriben en /etc/imaxe/ y recargan servicios del sistema. Añade --json a list o status para obtener salida legible por máquina, apta para scripting.

Subcomandos #

SubcomandoQué haceFlags relevantes
issueEmite un certificado para uno o más dominios, resolviendo el reto ACME.--email, --webroot, --standalone, --staging
renewRenueva los certificados próximos a caducar y recarga el servidor web. Apto para timer.--dry-run, --force
listLista los certificados gestionados con días a caducar y ruta del fullchain.--json
statusResumen: nº de certificados, próximos a caducar y estado del timer de renovación.--json
revokeRevoca un certificado por dominio en la autoridad (ACME).--reason
deleteBorra el certificado y sus claves del disco. No revoca en ACME.

Argumentos y flags #

FlagTipoPor defectoDescripción
<dominio> req.string…Uno o más dominios para el certificado. En issue el primero es el principal (CN); el resto, SAN. En revoke/delete, el dominio a operar.
--emailstringtls.ymlCorreo de contacto de la cuenta ACME. Obligatorio en el primer issue; luego se reutiliza el de tls.yml.
--webrootpath/var/www/htmlDirectorio raíz para el reto HTTP-01. El método por defecto.
--standaloneboolfalseUsa el servidor embebido de certbot en lugar de un webroot. Requiere el puerto 80 libre.
--stagingboolfalseUsa el entorno de pruebas de Let's Encrypt (no cuenta para el límite de tasa). El certificado no será de confianza.
--dry-runboolfalseEn renew, simula la renovación sin tocar disco.
--forceboolfalseEn renew, renueva aunque no esté próximo a caducar.
--reasonenumunspecifiedEn revoke: unspecified, keycompromise, superseded, cessationofoperation.
--jsonboolfalseEn list/status, emite el resultado como JSON en stdout.

Ficheros y rutas #

RutaContenido
/etc/imaxe/tls.ymlConfiguración del módulo: correo por defecto, método (webroot/standalone), webroot, staging, auto-renovación y hook de recarga.
/etc/letsencrypt/live/<dominio>/Certificado (fullchain.pem) y clave privada (privkey.pem) gestionados por certbot.
/var/log/imaxe/tls.logRegistro estructurado de cada emisión, renovación y revocación.
imaxe-tls.timerTemporizador systemd que dispara renew periódicamente.

Ejemplo de tls.yml:

/etc/imaxe/tls.yml
email: [email protected]
default_method: webroot
webroot: /var/www/html
staging: false
auto_renew: true
reload_hook: systemctl reload nginx

Códigos de salida y logs #

Cada ejecución devuelve un código que puedes comprobar con echo $? — útil para encadenar en scripts:

0OKOperación completada sin cambios pendientes.
1ERRError genérico no clasificado. Revisa el log.
2USAGEArgumentos inválidos o faltantes.
3CHALLENGEFalló la validación ACME (DNS/HTTP).
4RATELIMITLímite de Let's Encrypt alcanzado.
5RELOADEmisión OK pero falló la recarga del servidor web.

Sigue el log en vivo mientras depuras:

terminal
$ sudo journalctl -u imaxe-tls -f
$ sudo tail -f /var/log/imaxe/tls.log

Ejemplos avanzados #

Varios dominios en un mismo certificado

El primer dominio es el principal; los siguientes se añaden como SAN, todos en un único certificado:

terminal
$ sudo imaxe tls issue ejemplo.com www.ejemplo.com \
    --email [email protected]

Prueba segura antes de producción

Valida toda la cadena contra el entorno de pruebas para no gastar el cupo real. Con --standalone no necesitas un servidor web configurado:

terminal
$ sudo imaxe tls issue app.ejemplo.com \
    --email [email protected] --standalone --staging \
  || echo "falló con código $?"

Resolución de problemas #

SíntomaCausa probableSolución
Sale CHALLENGE (código 3)El dominio no resuelve a este host o el puerto 80 está cerrado.Verifica el registro A/AAAA y abre el 80 en el security group; reintenta.
Sale RATELIMIT (código 4)Demasiadas emisiones del mismo dominio en una semana.Usa --staging para probar; espera a que se libere la ventana.
HTTPS carga pero con avisoEmitido en --staging: el certificado no es de confianza.Reemite sin --staging para obtener uno válido.
Sale RELOAD (código 5)El reload_hook apunta a un servicio inexistente.Ajusta reload_hook en tls.yml y vuelve a lanzar renew.

¿Te atascaste con el módulo TLS?

Escríbenos con la salida de «imaxe <módulo> status --json» y te respondemos rápido.

Contactar con soporte