ACME#
Fornece recuperação automática de certificados usando o protocolo ACME.
Ao compilar a partir do código-fonte, o módulo não é compilado por padrão;
ele deve ser habilitado com a opção de compilação
Neste exemplo, um cliente ACME chamado Para outros métodos de validação (DNS, ALPN, baseada em hooks) e instruções de configuração detalhadas, consulte a seção Configuração ACME. Especifica o cliente ACME que obtém um certificado
para os identificadores de certificado válidos neste bloco server.
Um único certificado cobre todos os nomes de domínio válidos e endereços IP
especificados nas diretivas server_name
de todos os blocos server
que referenciam o cliente com o name fornecido;
se a configuração Cada vez que o Angie inicia, novos certificados são solicitados para todos os identificadores
que não possuem um certificado válido.
Possíveis razões incluem expiração do certificado,
arquivos ausentes ou ilegíveis,
e mudanças nas configurações do certificado. Nota Esta diretiva controla apenas quais identificadores de certificado válidos
são incluídos nas solicitações de certificado;
ela não afeta onde o certificado pode ser usado.
Qualquer bloco Nota Atualmente, domínios especificados com expressões regulares
não são suportados e serão ignorados. Domínios curinga são suportados apenas com Endereços IPv4 e IPv6 são suportados a menos que o cliente use
Esta diretiva pode ser especificada múltiplas vezes
para carregar certificados de diferentes tipos, por exemplo RSA e ECDSA: Alterado na versão 1.11.0. Alterado na versão 1.12.0. Padrão — http Define um cliente ACME com um name globalmente único.
Ele deve ser válido para um diretório,
é uma string com variáveis,
e será usado sem distinção entre maiúsculas e minúsculas. Cada cliente gerencia um único certificado; para obter certificados separados,
configure múltiplos blocos Dica O nome do cliente especificado aqui o identifica na configuração do Angie,
permitindo que você combine as diretivas O segundo parâmetro obrigatório é o uri do diretório ACME.
Por exemplo, o URI do diretório ACME do Let's Encrypt é especificado
como
https://acme-v02.api.letsencrypt.org/directory. Nota O módulo ACME adiciona um Para que esta diretiva funcione,
um resolver deve ser configurado no mesmo contexto. Nota Para fins de teste,
as autoridades certificadoras geralmente fornecem ambientes de teste separados.
Por exemplo, o ambiente de teste do Let's Encrypt
é
https://acme-staging-v02.api.letsencrypt.org/directory. Habilita ou desabilita a renovação de certificados para o cliente;
isso é útil, por exemplo, para suspender temporariamente
sem remover o cliente da configuração. Padrão: O tipo de algoritmo de chave privada para o certificado.
Valores válidos: Padrão: Número de bits na chave do certificado.
Padrão: 256 para Endereço de email opcional para feedback;
usado ao criar uma conta no servidor da CA. Especifica o tamanho máximo permitido de um novo arquivo de certificado em bytes
para reservar espaço para o novo certificado na memória compartilhada;
quanto mais domínios o certificado for solicitado,
mais espaço será necessário.
Este parâmetro não limita o tamanho das respostas do servidor ACME;
use acme_max_response_size para isso. Se o parâmetro não for definido, o Angie calcula um tamanho aproximado
com base na lista de domínios configurada e o usa para alocação
de memória compartilhada. Se um certificado já existir na inicialização mas seu tamanho exceder o
valor Se o tamanho de um certificado obtido durante a renovação
exceder Padrão: calculado automaticamente. Limita o tamanho da string de autorização de chave
que o Angie armazena na memória compartilhada para um desafio ACME.
Se o servidor ACME retornar uma string de autorização de chave
maior que este valor, a solicitação falhará com um erro
que recomenda aumentar Embora especificado na linha Padrão: Tempo antes da expiração do certificado
quando a renovação deve começar. Padrão: Especifica que o certificado deve ser renovado forçadamente
cada vez que a configuração for carregada. Tempo para aguardar antes de tentar novamente
se a recuperação do certificado falhar.
Se definido como Padrão: Especifica o tipo de verificação para o cliente ACME.
Valores válidos: O valor Padrão: Solicita um perfil ACME específico da autoridade certificadora.
Um perfil é uma variante, definida pela CA, das configurações de
certificado e validação, por exemplo o tempo de vida do certificado
ou quais tipos de identificadores podem ser solicitados. Por exemplo, a Let's Encrypt descreve seus perfis disponíveis na
documentação de perfis. O servidor ACME deve anunciar esse perfil nos metadados de seu
diretório; caso contrário, o cliente não conseguirá obter um certificado. Especifica o caminho completo para um arquivo contendo uma chave em formato PEM.
Isso é útil se você quiser usar uma chave de conta existente
em vez de geração automática,
ou se precisar usar uma chave para múltiplos clientes ACME. Tipos de chave suportados: Chaves RSA com comprimentos que são múltiplos de 8, variando de 2048 a 8192 bits. Chaves ECDSA com comprimentos de 256, 384 ou 521 bits. Ao especificar o parâmetro Note que as chaves para clientes ACME são criadas na ordem
em que os clientes correspondentes são mencionados na configuração
nas diretivas acme_client, acme ou acme_hook.
Portanto, se um cliente deve usar uma chave
criada para outro,
esse outro cliente deve aparecer antes na configuração. Além disso, as chaves são criadas apenas para clientes
que têm o parâmetro Configura o External Account Binding (EAB),
vinculando a conta ACME a uma conta já registrada na autoridade
certificadora (CA). O valor tem a forma id — o identificador de chave emitido pela CA. alg — o algoritmo de assinatura HMAC usado para calcular a
assinatura de vinculação: key — a chave MAC codificada em Base64URL associada ao id no
lado da CA. Se a CA exigir External Account Binding mas o parâmetro não estiver
definido, o cliente informa um erro sem criar uma conta ACME. As
credenciais EAB só são enviadas quando uma nova conta ACME é
registrada; uma conta ACME existente é reutilizada como está. Substitui o path para o diretório de armazenamento de certificados e chaves,
definido durante a compilação usando o parâmetro de compilação
Especifica a porta
que o módulo usa para lidar com consultas DNS do servidor ACME sobre UDP.
O número da porta deve estar no intervalo de 1 a 65535. Especificar um endereço IP junto com uma porta opcional também é suportado.
Tanto endereços IPv4 na forma Para usar o número de porta 1024 ou inferior,
o processo mestre do Angie deve executar com privilégios de superusuário. Adicionado na versão 1.12.0. Define o TTL, em segundos, dos registros TXT que o módulo retorna nas respostas
às consultas de validação DNS dos servidores ACME.
Aceita valores de 0 a 2147483647, conforme a RFC 2181. Habilita a validação de domínio baseada em hooks
para o cliente ACME especificado por name.
Quando a emissão ou renovação de certificado requer verificação de domínio,
o Angie gera uma solicitação interna
para o name O nome do cliente ACME
para o qual este hook trata a verificação de domínio. uri Uma string com variáveis;
especifica a URI de solicitação para chamadas de hook. Padrão: Por exemplo, a seguinte configuração passa os valores das variáveis de hook
para uma aplicação FastCGI através da URI de solicitação: Adicionado na versão 1.11.0. Alterado na versão 1.11.1. Especifica a porta
que o módulo usa para lidar com solicitações de desafio ACME HTTP.
O número da porta deve estar no intervalo de 1 a 65535. Especificar um endereço IP junto com uma porta opcional também é suportado.
Tanto endereços IPv4 na forma Se nenhum servidor estiver configurado para escutar no endereço e porta especificados,
o módulo cria um listener dedicado para desafios HTTP. Para usar o número de porta 1024 ou inferior,
o processo mestre do Angie deve executar com privilégios de superusuário. Adicionado na versão 1.11.0. Limita o tamanho máximo do corpo de uma resposta do servidor ACME. Se uma resposta exceder
este limite, a solicitação falhará com um erro. Aumente o valor se você ver
erros como Conteúdo do último arquivo de certificado (se houver)
obtido pelo cliente com este name. Conteúdo do arquivo de chave do certificado
usado pelo cliente com este name. Nota O arquivo de certificado está disponível
apenas se o cliente ACME tiver obtido pelo menos um certificado,
mas o arquivo de chave está disponível imediatamente após a inicialização. O tipo de desafio. Valores possíveis: O nome do cliente ACME que inicia a solicitação. O domínio sendo verificado.
Se for um domínio curinga, será passado sem o prefixo A string de autorização: Para desafio DNS, é usada como o valor do registro TXT,
cujo nome é formado como
Para desafio HTTP, esta string deve ser usada
como o conteúdo da resposta solicitada pelo servidor ACME. O nome do hook. Para diferentes tipos de desafio, pode ter diferentes valores e significados: Valor Significado para desafio DNS Significado para desafio HTTP O registro TXT correspondente deve ser adicionado à configuração DNS. Uma resposta à solicitação HTTP correspondente deve ser preparada. O registro TXT pode ser removido da configuração DNS. Esta solicitação HTTP não é mais relevante;
o arquivo criado anteriormente com a string de autorização pode ser removido. O token de verificação.
Para desafio HTTP, é usado como o nome do arquivo solicitado:
--with-http_acme_module.
Em pacotes e imagens de
nossos repositórios,
o módulo está incluído na compilação.Exemplo de Configuração#
example obtém e renova automaticamente um certificado para example.com e www.example.com usando a validação HTTP padrão:http {
resolver 127.0.0.53; # Necessário para a diretiva 'acme_client'
acme_client example https://acme-v02.api.letsencrypt.org/directory;
server {
listen 80; # Opcional se nenhum servidor escuta na porta de desafio HTTP
# (veja a diretiva '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;
}
}
Diretivas#
acme#
server_name mudar,
o certificado é renovado para refletir as mudanças.server pode referenciar o certificado
através da variável $acme_cert_<name>,
independentemente de o bloco conter ou não uma diretiva acme.
Remover acme de um bloco server
simplesmente exclui os valores de server_name desse bloco
das futuras solicitações de certificado,
mas não impede que o bloco use o certificado.challenge=dns
em acme_client.challenge=dns. Com a validação DNS habilitada, os endereços IP são ignorados.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 name uri [enabled=on | off] [key_type=type] [key_bits=number] [email=email] [max_cert_size=number] [max_key_auth_size=size] [renew_before_expiry=time] [renew_on_load] [retry_after_error=off|time] [challenge=dns | http | alpn] [profile=name] [account_key=file] [eab=id[:alg]:key];acme_client (consulte
Certificados Separados para Domínios Diferentes).acme_client, acme,
e variáveis do módulo que usam este nome;
não o confunda com seu domínio ou nome do servidor.location @acme nomeado
ao contexto client,
que pode ser usado para configurar solicitações ao diretório ACME;
por padrão, este location
contém uma diretiva proxy_pass com o uri do diretório,
ao qual outras configurações do módulo Proxy podem ser adicionadas.enabledon.key_typersa, ecdsa.ecdsa.key_bitsecdsa, 2048 para rsa.emailmax_cert_sizemax_cert_size, o valor max_cert_size é
aumentado dinamicamente para corresponder ao tamanho do arquivo de certificado
existente.max_cert_size,
o processo de renovação falhará com um erro.max_key_auth_sizemax_key_auth_size.acme_client,
esta é uma configuração única compartilhada por todos os clientes
no bloco http.2k.renew_before_expiry30d.renew_on_loadretry_after_erroroff,
o cliente não tentará obter o certificado novamente após um erro.2h.challengedns, http, alpn.alpn habilita a validação TLS-ALPN-01 e requer
que o Angie seja compilado com OpenSSL que suporte ALPN
(não suportado com compilações BoringSSL ou AWS-LC).http.profileaccount_keyaccount_key,
certifique-se de que o arquivo de chave realmente existe.
Se o arquivo estiver ausente,
o Angie tentará criá-lo no caminho especificado.enabled=on definido.eabeab=id[:alg]:key:HS256 (padrão), HS384
ou HS512.acme_client_path#
--http-acme-client-path.acme_dns_port#
ip:port
quanto endereços IPv6 na forma [ip6]:port podem ser usados:acme_dns_port 8053;
acme_dns_port 127.0.0.1;
acme_dns_port [::1];
acme_dns_ttl#
acme_hook#
location nomeado onde esta diretiva está colocada.
Como a solicitação é tratada depende inteiramente
das outras diretivas configuradas no mesmo location,
como fastcgi_pass, proxy_pass,
ou qualquer outro manipulador de solicitações./.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#
ip:port
quanto endereços IPv6 na forma [ip6]:port podem ser usados: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.Variáveis Integradas#
$acme_cert_<name>#$acme_cert_key_<name>#$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 adição)remove (hook de remoção)$acme_hook_token#/.well-known/acme-challenge/ + $acme_hook_token.