GNU/Linux >> Tutoriales Linux >  >> Linux

Primeros pasos con acme.sh Cliente Lets Encrypt SSL

Acme.sh es un cliente de protocolo ACME simple, potente y fácil de usar escrito exclusivamente en lenguaje Shell (Unix shell), compatible con shells bash, dash y sh. Ayuda a gestionar la instalación, renovación y revocación de certificados SSL. Admite los protocolos ACME versión 1 y ACME versión 2, así como los certificados comodín ACME v2. Ser un cliente ACME de cero dependencias lo hace aún mejor. No necesita descargar e instalar todo Internet para que funcione. La herramienta no requiere acceso a la raíz o sudo, pero se recomienda usar la raíz.

Acme.sh admite los siguientes métodos de validación que puede usar para confirmar la propiedad del dominio:

  • Modo raíz web
  • Modo independiente
  • Modo tls-alpn independiente
  • Modo Apache
  • Modo Nginx
  • Modo DNS
  • Modo de alias de 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 posee un nombre de dominio y tiene acceso de shell a su servidor, puede utilizar Let's Encrypt para obtener un certificado de confianza sin costo alguno. 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 acme.sh más comunes.

Instalación de Acme.sh

Tiene algunas opciones para instalar acme.sh.

Instalar desde la web a través de curl o wget :

curl https://get.acme.sh | sh
source ~/.bashrc

o

wget -O - https://get.acme.sh | sh
source ~/.bashrc

Instalar desde GitHub :

curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

o

wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

Clonar Git e instalar:

git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install
source ~/.bashrc

El instalador realizará 3 acciones:

  1. Cree y copie acme.sh a su directorio de inicio ($HOME ):~/.acme.sh/ . Todos los certificados también se colocarán en esta carpeta.
  2. Crear alias para:acme.sh=~/.acme.sh/acme.sh .
  3. Cree 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 "this is my client."

No necesita configurar todas las opciones, solo configure aquellas que le interesen.

Opciones explicadas:

  • --home es un directorio personalizado para instalar acme.sh in. Por defecto, se instala en ~/.acme.sh.
  • --config-home es una carpeta escribible, acme.sh escribirá todos los archivos (incluidos certificados/claves, configuraciones) allí. Por defecto, está en --home.
  • --cert-home es un directorio personalizado para guardar los certificados que emite. Por defecto, se guarda en --config-home .
  • --accountemail es el correo electrónico utilizado para registrar la cuenta en Let's Encrypt, recibirá un correo electrónico de notificación de renovación aquí. El valor predeterminado está vacío.
  • --accountkey es el archivo que guarda la clave privada de su cuenta. Por defecto se guarda en --config-home .
  • --useragent es el valor del encabezado del agente de usuario utilizado para enviar a Let's Encrypt.

Una vez completada la instalación, puede verificarla consultando acme.sh versión:

acme.sh --version
# v2.8.1

El programa tiene muchos comandos y parámetros que se pueden usar. Para obtener ayuda, puede ejecutar:

acme.sh --help

Emitir un certificado SSL

Si ya tiene un servidor web en ejecución, debe usar el modo webroot . Necesitará acceso de escritura a la carpeta raíz web. Aquí hay algunos comandos de ejemplo que se pueden usar para obtener el 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.com

Certificado ECC/ECDSA de dominio único + modo Webroot:

acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256

Mú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-256

Valores válidos para --keylength son:2048 (predeterminado), 3072, 4096, 8192 o ec-256, ec-384.

Si no tiene un servidor web, tal vez esté en un servidor SMTP o FTP, el puerto 80 está libre, entonces puede usar el modo independiente. Si desea utilizar este modo, primero deberá instalar las herramientas de socat.

Dominio único + modo independiente:

acme.sh --issue -d example.com --standalone

Múltiples dominios en el mismo certificado + modo independiente:

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --standalone

