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]
- Listar los certificados wildcard utilizados con el siguiente comando:
acme-freq.sh
- 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
- 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
-
Reemplazar la referencia al archivo
well.inc
por el nuevowell-known
de ACME en los bloques80/20080
y443/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; }
-
Verificar la integridad del archivo modificado:
nginx -t
-
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/
[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;
-
Validar la configuración:
nginx -t
-
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]
-
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.
IMPORTANTE: Antes de eliminar, verificar que el certificado ya no esté en uso enrm -rf /etc/letsencrypt/acme.sh/<dominio-wildcard>
/etc/nginx/conf/*
-
Validar que no haya conflictos en la configuración:
nginx -t
-
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.
No Comments