Skip to main content

Generacion 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