{"copy":"Copiar","expand":"Desplegar","collapse":"Empacar","copy_success":"\u00a1Copiado!","copy_error":"\u00a1La copia fall\u00f3!"}

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.

Preparación para obtener el certificado

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

Obtención de accesos para autenticación

La implementación ACME de DigiCert utiliza autenticación mediante external account binding (EAB), lo que significa que obtendrá sus propios accesos y DigiCert. Estos accesos (credenciales ACME) se obtienen fácilmente en su cuenta de cliente de SSLmarket.

Las credenciales ACME constan de un Identificador de Clave (Key ID) y una Clave HMAC, que son su secreto para la autenticación frente a la cuenta existente. Estos datos y la URL del endpoint ACME son necesarios 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 su responsabilidad almacenarlos de manera segura.

Resumen de la verificación de certificados

Todos los certificados emitidos por DigiCert están verificados. Algunos mínimamente (certificados DV), otros requieren verificación de la organización (OV y EV). ACME no es una excepción y esta verificación también se utiliza.

  • Los certificados DV de dominio se obtienen de inmediato; solo necesita crear credenciales ACME para el producto DV y utilizarlas. La verificación DCV se realiza mediante el método HTTP-01 y el certificado se emite inmediatamente.
  • Los certificados OV y EV requieren una organización verificada y la verificación del dominio usado, que está vinculado a la organización. Si la verificación no se completa, la solicitud ACME no se puede completar.
    • Los dominios se pueden verificar automáticamente usando HTTP-01, o se pueden verificar de antemano mediante DNS o correo electrónico (en ese caso, contáctenos). La verificación DCV se realiza de la misma manera a la que está acostumbrado.
    • La organización debe estar verificada antes de la solicitud del certificado, de lo contrario esta quedará pendiente hasta su finalización (lo que resultará en un timeout). Recomendamos activar la cuenta ACME después de que DigiCert haya verificado su organización y consultar el estado con el soporte de SSLmarket.

Para OV y EV puede comenzar a usar ACME tan pronto como la organización esté verificada (la verificación de dominios y empresas es válida por 13 meses).

Certbot

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

Preparación de Certbot en el servidor

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

snap install certbot --classic

Certbot admite una variedad de servidores web. Especifique el tipo que está utilizando con un parámetro, por ejemplo, --apache o --nginx. Si necesita algo diferente, le recomiendo su documentación clara, que le indicará el procedimiento específico para el servidor web en cuestión.

Obtención e instalación del certificado

En Internet o en la documentación de Certbot encontrará muchos ejemplos de cómo usarlo y obtener un certificado. Sin embargo, dado que ACME de DigiCert funciona en el modo EAB mencionado, es necesario completar el comando con la URL ACME y sus dos credenciales ACME obtenidas en su administración. De otro modo, no funcionará.

En el terminal, solicite un certificado con el siguiente comando:
sudo certbot --apache --register-unsafely-without-email --server URL --eab-kid xxxxxx --eab-hmac-key yyyyyy -d www.nombredetudominio.es


Descripción de comandos:

  • Certbot – ejecuta el programa Certbot.
  • --apache – selecciona el plugin Apache de Certbot, que instala el certificado. Si utiliza otro servidor web, use otro parámetro (por ejemplo, --nginx).
  • --register-unsafely-without-email – omite el registro de correo electrónico para alertas, lo cual es innecesario.
  • --server – especifica qué servidor ACME debe cumplir su solicitud, por ejemplo, https://acme.digicert.com/v2/acme/directory.
  • -d – Nombre completo del dominio para el cual desea emitir un certificado. En el parámetro -d puede usar varios nombres de dominio (SAN), si el certificado lo permite. Estas se cobrarán, por supuesto, a menos que sea un alias gratuito (www). Si no completa esta opción, Certbot le pedirá una confirmación basada en los vhost configurados en el servidor sobre qué dominios desea incluir en la solicitud.

Después de introducir el comando, obtendrá una oferta para habilitar redireccionamiento HTTPS en el dominio de inmediato: 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):

Seleccione su opción y presione la tecla ENTER. La configuración seleccionada se establecerá y se cargará después de reiniciar el servidor web. A continuación, obtendrá un mensaje final que informa que el proceso se completó con éxito y donde se almacenan sus certificados.

Certbot también instala el certificado intermedio necesario, para verificar la corrección de la instalación use posteriormente nuestra herramienta en línea para verificar la instalación del certificado.

ACME.sh

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

Creación de un usuario del sistema independiente para ejecutar el programa: 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 inicie sesión como este usuario: sudo su - acmeuser

Instalación de acme.sh

Ahora, instale el cliente ACME con un paquete descargado de la 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 (puede verificarse bajo el usuario acmeuser con el comando crontab -e)

Luego registre la autoridad certificadora: 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 solicitud de emisión del certificado, es necesario verificar (y configurar si es necesario) que el usuario acmeuser tenga acceso al directorio objetivo donde se ubican los certificados para nginx, apache, u otros servicios en el servidor tenía el directorio accesible solo para el usuario root: personalmente lo solucioné creando un nuevo grupo ssladmins e incluyendo a los usuarios root y acmeuser.

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/

Podría usarse otra solución: mediante visudo, otorgar al usuario acmeuser permisos para copiar archivos a directorios específicos 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" Listado de certificados emitidos e instalados: acme.sh --list

¿Le resultó útil este artículo?