Přeskočit na obsah

Conseguir el certificado TLS a través del protocolo ACME en Linux

Las siguientes instrucciones le ayudarán con una emisión automática y la consiguiente instalación de los certificados en su servidor Linux mediante una herramienta automatizada para gestionar y descargar los certificados Cerbot. Las intrucciones sirven para el servidor web Apache, sin embargo, Cerbot se puede utilizar también para Nginx, Haproxy y Plesk. Se trata de un software abierto, es decir, de libre acceso.

Preparativos para obtener el certificado

El uso de ACME es muy sencillo, pero requiere una pequeña preparación. Antes de empezar a utilizarlo, lea los siguientes párrafos.

Obtención de los accesos para la autenticación

La implementación de ACME de DigiCert utiliza la autenticación mediante External Account Binding (EAB), lo que significa que recibirá sus propios accesos de DigiCert. Estos accesos (ACME credentials) los obtendrá fácilmente en su cuenta de cliente de SSLmarket.

Los ACME credentials se componen del Key Identifier (ID de la clave) y la HMAC key, que es su secreto para la autenticación frente a la cuenta existente. Estos datos y la URL del endpoint de ACME los necesita para el cliente ACME (Certbot).

Atención: Para cada combinación de certificado, su validez y organización se genera un conjunto único de KID y clave HMAC. Es responsabilidad suya guardarlos de forma segura.

Aviso: Para ACME utilizamos un workflow especial para separar los certificados de cada cliente por separado. La ventaja es una mayor seguridad y claridad (los certificados ACME los verá en su cuenta de cliente), la desventaja es la necesidad de crear y verificar de nuevo las organizaciones para la validación OV y EV.

Resumen de la validación de los certificados

Todos los certificados que emite DigiCert están validados. Algunos mínimamente (certificados DV), otros requieren una validación de la organización (OV y EV). ACME no es una excepción y esta validación también se utiliza aquí.

  • Los certificados DV de dominio los obtendrá inmediatamente; basta con crear los ACME credentials para el producto DV y utilizarlos. La validación DCV se realiza mediante el método HTTP-01 y el certificado se emite de inmediato.
  • Los certificados OV y EV requieren una organización validada y la validación del dominio utilizado, que está vinculado a la organización. Si la validación no está completada, la solicitud ACME tampoco puede completarse.
    • Los dominios pueden validarse automáticamente mediante HTTP-01, o pueden validarse previamente mediante DNS o correo electrónico (en tal caso, póngase en contacto con nosotros). El DCV se realiza exactamente igual que está acostumbrado.
    • La organización debe estar validada antes de la solicitud del certificado, de lo contrario esta esperará a su finalización (lo que terminará en timeout). Recomendamos que, tras activar la cuenta ACME, espere a la validación de su organización por parte de DigiCert y consulte el estado con el soporte de SSLmarket.

Para OV y EV puede empezar a utilizar ACME en cuanto la organización esté validada (la validación de dominios y empresas es válida durante 13 meses).

Certbot

Certbot es el cliente ACME más popular, que admite los principales servidores web de Linux.

Preparar Certbot en el servidor

Instale Certbot en su servidor, recomendamos instalar módulos según el tipo del servidor web. Los módulos luego hacen más fácil la elección del sitio web final para la instalación del certificado y son capaces de trabajar directamente con la configuración del servidor (le hará más fácil el trabajo de instalación).

El paquete Certbot suele estar instalado en las distribuciones de Linux, pero elimine este paquete predeterminado. Para el uso del EAB ACME de DigiCert es necesario utilizar el paquete de Snap; otras variantes pueden no ser funcionales. Lo instalará de la siguiente manera:

snap install certbot --classic

Nota: En el sitio web oficial de Certbot puede elegir su propio sistema operativo del servidor, donde está descrita la instalación paso a paso.

Obtener e instalar el certificado

En internet o en la documentación de Certbot encontrará muchos ejemplos de cómo utilizarlo y obtener un certificado. Sin embargo, como el ACME de DigiCert funciona en el ya mencionado modo EAB, es necesario complementar el comando también con la URL de ACME y sus dos ACME credentials, que ha obtenido en su administración. De lo contrario, no funcionará.