Si no tiene un servidor web, tal vez esté en un servidor SMTP o FTP, el puerto 443 es gratuito. Puede utilizar el modo TLS ALPN independiente. Acme.sh tiene un servidor web TLS independiente integrado, puede escuchar en el puerto 443 para emitir el certificado.

Dominio único + Modo TLS ALPN independiente:

acme.sh --issue -d example.com --alpn

Múltiples dominios en el mismo certificado + Modo TLS ALPN independiente:

acme.sh --issue -d example.com -d www.example.com --alpn

Integración automática de la API de DNS

Si su proveedor de DNS tiene una API, acme.sh puede usar la API para agregar automáticamente el registro DNS TXT para usted. Su certificado se emitirá y renovará automáticamente. No se requiere trabajo manual. Antes de solicitar los certificados, configure sus claves API y correo electrónico. Actualmente, acme.sh tiene una integración de DNS automática 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

Modo comodín cert + API de DNS de CloudFlare:

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"
export CF_Email="[email protected]"
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf

Si su proveedor de DNS no admite ningún acceso a la API, puede agregar el registro TXT manualmente.

acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com

Debería obtener una salida como la siguiente:

Add the following txt record:
Domain:_acme-challenge.example.com
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c

Add the following txt record:
Domain:_acme-challenge.www.example.com
Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Please add those txt records to the domains. Waiting for the dns to take effect.

Luego simplemente vuelva a ejecutar con renew argumento:

acme.sh --renew -d example.com

Tenga en cuenta que este es el modo manual de DNS y no puede renovar automáticamente sus certificados. Tendrá que agregar un nuevo registro TXT a su dominio a mano cuando llegue el momento de renovar los certificados. Por lo tanto, use el modo DNS API en su lugar, ya que se puede automatizar.

Instalar Let's encrypt certificado SSL

Después de generar los certificados, probablemente desee instalar o copiar los certificados emitidos en la ubicación correcta del disco. Debe usar este comando para copiar los certificados en los archivos de destino, no use los archivos de certificados en ~/.acme.sh/ carpeta, son solo para uso interno, la estructura de la carpeta puede cambiar en el futuro. Antes de la instalación, cree un directorio sensible para almacenar sus certificados. Eso puede ser /etc/letsencrypt , /etc/nginx/ssl /etc/apache2/ssl por ejemplo, según el software de su servidor web y sus propias preferencias para almacenar cosas relacionadas con SSL.

Apache ejemplo:

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"

Nginx ejemplo:

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 debe hacerlo bien para su sistema, ya que este archivo se lee cuando el trabajo cron ejecuta la renovación. "reloadcmd" depende de su sistema operativo y sistema de inicio.

Renueve los certificados Let's Encrypt SSL

No necesita renovar los certificados manualmente. Todos los certificados se renovarán automáticamente cada 60 días.

Sin embargo, también puede forzar la renovación de un certificado:

acme.sh --renew -d example.com --force

o, para el certificado ECC:

acme.sh --renew -d example.com --force --ecc

Cómo actualizar acme.sh

Puede actualizar acme.sh al último código con:

acme.sh --upgrade

También puede habilitar la actualización automática:

acme.sh --upgrade --auto-upgrade

Entonces 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

  • https://github.com/Neilpang/acme.sh
  • https://letsencrypt.org/

Linux
  1. Comenzando con Zsh

  2. Primeros pasos con Lets Encrypt SSL Certificates en Ubuntu

  3. Cómo administrar los certificados Lets Encrypt SSL/TLS con certbot

  4. Protección de ISPConfig 3.1 con un certificado SSL gratuito de Lets Encrypt

  5. Primeros pasos con PostgreSQL en Linux

Primeros pasos con LibreCAD

Reflexiones sobre SSL compatible intermedio con certificados Lets Encrypt

Cómo instalar WonderCMS con Nginx y Lets Encrypt SSL en CentOS 7

Primeros pasos con GIT en Linux

Primeros pasos con el sistema operativo Linux

Primeros pasos con systemctl