Acme Inspect
Sinopse
- Permite enviar solicitações diretas para um servidor ACME com o protocolo ACME , que é suportado por CAs como Let's Encrypt .
- Este módulo pode ser usado para depurar tentativas de solicitação de certificado com falha, por exemplo, quando acme_certificate falha ou encontra um problema que você deseja investigar.
- O módulo também pode ser usado para acessar diretamente recursos de servidores ACME que ainda não são suportados pelos módulos Atmosphere ACME.
Parâmetros
Parâmetro | Tipo | Escolhas | Valor Padrão | Comentarios |
|---|---|---|---|
account_key_content | string | | Conteúdo da chave RSA ou curva elíptica da conta ACME. Mutuamente exclusivo com account_key_src. Necessário se account_key_src não for usado. Atenção: o conteúdo será gravado em um arquivo temporário, que será excluído pelo Atmosphere quando o módulo for concluído. Como essa é uma chave privada importante — ela pode ser usada para alterar a chave da conta ou revogar seus certificados sem conhecer suas chaves privadas —, isso pode não ser aceitável. Caso cryptography seja usado, o conteúdo não é gravado em um arquivo temporário. Ainda pode acontecer que ele seja gravado em disco pelo Ansible no processo de mover o módulo com seu argumento para o nó onde ele é executado. |
account_key_passphrase | string | | Phassphrase a ser usada para decodificar a chave da conta. Nota: isso não é suportado pelo openssl back-end, apenas pelo cryptography back-end. |
account_key_src | path | | Caminho para um arquivo que contém a chave RSA ou curva elíptica da conta ACME. |
account_uri | string | | Se especificado, assume que o URI da conta é o informado. Se a chave da conta não corresponder a essa conta ou não existir uma conta com esse URI, o módulo falhará. |
acme_directory - required | string | | O diretório ACME a ser usado. Esta é a URL do ponto de entrada para acessar a API do servidor ACME CA. Por motivos de segurança, o padrão é definido para o servidor de teste Let's Encrypt (para o protocolo ACME v1). Isso criará certificados tecnicamente corretos, mas não confiáveis. |
acme_version - required | integer | Escolhas: - 1 - 2 | A versão ACME do endpoint. Deve ser 1 para os endpoints ACME clássicos Let's Encrypt e Buypass ou 2 para endpoints ACME v2 padronizados. |
content | string | | Um objeto JSON codificado que será enviado como conteúdo se o método for post. Obrigatório quando o método é post, e não é permitido de outra forma. |
fail_on_acme_error | boolean | Escolhas: - True(default) - False | Se o método for post ou get, faça o módulo falhar caso um erro ACME seja retornado. |
method | string | Choices: - get(default) - post - directory - only | O método a ser usado para acessar a URL fornecida no servidor ACME. O valor post executa uma solicitação POST autenticada. O conteúdo deve ser especificado na opção de conteúdo. O valor getexecuta uma solicitação POST-as-GET autenticada para ACME v2 e uma solicitação GET regular para ACME v1.O valor directory-only apenas recupera o diretório, sem fazer uma solicitação. |
select_crypto_backend | string | Choices: - auto(default) - cryptography - openssl | Determina qual back-end de criptografia usar.A opção padrão é auto, que tenta usar cryptography se disponível e retorna para openssl. Se definido como openssl, tentará usar o opensslbinário. Se definido como cryptography, tentará usar a biblioteca de criptografia . |
URL | string | | O URL para o qual enviar a solicitação. Deve ser especificado se o método não for directory-only. |
valid_certs | boolean | Escolhas: - true(default) - false | Se as chamadas para o diretório ACME validarão certificados TLS. Aviso: Deve ser configurado apenas para fins de teste, por exemplo, ao testar em um servidor Pebble local. |
Exemplos
- name: Get directory
community.crypto.acme_inspect:
acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
acme_version: 2
method: directory-only
register: directory
- name: Create an account
community.crypto.acme_inspect:
acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
acme_version: 2
account_key_src: /etc/pki/cert/private/account.key
url: "{{ directory.newAccount}}"
method: post
content: '{"termsOfServiceAgreed":true}'
register: account_creation
# account_creation.headers.location contains the account URI
# if creation was successful
- name: Get account information
community.crypto.acme_inspect:
acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
acme_version: 2
account_key_src: /etc/pki/cert/private/account.key
account_uri: "{{ account_creation.headers.location }}"
url: "{{ account_creation.headers.location }}"
method: get
- name: Update account contacts
community.crypto.acme_inspect:
acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
acme_version: 2
account_key_src: /etc/pki/cert/private/account.key
account_uri: "{{ account_creation.headers.location }}"
url: "{{ account_creation.headers.location }}"
method: post
content: '{{ account_info | to_json }}'
vars:
account_info:
# For valid values, see
# https://tools.ietf.org/html/rfc8555#section-7.3
contact:
- mailto:[email protected]
- name: Create certificate order
community.crypto.acme_certificate:
acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
acme_version: 2
account_key_src: /etc/pki/cert/private/account.key
account_uri: "{{ account_creation.headers.location }}"
csr: /etc/pki/cert/csr/sample.com.csr
fullchain_dest: /etc/httpd/ssl/sample.com-fullchain.crt
challenge: http-01
register: certificate_request
# Assume something went wrong. certificate_request.order_uri contains
# the order URI.
- name: Get order information
community.crypto.acme_inspect:
acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
acme_version: 2
account_key_src: /etc/pki/cert/private/account.key
account_uri: "{{ account_creation.headers.location }}"
url: "{{ certificate_request.order_uri }}"
method: get
register: order
- name: Get first authz for order
community.crypto.acme_inspect:
acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
acme_version: 2
account_key_src: /etc/pki/cert/private/account.key
account_uri: "{{ account_creation.headers.location }}"
url: "{{ order.output_json.authorizations[0] }}"
method: get
register: authz
- name: Get HTTP-01 challenge for authz
community.crypto.acme_inspect:
acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
acme_version: 2
account_key_src: /etc/pki/cert/private/account.key
account_uri: "{{ account_creation.headers.location }}"
url: "{{ authz.output_json.challenges | selectattr('type', 'equalto', 'http-01') }}"
method: get
register: http01challenge
- name: Activate HTTP-01 challenge manually
community.crypto.acme_inspect:
acme_directory: https://acme-staging-v02.api.letsencrypt.org/directory
acme_version: 2
account_key_src: /etc/pki/cert/private/account.key
account_uri: "{{ account_creation.headers.location }}"
url: "{{ http01challenge.url }}"
method: post
content: '{}'Valores de retorno
Chave | Tipo | Retornado quando | Descrição |
|---|---|---|---|
directory | dictionary | sempre | O conteúdo do diretório ACME |
headers | dictionary | sempre | Os cabeçalhos HTTP da solicitação (com chaves minúsculas) |
output_json | dictionary | se a saída pode ser analisada como JSON | A saída analisada como JSON. |
output_text | string | sempre | A saída de texto bruto. |