ACME#
Proporciona obtención automática de certificados utilizando el protocolo ACME.
Cuando compila desde el código fuente, el módulo no se compila por defecto;
debe habilitarse con la opción de compilación
En este ejemplo, un cliente ACME llamado Para otros métodos de validación (DNS, ALPN, basada en hooks) e instrucciones de configuración detalladas, consulte la sección Configuración de ACME. Especifica el cliente ACME que obtiene un certificado
para los identificadores de certificado válidos de este bloque server.
Un único certificado cubre todos los nombres de dominio válidos y las direcciones IP
especificados en las directivas server_name
de todos los bloques server
que hacen referencia al cliente con el nombre dado;
si la configuración Cada vez que Angie se inicia, se solicitan nuevos certificados para todos los identificadores
que carecen de un certificado válido.
Las posibles razones incluyen la caducidad del certificado,
archivos faltantes o ilegibles,
y cambios en la configuración del certificado. Nota Esta directiva solo controla qué identificadores de certificado válidos
se incluyen en las solicitudes de certificados;
no afecta a dónde puede usarse el certificado.
Cualquier bloque Nota Actualmente, los dominios especificados con expresiones regulares
no son compatibles y serán omitidos. Los dominios comodín solo son compatibles con Las direcciones IPv4 e IPv6 son compatibles a menos que el cliente use
Esta directiva puede especificarse varias veces
para cargar certificados de diferentes tipos, por ejemplo RSA y ECDSA: Distinto en la versión 1.11.0. Distinto en la versión 1.12.0. Predeterminado — http Define un cliente ACME con un nombre único a nivel global.
Debe ser válido para un directorio,
es una cadena con variables,
y se utilizará sin distinción entre mayúsculas y minúsculas. Cada cliente gestiona un único certificado; para obtener certificados
independientes, configure múltiples bloques Truco El nombre del cliente especificado aquí lo identifica en la configuración de Angie,
permitiéndote hacer coincidir las directivas El segundo parámetro obligatorio es la uri del directorio ACME.
Por ejemplo, la URI del directorio ACME de Let's Encrypt está especificada
como
https://acme-v02.api.letsencrypt.org/directory. Nota El módulo ACME añade una Para que esta directiva funcione,
debe configurarse un resolver en el mismo contexto. Nota Para fines de prueba,
las autoridades de certificación suelen proporcionar entornos de staging separados.
Por ejemplo, el entorno de staging de Let's Encrypt
es
https://acme-staging-v02.api.letsencrypt.org/directory. Habilita o deshabilita la renovación de certificados para el cliente;
esto es útil, por ejemplo, para suspender temporalmente
sin eliminar el cliente de la configuración. Predeterminado: El tipo de algoritmo de clave privada para el certificado.
Valores válidos: Predeterminado: Número de bits en la clave del certificado.
Predeterminado: 256 para Dirección de correo electrónico opcional para retroalimentación;
se utiliza al crear una cuenta en el servidor CA. Especifica el tamaño máximo permitido de un nuevo archivo de certificado en bytes
para reservar espacio para el nuevo certificado en memoria compartida;
cuantos más dominios se soliciten para el certificado,
más espacio se requiere.
Este parámetro no limita el tamaño de las respuestas del servidor ACME;
utilice acme_max_response_size para eso. Si el parámetro no está establecido, Angie calcula un tamaño aproximado
basándose en la lista de dominios configurada y lo utiliza para la
asignación de memoria compartida. Si un certificado ya existe al inicio pero su tamaño excede el valor de
Si el tamaño de un certificado obtenido durante la renovación
excede Predeterminado: calculado automáticamente. Limita el tamaño de la cadena de autorización de clave
que Angie almacena en memoria compartida para un desafío ACME.
Si el servidor ACME devuelve una cadena de autorización de clave
mayor que este valor, la solicitud falla con un error
que aconseja aumentar Aunque se especifica en la línea Predeterminado: Tiempo antes de la expiración del certificado
cuando debe comenzar la renovación. Predeterminado: Especifica que el certificado debe renovarse forzosamente
cada vez que se carga la configuración. Tiempo de espera antes de reintentar
si la obtención del certificado falló.
Si se establece en Predeterminado: Especifica el tipo de verificación para el cliente ACME.
Valores válidos: El valor Predeterminado: Solicita un perfil ACME específico a la autoridad de certificación.
Un perfil es una variante, definida por la CA, de los ajustes
de certificado y validación, por ejemplo la vigencia del certificado
o qué tipos de identificadores pueden solicitarse. Por ejemplo, Let's Encrypt describe sus perfiles disponibles en la
documentación de perfiles. El servidor ACME debe anunciar este perfil en los metadatos de su
directorio; de lo contrario, el cliente no podrá obtener un certificado. Especifica la ruta completa a un archivo que contiene una clave en formato PEM.
Esto es útil si desea utilizar una clave de cuenta existente
en lugar de la generación automática,
o si necesita utilizar una clave para múltiples clientes ACME. Tipos de claves soportados: Claves RSA con longitudes que son múltiplos de 8, desde 2048 hasta 8192 bits. Claves ECDSA con longitudes de 256, 384 o 521 bits. Al especificar el parámetro Tenga en cuenta que las claves para los clientes ACME se crean en el orden
en que se mencionan los clientes correspondientes en la configuración
en las directivas acme_client, acme o acme_hook.
Por lo tanto, si un cliente debe usar una clave
creada para otro,
ese otro cliente debe aparecer antes en la configuración. Además, las claves solo se crean para clientes
que tienen el parámetro Configura External Account Binding (EAB),
que vincula la cuenta ACME a una cuenta ya registrada en la
autoridad de certificación (CA). El valor tiene la forma id — el identificador de clave emitido por la CA. alg — el algoritmo de firma HMAC utilizado para calcular la
firma de vinculación: key — la clave MAC codificada en Base64URL asociada con id
en el lado de la CA. Si la CA requiere External Account Binding pero el parámetro no está
establecido, el cliente informa un error sin crear una cuenta ACME.
Las credenciales EAB solo se envían al registrar una nueva cuenta ACME;
una cuenta ACME existente se reutiliza tal cual. Anula la ruta al directorio para almacenar certificados y claves,
establecida durante la compilación usando el parámetro de compilación
Predeterminado http Especifica el puerto
que el módulo utiliza para manejar consultas DNS desde el servidor ACME a través de UDP.
El número de puerto debe estar en el rango de 1 a 65535. También se admite especificar una dirección IP junto con un puerto opcional.
Se pueden utilizar tanto direcciones IPv4 en la forma Para usar un número de puerto 1024 o inferior,
el proceso maestro de Angie debe ejecutarse con privilegios de superusuario. Added in version 1.12.0. Establece el TTL, en segundos, de los registros TXT que el módulo devuelve
en las respuestas a las consultas de validación DNS
de los servidores ACME. Acepta valores de 0 a 2147483647, según la
RFC 2181. Habilita la validación de dominio basada en hooks
para el cliente ACME especificado por nombre.
Cuando la emisión o renovación de un certificado requiere la verificación de dominio,
Angie genera una solicitud interna
al nombre El nombre del cliente ACME
para el que este hook gestiona la verificación de dominio. uri Una cadena con variables;
especifica la URI de solicitud para las llamadas al hook. Predeterminado: Por ejemplo, la siguiente configuración pasa los valores de las variables de hook
a una aplicación FastCGI a través de la URI de solicitud: Added in version 1.11.0. Distinto en la versión 1.11.1. Predeterminado http Especifica el puerto
que el módulo utiliza para manejar solicitudes de desafío ACME HTTP.
El número de puerto debe estar en el rango de 1 a 65535. También se admite especificar una dirección IP junto con un puerto opcional.
Se pueden utilizar tanto direcciones IPv4 en la forma Si no hay ningún servidor configurado para escuchar en la dirección y puerto especificados,
el módulo crea un listener dedicado para desafíos HTTP. Para usar un número de puerto 1024 o inferior,
el proceso maestro de Angie debe ejecutarse con privilegios de superusuario. Added in version 1.11.0. Limita el tamaño máximo del cuerpo de una respuesta del servidor ACME. Si una respuesta excede
este límite, la solicitud falla con un error. Aumente el valor si ve
errores como Contenido del último archivo de certificado (si existe)
obtenido por el cliente con este nombre. Contenido del archivo de clave del certificado
utilizado por el cliente con este nombre. Nota El archivo de certificado está disponible
solo si el cliente ACME ha obtenido al menos un certificado,
pero el archivo de clave está disponible inmediatamente después del inicio. El tipo de desafío. Valores posibles: El nombre del cliente ACME que inicia la solicitud. El dominio que se está verificando.
Si es un dominio comodín, se pasará sin el prefijo La cadena de autorización: Para el desafío DNS, se utiliza como el valor del registro TXT,
cuyo nombre se forma como
Para el desafío HTTP, esta cadena debe utilizarse
como el contenido de la respuesta solicitada por el servidor ACME. El nombre del hook. Para diferentes tipos de desafío, puede tener diferentes valores y significados: Valor Significado para desafío DNS Significado para desafío HTTP El registro TXT correspondiente debe añadirse a la configuración DNS. Se debe preparar una respuesta a la solicitud HTTP correspondiente. El registro TXT puede eliminarse de la configuración DNS. Esta solicitud HTTP ya no es relevante;
el archivo creado previamente con la cadena de autorización puede eliminarse. El token de verificación.
Para el desafío HTTP, se utiliza como el nombre del archivo solicitado:
--with-http_acme_module.
En paquetes e imágenes de
nuestros repositorios,
el módulo está incluido en la compilación.Ejemplo de configuración#
example obtiene y renueva automáticamente un certificado para example.com y www.example.com mediante la validación HTTP predeterminada:http {
resolver 127.0.0.53; # Requerido para la directiva 'acme_client'
acme_client example https://acme-v02.api.letsencrypt.org/directory;
server {
listen 80; # Opcional si ningún servidor escucha en el puerto de desafío HTTP
# (ver directiva 'acme_http_port')
listen 443 ssl;
server_name example.com www.example.com;
acme example;
ssl_certificate $acme_cert_example;
ssl_certificate_key $acme_cert_key_example;
}
}
Directivas#
acme#
server_name cambia,
el certificado se renueva para reflejar los cambios.server puede hacer referencia al certificado
mediante la variable $acme_cert_<name>,
independientemente de si el bloque contiene una directiva acme.
Eliminar acme de un bloque server
simplemente excluye los valores de server_name de ese bloque
de futuras solicitudes de certificados,
pero no impide que el bloque utilice el certificado.challenge=dns
en acme_client.challenge=dns. Con la validación DNS habilitada, las direcciones IP se omiten.server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate $acme_cert_rsa;
ssl_certificate_key $acme_cert_key_rsa;
ssl_certificate $acme_cert_ecdsa;
ssl_certificate_key $acme_cert_key_ecdsa;
acme rsa;
acme ecdsa;
}
acme_client#
acme_client nombre uri [enabled=on | off] [key_type=tipo] [key_bits=número] [email=email] [max_cert_size=número] [max_key_auth_size=tamaño] [renew_before_expiry=tiempo] [renew_on_load] [retry_after_error=off|tiempo] [challenge=dns | http | alpn] [profile=name] [account_key=archivo] [eab=id[:alg]:key];acme_client
(consulte Certificados Independientes para Diferentes Dominios).acme_client, acme,
y las variables del módulo que usan este nombre;
no lo confundas con tu dominio o nombre de servidor.location @acme con nombre
al contexto client,
que puede utilizarse para configurar solicitudes al directorio ACME;
por defecto, esta location
contiene una directiva proxy_pass con la uri del directorio,
a la que se pueden añadir otros ajustes del módulo Proxy.enabledon.key_typersa, ecdsa.ecdsa.key_bitsecdsa, 2048 para rsa.emailmax_cert_sizemax_cert_size, el valor de max_cert_size se incrementa
dinámicamente para coincidir con el tamaño del archivo de certificado
existente.max_cert_size,
el proceso de renovación fallará con un error.max_key_auth_sizemax_key_auth_size.acme_client,
es un ajuste único compartido por todos los clientes
del bloque http.2k.renew_before_expiry30d.renew_on_loadretry_after_erroroff,
el cliente no reintentará obtener el certificado después de un error.2h.challengedns, http, alpn.alpn habilita la validación TLS-ALPN-01 y requiere
que Angie esté compilado con OpenSSL que soporte ALPN
(no compatible con compilaciones de BoringSSL o AWS-LC).http.profileaccount_keyaccount_key,
asegúrese de que el archivo de clave realmente exista.
Si el archivo no existe,
Angie intentará crearlo en la ruta especificada.enabled=on establecido.eabeab=id[:alg]:key:HS256 (predeterminado), HS384
o HS512.acme_client_path#
--http-acme-client-path.acme_dns_port#
acme_dns_port puerto | ip[:puerto] | [ip6][:puerto];acme_dns_port 53;ip:puerto
como direcciones IPv6 en la forma [ip6]:puerto:acme_dns_port 8053;
acme_dns_port 127.0.0.1;
acme_dns_port [::1];
acme_dns_ttl#
acme_hook#
location con nombre donde se encuentra esta directiva.
La forma en que se gestiona la solicitud depende enteramente
de las demás directivas configuradas en el mismo location,
como fastcgi_pass, proxy_pass,
o cualquier otro manejador de solicitudes./.acme_hook example uri=/acme_hook/$acme_hook_name?domain=$acme_hook_domain&key=$acme_hook_keyauth;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_pass ...;
acme_http_port#
acme_http_port puerto | ip[:puerto] | [ip6][:puerto];acme_http_port 80;ip:puerto
como direcciones IPv6 en la forma [ip6]:puerto:acme_http_port 8080;
acme_http_port 127.0.0.1;
acme_http_port [::1];
acme_max_response_size#
too big subrequest response while sending to client.Variables integradas#
$acme_cert_<nombre>#$acme_cert_key_<nombre>#$acme_hook_challenge#dns, http, alpn.$acme_hook_client#$acme_hook_domain#*..$acme_hook_keyauth#_acme-challenge. + $acme_hook_domain + ..$acme_hook_name#add (hook de adición)remove (hook de eliminación)$acme_hook_token#/.well-known/acme-challenge/ + $acme_hook_token.