ACME#

Adicionado na versão 1.10.0.

Permite aquisição automática de certificados usando o protocolo ACME para servidores definidos no contexto stream.

Ao compilar a partir do código-fonte o módulo não é compilado por padrão; deve ser habilitado com o parâmetro de compilação --with-stream_acme_module (também requer --with-http_acme_module). Em pacotes e imagens dos nossos repositórios o módulo está incluído na compilação.

Nota

Para operação correta, o bloco stream deve estar localizado após o bloco http. Isso ocorre porque o módulo stream usa definições de cliente criadas durante a análise da configuração HTTP.

Exemplo de configuração#

Neste exemplo, os certificados obtidos pelo cliente ACME example (declarado no bloco http) protegem um servidor TCP usando a validação HTTP padrão:

# Parte HTTP
http {

    resolver 127.0.0.53;

    # Cliente ACME para a parte stream
    acme_client example https://acme-v02.api.letsencrypt.org/directory;

    # Servidor para validação HTTP
    server {

        listen 80;
        return 444;
    }
}

# Parte Stream
stream {

    server {

        listen 12345 ssl;
        proxy_pass backend_upstream;

        ssl_certificate $acme_cert_example;
        ssl_certificate_key $acme_cert_key_example;

        server_name example.com www.example.com;
        acme example; # referência ao cliente ACME definido na parte HTTP
    }

    upstream backend_upstream {

        server 127.0.0.1:54321;
    }
}

Para exemplos de configuração e instruções de configuração, incluindo a validação DNS, consulte a seção ACME no módulo stream.

Diretivas#

acme#

Sintaxe

acme name;

Padrão

Contexto

server

Para todos os domínios especificados nas diretivas server_name em todos os blocos server que referenciam um cliente ACME do módulo HTTP com o name fornecido, um único certificado será obtido; se a configuração server_name mudar, o certificado será atualizado para considerar as mudanças.

A cada inicialização do Angie ou recarga de configuração, novos certificados são solicitados para todos os domínios que não possuem um certificado válido. Possíveis razões incluem expiração do certificado, arquivos ausentes ou incapacidade de lê-los, e mudanças nas configurações do certificado.

Nota

Atualmente, domínios especificados via expressões regulares não são suportados e serão ignorados.

Domínios curinga são suportados apenas no modo challenge=dns em acme_client.

Esta diretiva pode ser especificada múltiplas vezes para carregar certificados de diferentes tipos, por exemplo RSA e ECDSA:

server {

    listen 12345 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;
}

Variáveis incorporadas#

$acme_cert_<name>#

Conteúdo do último arquivo de certificado (se houver) obtido pelo cliente com este name.

$acme_cert_key_<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 obteve pelo menos um certificado, enquanto o arquivo de chave está disponível imediatamente após a inicialização.