Skip to main content

Generacion de certificados SSL Wildcard manualmente

Generación de certificados SSL Wildcard manualmente

Esta sección documenta como crear un certificado Wildcard sin hacer uso de la API.

Precondiciones:

Debe existir una entrada específica en el mapa DNS (vista externa):

  • Para dominios wildcard (ejemplo *.psi.unc.edu.ar):

    _acme-challenge.psi.unc.edu.ar is an alias for asterisco.certificados.informatica.unc.edu.ar.
  • Debe tener acceso al host certificados-1.psi.unc.edu.ar, dado que los certificados son manejados desde ahi

Instrucciones:

  1. acceder al equipo certificados-1.psi.unc.edu.ar y a la ruta /root/.acme.sh

  2. Para crear el certificado, ejecutar:

    acme.sh --issue -d <nombre-dominio> --domain-alias asterisco.certificados.informatica.unc.edu.ar --dns dns_nsupdate
    Donde <nombre-dominio> seria por ejemplo: *.psi.unc.edu.ar

  3. Una vez creado, debemos crear una carpeta en el repositorio de certificados. el cual se encuentra en /opt/certificados-ssl/asterisco

    mkdir /opt/certificados-ssl/asterisco/<nombre-dominio-sin-ast>
    Donde <nombre-dominio-sin-ast> sería, continuando con el ejemplo anterior: psi.unc.edu.ar

  4. Ahora debemos instalar el certificado. para ello ejecutar:

    acme.sh --install-cert -d <nombre-dominio> --cert-file /opt/certificados-ssl/asterisco/<nombre-dominio-sin-ast>/cert.pem --key-file /opt/certificados-ssl/asterisco/<nombre-dominio-sin-ast>/privkey.pem --fullchain-file /opt/certificados-ssl/asterisco/<nombre-dominio-sin-ast>/fullchain.pem --ca-file /opt/certificados-ssl/asterisco/<nombre-dominio-sin-ast>/chain.pem
    Reemplazando <nombre-dominio> y <nombre-dominio-sin-ast> segun corresponda

  5. ir a la ruta del repositorio y ejecutar los siguientes comandos para commitear y pushear los cambios:

    git add --all
    git commit -m "added <nombre-dominio-sin-ast>"
    git push
  6. Por ultimo, para que los balanceadores pulleen el nuevo certificado del repositorio, ejecutar:

    bals="bal-1 bal-2 bal-3 g3-lb-1 bal-4"; for bal in $bals; do curl -s http://$bal:9090/cert-update-repo || echo "ERROR: $bal no respondio"; done