Skip to main content

Migración de Wildcards

Proceso de Migración para Certificados Wildcard

Este documento detalla los pasos para pasar de la utilización de un certificado wildcard a un certificado especifico utilizando ACME.


1. Identificación de Certificados Wildcard a Migrar

[docker-4]

  1. Listar los certificados wildcard utilizados con el siguiente comando:

    acme-freq.sh
  2. Seleccionar uno de los certificados wildcard mostrados en la lista.
    A partir de este punto, [bal] corresponderá a bal-1 o g3-lb-1, según la respuesta obtenida en el comando acme-freq.sh

[bal]

     3. Verificar qué dominios están usando el wildcard seleccionado:

egrep -lr acme.sh/<dominio-del-wildcard> /etc/nginx/conf.d
  1. Guardar la lista de dominios encontrados para iniciar el proceso de migración.

[docker-4]

5. Comprobar la información detallada del dominio:

domain-info.sh <nombre-de-dominio>

Salida del comando (ejemplo):

Existe en bal-1
No existe en /etc/letsencrypt
Existe archivo /etc/nginx/conf.d/monserrat.turnos.unc.edu.ar.conf

Usado en
/etc/nginx/conf.d/monserrat.turnos.unc.edu.ar.conf: server_name monserrat.turnos.unc.edu.ar;
/etc/nginx/conf.d/monserrat.turnos.unc.edu.ar.conf: server_name monserrat.turnos.unc.edu.ar;

Certificados usados
 ssl_certificate /etc/letsencrypt/acme.sh/turnos.unc.edu.ar/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/acme.sh/turnos.unc.edu.ar/privkey.pem;

Interpretación de la salida:

  • Primera línea: Indica que el dominio resuelve DNS (similar a host).
  • Segunda línea: Muestra si el dominio tiene o no un certificado en /etc/letsencrypt.
  • Tercera línea: Informa si existe un archivo de configuración relacionado en /etc/nginx/conf.d/.
  • Bloque de configuración: Lista los archivos donde se menciona el dominio.
  • Bloque de certificados: Indica qué archivos .pem está utilizando el dominio.

2. Modificación del Archivo de Configuración

[bal]

     6. Editar el archivo de configuración del dominio:

vi /etc/nginx/conf.d/<nombre-de-dominio>.conf
  1. Reemplazar la referencia al archivo well.inc por el nuevo well-known de ACME en los bloques 80/20080 y 443/20443 .

    La nueva ruta a incluir es:

    include /etc/nginx/conf.d/well-acme.inc;

    Si en la configuración existe la instrucción:

    rewrite ^ https://$host$request_uri? permanent;

    Reemplazarla por:

    location / {
      return 301 https://$host$request_uri;
    }

    Si el rewrite redirige a una URL específica, o existe un bloque location con dicha instruccion:

    rewrite ^ https://alguna_url? permanent;

    Por:

    location / {
      return 301 https://alguna_url;
    }
  2. Verificar la integridad del archivo modificado:

    nginx -t
  3. Reiniciar el servicio en el balanceador:

    restart1

3. Verificación de la Configuración

[pc-personal]

10. Comprobar que el token responde correctamente:

curl http://<nombre-dominio>/.well-known/acme-challenge/abc 

Esta prueba debe responder con la cadena de texto "abc" seguida de un token.

  • Si devuelve un 301, revisar que el bloque  location / incluya:
return 301 https://$host$request_uri;

11. Acceder a la plataforma de gestión de certificados en:

 http://certificados.psi.unc.edu.ar/  

Navegar a  add cert -> y agregar el dominio en Main (no es necesario agregar alias, salvo que exista el mismo dominio con www).
Este proceso puede demorar algunos minutos.

[bal]

12. Validar que el certificado se haya creado correctamente:

watch ls /opt/certificados-ssl/<nombre-de-dominio>

(Se deben visualizar los cuatro archivos .pem).

Problemas en la creación del certificado