Pida el certificado en el terminal a través del comando mencionado más abajo:

sudo certbot --apache --register-unsafely-without-email --server "Su ACME Directory URL" -d www.nombredesudominio.es -d sombredesudominio.es

Parámetros opcionales del comando:

  • Certbot: le iniciará Certbot
  • --apache: elige para el uso el plugin Apache Certbot, que le instalará el certificado.
  • --register-unsafely-without-email: permite omitir la creación de la cuenta ACME.
  • --server – decide cuál de los servidores ACME debería cumplir su requisito. Es decir, define ACME Directory URL.
  • -d – El nombre completo del dominio para el cual quiere que sea emitido el certificado. Si no rellena esta opción Certbot le pedirá, a partir de los alojamientos virtuales configurados en el servidor, que confirme qué dominios quiere incluir en el pedido.

Después de introducir el comando se le ofrecerá la opción de activar en el dominio en cuestión directamente un redireccionamiento exigido a https:

Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Elija su opción y haga clic en el botón ENTER. La configuración elegida por usted será configurada y después del reinicio del servidor web se cargará. A continuación recibirá el mensaje final que le informará sobre un proceso exitoso y sobre el sitio donde están guardados los certificados.

Al mismo tiempo, Certbot instalará también el necesario certificado Intermediate, para el control de corrección de la instalación utilice a continuación nuestra herramienta en línea para el control de la instalación del certificado.

ACME.sh

El ACME de DigiCert también puede utilizarlo fácilmente con la herramienta ACME.sh. A diferencia de Certbot, es "más ligero" y no es necesario instalar tantas dependencias en el servidor.

Creación de un usuario del sistema separado bajo el cual "funcionará":

useradd -r -s /bin/bash -m -d /home/acmeuser acmeuser
mkdir -p /home/acmeuser/.acme.sh
chown -R acmeuser:acmeuser /home/acmeuser/.acme.sh
echo 'acmeuser ALL=(ALL) NOPASSWD: /usr/sbin/service nginx reload' | sudo tee /etc/sudoers.d/acmeuser

luego inicio sesión en el usuario: sudo su - acmeuser

Instalación de acme.sh

Ahora instale el cliente ACME con el paquete descargado del sitio web.

wget https://get.acme.sh -O acme.sh
sh acme.sh

La instalación realiza:

  • la instalación del propio script
  • la configuración de la tarea cron (se puede comprobar bajo el usuario acmeuser con el comando crontab -e)

A continuación registro la autoridad de certificación:

acme.sh --register-account --server https://one.digicert.com/mpki/api/v1/acme/v2/directory --eab-kid xxxxxx --eab-hmac-key yyyyyy

Antes de la propia solicitud de emisión del certificado, aún es necesario comprobar (y, en su caso, configurar) que el usuario acmeuser tenga acceso a la carpeta de destino, donde se encuentran los certificados para nginx, apache y demás servicios del servidor. La solución consiste en crear un nuevo grupo ssladmins:

sudo groupadd ssladmins
sudo usermod -aG ssladmins root
sudo usermod -aG ssladmins acmeuser
sudo chown root:ssladmins /etc/nginx/ssl/
sudo chmod 770 /etc/nginx/ssl/

Habría también otra solución: mediante visudo configurar al usuario acmeuser los permisos para copiar archivos a las carpetas correspondientes sin contraseña.

Solicitud de emisión del certificado

acme.sh --issue --server https://one.digicert.com/mpki/api/v1/acme/v2/directory -d dev.inmail.cz --days 365 -w /www/sites/inmail/dev/current/web/ --key-file /etc/nginx/ssl/dev.inmail.cz.key --fullchain-file /etc/nginx/ssl/dev.inmail.cz.cer --force --log --reloadcmd "sudo systemctl reload nginx"

Lista de los certificados emitidos e instalados:

acme.sh --list

¿Tiene preguntas?

No dude en contactar con nuestra atención al cliente, que le asesorará y le ayudará.

ZONER, S.A.

Avenida de Europa 26, EDIFICIO ÁTICA 5, 2ª planta
28224 Pozuelo de Alarcón, Madrid

CIF: 49437381
NIF/IVA: CZ49437381