SSL, Let's Encrypt · 7 min read · Feb 04, 2026
Introducción a acme.sh cliente SSL de Let's Encrypt

Acme.sh es un cliente del protocolo ACME simple, poderoso y fácil de usar, escrito puramente en lenguaje Shell (Unix shell), compatible con los shells bash, dash y sh. Ayuda a gestionar la instalación, renovación y revocación de certificados SSL. Soporta los protocolos ACME versión 1 y ACME versión 2, así como certificados comodín ACME v2. Ser un cliente ACME sin dependencias lo hace aún mejor. No necesitas descargar e instalar toda la internet para hacerlo funcionar. La herramienta no requiere acceso root o sudo, pero se recomienda usar root.
Acme.sh soporta los siguientes métodos de validación que puedes usar para confirmar la propiedad del dominio:
- Modo webroot
- Modo standalone
- Modo standalone tls-alpn
- Modo Apache
- Modo Nginx
- Modo DNS
- Modo alias DNS
- Modo sin estado
¿Qué es Let’s Encrypt?
Let’s Encrypt (LE) es una autoridad de certificación (CA) que ofrece certificados SSL/TLS gratuitos y automatizados, con el objetivo de cifrar toda la web. Si posees un nombre de dominio y tienes acceso shell a tu servidor, puedes utilizar Let’s Encrypt para obtener un certificado de confianza sin costo. Let’s Encrypt puede emitir certificados SAN para hasta 100 nombres de host ** y certificados comodín. Todos los certificados son válidos por un período de 90 días.
Uso de acme.sh y comandos básicos
En esta sección, mostraré algunos de los comandos y opciones más comunes de acme.sh.
Instalación de acme.sh
Tienes algunas opciones para instalar acme.sh.
Instalar desde la web a través de curl o wget:
curl https://get.acme.sh | sh
source ~/.bashrco
wget -O - https://get.acme.sh | sh
source ~/.bashrcInstalar desde GitHub:
curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sho
wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 shClonar Git e instalar:
git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install
source ~/.bashrcEl instalador realizará 3 acciones:
- Crear y copiar
acme.sha tu directorio personal ($HOME):~/.acme.sh/. Todos los certificados también se colocarán en esta carpeta. - Crear un alias para:
acme.sh=~/.acme.sh/acme.sh. - Crear un trabajo cron diario para verificar y renovar los certificados si es necesario.
Instalación avanzada:
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install \
--home ~/myacme \
--config-home ~/myacme/data \
--cert-home ~/mycerts \
--accountemail "[email protected]" \
--accountkey ~/myaccount.key \
--accountconf ~/myaccount.conf \
--useragent "este es mi cliente."No necesitas establecer todas las opciones, solo establece aquellas que te interesan.
Opciones explicadas:
--homees un directorio personalizado para instalaracme.sh. Por defecto, se instala en~/.acme.sh.--config-homees una carpeta escribible, acme.sh escribirá todos los archivos (incluyendo certificados/claves, configuraciones) allí. Por defecto, está en--home.--cert-homees un directorio personalizado para guardar los certificados que emites. Por defecto, se guarda en--config-home.--accountemailes el correo electrónico utilizado para registrar la cuenta en Let’s Encrypt, aquí recibirás el correo de aviso de renovación. El valor por defecto está vacío.--accountkeyes el archivo que guarda tu clave privada de cuenta. Por defecto, se guarda en--config-home.--useragentes el valor del encabezado user-agent utilizado para enviar a Let’s Encrypt.
Después de que la instalación esté completa, puedes verificarlo comprobando la versión de acme.sh:
acme.sh --version
# v2.8.1El programa tiene muchos comandos y parámetros que se pueden usar. Para obtener ayuda, puedes ejecutar:
acme.sh --helpEmitir un certificado SSL
Si ya tienes un servidor web en funcionamiento, deberías usar modo webroot. Necesitarás acceso de escritura a la carpeta raíz web. Aquí hay algunos comandos de ejemplo que se pueden usar para obtener un certificado a través del modo webroot:
Dominio único + Modo webroot:
acme.sh --issue -d example.com --webroot /var/www/example.com Múltiples dominios en el mismo certificado + Modo webroot:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.comCertificado ECC/ECDSA de dominio único + Modo webroot:
acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256Múltiples dominios en el mismo certificado ECC/ECDSA + Modo webroot:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com --keylength ec-256Los valores válidos para --keylength son: 2048 (predeterminado), 3072, 4096, 8192 o ec-256, ec-384.
Si no tienes un servidor web, tal vez estés en un servidor SMTP o FTP, el puerto 80 está libre, entonces puedes usar modo standalone. Si deseas usar este modo, primero necesitarás instalar las herramientas socat.
Dominio único + Modo standalone:
acme.sh --issue -d example.com --standalone Múltiples dominios en el mismo certificado + Modo standalone:
acme.sh --issue -d example.com -d www.example.com -d mail.example.com --standalone Si no tienes un servidor web, tal vez estés en un servidor SMTP o FTP, el puerto 443 está libre. Puedes usar el modo standalone TLS ALPN. Acme.sh tiene un servidor web TLS standalone incorporado, puede escuchar en el puerto 443 para emitir el certificado.
Dominio único + Modo Standalone TLS ALPN:
acme.sh --issue -d example.com --alpnMúltiples dominios en el mismo certificado + Modo Standalone TLS ALPN:
acme.sh --issue -d example.com -d www.example.com --alpnIntegración automática de API DNS
Si tu proveedor de DNS tiene una API, acme.sh puede usar la API para agregar automáticamente el registro DNS TXT por ti. Tu certificado será emitido y renovado automáticamente. No se requiere trabajo manual. Antes de solicitar los certificados, configura tus claves API y correo electrónico. Actualmente, acme.sh tiene integración automática de DNS con alrededor de 60 proveedores de DNS de forma nativa y puede utilizar la herramienta Lexicon para aquellos que no son compatibles de forma nativa.
Dominio único + Modo API DNS de CloudFlare:
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[email protected]"
acme.sh --issue -d example.com --dns dns_cf Certificado comodín + Modo API DNS de CloudFlare:
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[email protected]"
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cfSi tu proveedor de DNS no soporta ningún acceso API, puedes agregar el registro TXT manualmente.
acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com Deberías obtener una salida como la siguiente:
Agrega el siguiente registro txt:
Dominio:_acme-challenge.example.com
Valor txt:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c
Agrega el siguiente registro txt:
Dominio:_acme-challenge.www.example.com
Valor txt:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Por favor, agrega esos registros txt a los dominios. Esperando a que el DNS surta efecto.Luego simplemente vuelve a ejecutar con el argumento renew:
acme.sh --renew -d example.comTen en cuenta que este es el modo manual de DNS y no puedes renovar automáticamente tus certificados. Tendrás que agregar un nuevo registro TXT a tu dominio manualmente cuando sea el momento de renovar los certificados. Así que usa el modo API DNS en su lugar, porque puede ser automatizado.
Instalar el certificado SSL de Let’s Encrypt
Después de que se generen los certificados, probablemente querrás instalar/copiar los certificados emitidos a la ubicación correcta en el disco. Debes usar este comando para copiar los certificados a los archivos de destino, no uses los archivos de certificados en la carpeta ~/.acme.sh/, son solo para uso interno, la estructura de carpetas puede cambiar en el futuro. Antes de la instalación, crea un directorio sensato para almacenar tus certificados. Eso puede ser /etc/letsencrypt, /etc/nginx/ssl o /etc/apache2/ssl, por ejemplo, dependiendo de tu software de servidor web y tus propias preferencias para almacenar cosas relacionadas con SSL.
Ejemplo de Apache:
acme.sh --install-cert \
--domain example.com \
--cert-file /path/to/cert/cert.pem \
--key-file /path/to/keyfile/key.pem \
--fullchain-file /path/to/fullchain/fullchain.pem \
--reloadcmd "sudo systemctl reload apache2.service"Ejemplo de Nginx:
acme.sh --install-cert \
--domain example.com \
--cert-file /path/to/cert/cert.pem \
--key-file /path/to/keyfile/key.pem \
--fullchain-file /path/to/fullchain/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"Los parámetros se almacenan en el archivo de configuración .acme.sh, por lo que necesitas configurarlo correctamente para tu sistema, ya que este archivo se lee cuando el trabajo cron ejecuta la renovación. “reloadcmd” depende de tu sistema operativo y sistema de inicio.
Renovar los certificados SSL de Let’s Encrypt
No necesitas renovar los certificados manualmente. Todos los certificados se renovarán automáticamente cada 60 días.
Sin embargo, también puedes forzar la renovación de un certificado:
acme.sh --renew -d example.com --forceo, para el certificado ECC:
acme.sh --renew -d example.com --force --eccCómo actualizar acme.sh
Puedes actualizar acme.sh al código más reciente con:
acme.sh --upgradeTambién puedes habilitar la actualización automática:
acme.sh --upgrade --auto-upgradeEntonces acme.sh se mantendrá actualizado automáticamente.
Eso es todo. Si te quedas atascado en algo, visita la página wiki de acme.sh en https://github.com/Neilpang/acme.sh/wiki.
Enlaces
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.