En ocasiones, la creación del certificado puede dar errores en el proceso, sin embargo, estos pueden no ser errores reales.
Dichos errores son mostrados en la interfaz grafica de certificados.psi.unc.edu.ar

    - Error "Balanceador mal configurado": este error se muestra cuando no se han modificado las lineas del include en el archivo de configuración. Para solucionarlo, revisar que dicho cambio haya sido realizado. En caso afirmativo, ejecutar el comando restart1 dado que el problema se debe a un error de sincronización entre los balanceadores. Caso contrario, aplicar la corrección al archivo de configuración. Finalmente, intentar la creación del certificado. 

    - Error "Instalación del certificado": este error se muestra cuando los archivos del certificado no pudieron ser copiados al directorio /opt/certificados-ssl. Para solucionarlo, hacer el borrado manual descrito en la sección subsecuente y luego intentar la creación del certificado nuevamente.

Que hacer si mi certificado no se crea?

Ingresar a certificados-1.psi

ssh certificados-1.psi

Si no tiene permiso para acceder, comunicarse con gguillaumet011@unc.edu.ar o valentin.castellano@unc.edu.ar

Luego dirigirse al directorio .acme.sh

cd .acme.sh

Y eliminar el directorio correspondiente al nombre de dominio

rm -rf <nombre-de-dominio>_ecc

Luego, volver a intentar la creación del certificado.

4. Aplicación del Nuevo Certificado

[bal]

13. Modificar el archivo de configuración del balanceador para utilizar el nuevo certificado desde el repositorio: 

ssl_certificate /opt/certificados-ssl/<nombre-de-dominio>/fullchain.pem; 
ssl_certificate_key /opt/certificados-ssl/<nombre-de-dominio>/privkey.pem; 
  1. Validar la configuración:

    nginx -t
  2. Reiniciar el servicio para aplicar el nuevo certificado:

    restart1

[pc-personal]

16. Verificar que el nuevo certificado esté en uso: 

openssl s_client -connect <nombre-dominio>:443 -showcerts | grep Before

Alternativa en casos con restricciones geográficas: 

curl -v --cert-status https://<nombre-de-dominio>/ 

5. Eliminación del Certificado Antiguo

[bal]

  1. Eliminar el certificado antiguo del repositorio anterior (svn):

     

    Una vez que TODOS los dominios que usaban el certificado wildcard fueron migrados a certificados particulares, podemos eliminar el wildcard.

    rm -rf /etc/letsencrypt/acme.sh/<dominio-wildcard>
    IMPORTANTE: Antes de eliminar, verificar que el certificado ya no esté en uso en /etc/nginx/conf/*

  2. Validar que no haya conflictos en la configuración:

    nginx -t
  3. Aplicar los cambios reiniciando el servicio:

    restart1

Fin del proceso.

Alternativa para la Creación del Certificado

A través de línea de comandos

Dentro de certificados-1, ejecutar:

./cert-create.sh domains=<nombre-de-dominio>

Los certificados generados con ACME se almacenan en .acme.sh, en el home de root.

Procedimiento Manual

acme.sh --issue --stateless -d <nombre-sitio> --ecc
mkdir -p /opt/certificados-ssl/<nombre-de-dominio>
acme.sh --install-cert -d <nombre-de-dominio> \
--cert-file /opt/certificados-ssl/<nombre-de-dominio>/cert.pem \
--key-file /opt/certificados-ssl/<nombre-de-dominio>/privkey.pem \
--fullchain-file /opt/certificados-ssl/<nombre-de-dominio>/fullchain.pem \
--ca-file /opt/certificados-ssl/<nombre-de-dominio>/chain.pem

Commit en el Repositorio

git add .
git commit -m "Agregado certificado para <nombre-de-dominio>"

Actualización en Balanceadores

cd /opt/certificados-ssl
git pull

Sin embargo, todo este procedimiento puede inducir a errores humanos, por lo que se recomienda utilizar la interfaz web, que se encarga de todo este procedimiento.