309 lines
9.7 KiB
YAML
309 lines
9.7 KiB
YAML
---
|
|
# Copyright (c) Ansible Project
|
|
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
- block:
|
|
- name: Generate account keys
|
|
openssl_privatekey:
|
|
path: "{{ remote_tmp_dir }}/{{ item.name }}.pem"
|
|
passphrase: "{{ item.pass | default(omit) | default(omit, true) }}"
|
|
cipher: "{{ 'auto' if (item.pass | default(false)) else omit }}"
|
|
type: ECC
|
|
curve: secp256r1
|
|
force: true
|
|
loop: "{{ account_keys }}"
|
|
|
|
- name: Parse account keys (to ease debugging some test failures)
|
|
openssl_privatekey_info:
|
|
path: "{{ remote_tmp_dir }}/{{ item.name }}.pem"
|
|
passphrase: "{{ item.pass | default(omit) | default(omit, true) }}"
|
|
return_private_key_data: true
|
|
loop: "{{ account_keys }}"
|
|
|
|
vars:
|
|
account_keys:
|
|
- name: accountkey
|
|
- name: accountkey2
|
|
pass: "{{ 'hunter2' if select_crypto_backend != 'openssl' else '' }}"
|
|
- name: accountkey3
|
|
- name: accountkey4
|
|
- name: accountkey5
|
|
|
|
- name: Do not try to create account
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
allow_creation: no
|
|
ignore_errors: yes
|
|
register: account_not_created
|
|
|
|
- name: Create it now (check mode, diff)
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
allow_creation: yes
|
|
terms_agreed: yes
|
|
contact:
|
|
- mailto:example@example.org
|
|
check_mode: yes
|
|
diff: yes
|
|
register: account_created_check
|
|
|
|
- name: Create it now
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
allow_creation: yes
|
|
terms_agreed: yes
|
|
contact:
|
|
- mailto:example@example.org
|
|
register: account_created
|
|
|
|
- name: Create it now (idempotent)
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
allow_creation: yes
|
|
terms_agreed: yes
|
|
contact:
|
|
- mailto:example@example.org
|
|
register: account_created_idempotent
|
|
|
|
- name: Read account key
|
|
slurp:
|
|
src: '{{ remote_tmp_dir }}/accountkey.pem'
|
|
register: slurp
|
|
|
|
- name: Change email address (check mode, diff)
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_content: "{{ slurp.content | b64decode }}"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
# allow_creation: no
|
|
contact:
|
|
- mailto:example@example.com
|
|
check_mode: yes
|
|
diff: yes
|
|
register: account_modified_check
|
|
|
|
- name: Change email address
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_content: "{{ slurp.content | b64decode }}"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
# allow_creation: no
|
|
contact:
|
|
- mailto:example@example.com
|
|
register: account_modified
|
|
|
|
- name: Change email address (idempotent)
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
|
account_uri: "{{ account_created.account_uri }}"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
# allow_creation: no
|
|
contact:
|
|
- mailto:example@example.com
|
|
register: account_modified_idempotent
|
|
|
|
- name: Cannot access account with wrong URI
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
|
account_uri: "{{ account_created.account_uri ~ '12345thisdoesnotexist' }}"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
contact: []
|
|
ignore_errors: yes
|
|
register: account_modified_wrong_uri
|
|
|
|
- name: Clear contact email addresses (check mode, diff)
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
# allow_creation: no
|
|
contact: []
|
|
check_mode: yes
|
|
diff: yes
|
|
register: account_modified_2_check
|
|
|
|
- name: Clear contact email addresses
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
# allow_creation: no
|
|
contact: []
|
|
register: account_modified_2
|
|
|
|
- name: Clear contact email addresses (idempotent)
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
# allow_creation: no
|
|
contact: []
|
|
register: account_modified_2_idempotent
|
|
|
|
- name: Change account key (check mode, diff)
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
new_account_key_src: "{{ remote_tmp_dir }}/accountkey2.pem"
|
|
new_account_key_passphrase: "{{ 'hunter2' if select_crypto_backend != 'openssl' else omit }}"
|
|
state: changed_key
|
|
contact:
|
|
- mailto:example@example.com
|
|
check_mode: yes
|
|
diff: yes
|
|
register: account_change_key_check
|
|
|
|
- name: Change account key
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
new_account_key_src: "{{ remote_tmp_dir }}/accountkey2.pem"
|
|
new_account_key_passphrase: "{{ 'hunter2' if select_crypto_backend != 'openssl' else omit }}"
|
|
state: changed_key
|
|
contact:
|
|
- mailto:example@example.com
|
|
register: account_change_key
|
|
|
|
- name: Deactivate account (check mode, diff)
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey2.pem"
|
|
account_key_passphrase: "{{ 'hunter2' if select_crypto_backend != 'openssl' else omit }}"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: absent
|
|
check_mode: yes
|
|
diff: yes
|
|
register: account_deactivate_check
|
|
|
|
- name: Deactivate account
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey2.pem"
|
|
account_key_passphrase: "{{ 'hunter2' if select_crypto_backend != 'openssl' else omit }}"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: absent
|
|
register: account_deactivate
|
|
|
|
- name: Deactivate account (idempotent)
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey2.pem"
|
|
account_key_passphrase: "{{ 'hunter2' if select_crypto_backend != 'openssl' else omit }}"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: absent
|
|
register: account_deactivate_idempotent
|
|
|
|
- name: Do not try to create account II
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey2.pem"
|
|
account_key_passphrase: "{{ 'hunter2' if select_crypto_backend != 'openssl' else omit }}"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
allow_creation: no
|
|
ignore_errors: yes
|
|
register: account_not_created_2
|
|
|
|
- name: Do not try to create account III
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
allow_creation: no
|
|
ignore_errors: yes
|
|
register: account_not_created_3
|
|
|
|
- name: Create account with External Account Binding
|
|
acme_account:
|
|
select_crypto_backend: "{{ select_crypto_backend }}"
|
|
account_key_src: "{{ remote_tmp_dir }}/{{ item.account }}.pem"
|
|
acme_version: 2
|
|
acme_directory: https://{{ acme_host }}:14000/dir
|
|
validate_certs: no
|
|
state: present
|
|
allow_creation: yes
|
|
terms_agreed: yes
|
|
contact:
|
|
- mailto:example@example.org
|
|
external_account_binding:
|
|
kid: "{{ item.kid }}"
|
|
alg: "{{ item.alg }}"
|
|
key: "{{ item.key }}"
|
|
register: account_created_eab
|
|
ignore_errors: yes
|
|
loop:
|
|
- account: accountkey3
|
|
kid: kid-1
|
|
alg: HS256
|
|
key: zWNDZM6eQGHWpSRTPal5eIUYFTu7EajVIoguysqZ9wG44nMEtx3MUAsUDkMTQ12W
|
|
- account: accountkey4
|
|
kid: kid-2
|
|
alg: HS384
|
|
key: b10lLJs8l1GPIzsLP0s6pMt8O0XVGnfTaCeROxQM0BIt2XrJMDHJZBM5NuQmQJQH
|
|
- account: accountkey5
|
|
kid: kid-3
|
|
alg: HS512
|
|
key: zWNDZM6eQGHWpSRTPal5eIUYFTu7EajVIoguysqZ9wG44nMEtx3MUAsUDkMTQ12W
|
|
- debug: var=account_created_eab
|