mirror of
https://github.com/ansible-collections/community.crypto.git
synced 2026-03-26 21:33:25 +00:00
Fix some ansible-lint issues (#907)
* Fix fqcn[action-core]. * Fix fqcn[action]. * Fix jinja[spacing].
This commit is contained in:
@@ -13,10 +13,7 @@ skip_list:
|
||||
- yaml # we're using yamllint ourselves
|
||||
|
||||
# To be checked and maybe fixed:
|
||||
- fqcn[action]
|
||||
- fqcn[action-core]
|
||||
- ignore-errors
|
||||
- jinja[spacing]
|
||||
- key-order[task]
|
||||
- name[casing]
|
||||
- name[missing]
|
||||
|
||||
@@ -6,15 +6,15 @@
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: Show Python info
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: ansible_python
|
||||
|
||||
- name: Register cryptography version
|
||||
command: "{{ ansible_python.executable }} -c 'import cryptography; print(cryptography.__version__)'"
|
||||
ansible.builtin.command: "{{ ansible_python.executable }} -c 'import cryptography; print(cryptography.__version__)'"
|
||||
register: cryptography_version
|
||||
|
||||
- name: Determine output directory
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
output_path: "{{ 'output-%0x' % ((2**32) | random) }}"
|
||||
|
||||
- name: Find all roles
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
register: result
|
||||
|
||||
- name: Dump result
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: result
|
||||
|
||||
- name: Validate result
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.openssl_present
|
||||
- result.python_cryptography_installed
|
||||
|
||||
@@ -24,13 +24,13 @@
|
||||
when: false
|
||||
block:
|
||||
- name: Create lookback device
|
||||
command: losetup -f {{ cryptfile_path }}
|
||||
ansible.builtin.command: losetup -f {{ cryptfile_path }}
|
||||
|
||||
- name: Determine loop device name
|
||||
command: losetup -j {{ cryptfile_path }} --output name
|
||||
ansible.builtin.command: losetup -j {{ cryptfile_path }} --output name
|
||||
register: cryptfile_device_output
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
cryptfile_device: "{{ cryptfile_device_output.stdout_lines[1] }}"
|
||||
|
||||
- name: Create LUKS container
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
register: result
|
||||
|
||||
- name: Validate result
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.msg == 'Everything is ok'
|
||||
|
||||
@@ -17,6 +17,6 @@
|
||||
register: result
|
||||
|
||||
- name: Validate result
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.msg == 'Everything is ok'
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
- block:
|
||||
- name: Generate account keys
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: "{{ remote_tmp_dir }}/{{ item.name }}.pem"
|
||||
passphrase: "{{ item.pass | default(omit) | default(omit, true) }}"
|
||||
type: ECC
|
||||
@@ -14,7 +14,7 @@
|
||||
loop: "{{ account_keys }}"
|
||||
|
||||
- name: Parse account keys (to ease debugging some test failures)
|
||||
openssl_privatekey_info:
|
||||
community.crypto.openssl_privatekey_info:
|
||||
path: "{{ remote_tmp_dir }}/{{ item.name }}.pem"
|
||||
passphrase: "{{ item.pass | default(omit) | default(omit, true) }}"
|
||||
return_private_key_data: true
|
||||
@@ -30,7 +30,7 @@
|
||||
- name: accountkey5
|
||||
|
||||
- name: Do not try to create account
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -42,7 +42,7 @@
|
||||
register: account_not_created
|
||||
|
||||
- name: Create it now (check mode, diff)
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -58,7 +58,7 @@
|
||||
register: account_created_check
|
||||
|
||||
- name: Create it now
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -72,7 +72,7 @@
|
||||
register: account_created
|
||||
|
||||
- name: Create it now (idempotent)
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -86,12 +86,12 @@
|
||||
register: account_created_idempotent
|
||||
|
||||
- name: Read account key
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/accountkey.pem'
|
||||
register: slurp
|
||||
|
||||
- name: Change email address (check mode, diff)
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_content: "{{ slurp.content | b64decode }}"
|
||||
acme_version: 2
|
||||
@@ -106,7 +106,7 @@
|
||||
register: account_modified_check
|
||||
|
||||
- name: Change email address
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_content: "{{ slurp.content | b64decode }}"
|
||||
acme_version: 2
|
||||
@@ -119,7 +119,7 @@
|
||||
register: account_modified
|
||||
|
||||
- name: Change email address (idempotent)
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
account_uri: "{{ account_created.account_uri }}"
|
||||
@@ -133,7 +133,7 @@
|
||||
register: account_modified_idempotent
|
||||
|
||||
- name: Cannot access account with wrong URI
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
account_uri: "{{ account_created.account_uri ~ '12345thisdoesnotexist' }}"
|
||||
@@ -146,7 +146,7 @@
|
||||
register: account_modified_wrong_uri
|
||||
|
||||
- name: Clear contact email addresses (check mode, diff)
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -160,7 +160,7 @@
|
||||
register: account_modified_2_check
|
||||
|
||||
- name: Clear contact email addresses
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -172,7 +172,7 @@
|
||||
register: account_modified_2
|
||||
|
||||
- name: Clear contact email addresses (idempotent)
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -184,7 +184,7 @@
|
||||
register: account_modified_2_idempotent
|
||||
|
||||
- name: Change account key (check mode, diff)
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -200,7 +200,7 @@
|
||||
register: account_change_key_check
|
||||
|
||||
- name: Change account key
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -214,7 +214,7 @@
|
||||
register: account_change_key
|
||||
|
||||
- name: Deactivate account (check mode, diff)
|
||||
acme_account:
|
||||
community.crypto.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 }}"
|
||||
@@ -227,7 +227,7 @@
|
||||
register: account_deactivate_check
|
||||
|
||||
- name: Deactivate account
|
||||
acme_account:
|
||||
community.crypto.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 }}"
|
||||
@@ -238,7 +238,7 @@
|
||||
register: account_deactivate
|
||||
|
||||
- name: Deactivate account (idempotent)
|
||||
acme_account:
|
||||
community.crypto.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 }}"
|
||||
@@ -249,7 +249,7 @@
|
||||
register: account_deactivate_idempotent
|
||||
|
||||
- name: Do not try to create account II
|
||||
acme_account:
|
||||
community.crypto.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 }}"
|
||||
@@ -262,7 +262,7 @@
|
||||
register: account_not_created_2
|
||||
|
||||
- name: Do not try to create account III
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -274,7 +274,7 @@
|
||||
register: account_not_created_3
|
||||
|
||||
- name: Create account with External Account Binding
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/{{ item.account }}.pem"
|
||||
acme_version: 2
|
||||
@@ -304,4 +304,4 @@
|
||||
kid: kid-3
|
||||
alg: HS512
|
||||
key: zWNDZM6eQGHWpSRTPal5eIUYFTu7EajVIoguysqZ9wG44nMEtx3MUAsUDkMTQ12W
|
||||
- debug: var=account_created_eab
|
||||
- ansible.builtin.debug: var=account_created_eab
|
||||
|
||||
@@ -10,31 +10,31 @@
|
||||
|
||||
- block:
|
||||
- name: Running tests with OpenSSL backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: openssl
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
# Old 0.9.8 versions have insufficient CLI support for signing with EC keys
|
||||
when: openssl_version is version('1.0.0', '>=')
|
||||
|
||||
- name: Remove output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: absent
|
||||
|
||||
- name: Re-create output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: directory
|
||||
|
||||
- block:
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Validate that account wasn't created in the first step
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_not_created is failed
|
||||
- account_not_created.msg == 'Account does not exist or is deactivated.'
|
||||
|
||||
- name: Validate that account was created in the second step (check mode)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_created_check is changed
|
||||
- account_created_check.account_uri is none
|
||||
@@ -21,19 +21,19 @@
|
||||
- account_created_check.diff.after.contact[0] in ['mailto:example@example.org', 'mailto:********@********.org']
|
||||
|
||||
- name: Validate that account was created in the second step
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_created is changed
|
||||
- account_created.account_uri is not none
|
||||
|
||||
- name: Validate that account was created in the second step (idempotency)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_created_idempotent is not changed
|
||||
- account_created_idempotent.account_uri is not none
|
||||
|
||||
- name: Validate that email address was changed (check mode)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_modified_check is changed
|
||||
- account_modified_check.account_uri is not none
|
||||
@@ -44,24 +44,24 @@
|
||||
- account_modified_check.diff.after.contact[0] in ['mailto:example@example.com', 'mailto:********@********.com']
|
||||
|
||||
- name: Validate that email address was changed
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_modified is changed
|
||||
- account_modified.account_uri is not none
|
||||
|
||||
- name: Validate that email address was not changed a second time (idempotency)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_modified_idempotent is not changed
|
||||
- account_modified_idempotent.account_uri is not none
|
||||
|
||||
- name: Make sure that with the wrong account URI, the account cannot be changed
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_modified_wrong_uri is failed
|
||||
|
||||
- name: Validate that email address was cleared (check mode)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_modified_2_check is changed
|
||||
- account_modified_2_check.account_uri is not none
|
||||
@@ -71,19 +71,19 @@
|
||||
- account_modified_2_check.diff.after.contact | length == 0
|
||||
|
||||
- name: Validate that email address was cleared
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_modified_2 is changed
|
||||
- account_modified_2.account_uri is not none
|
||||
|
||||
- name: Validate that email address was not cleared a second time (idempotency)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_modified_2_idempotent is not changed
|
||||
- account_modified_2_idempotent.account_uri is not none
|
||||
|
||||
- name: Validate that the account key was changed (check mode)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_change_key_check is changed
|
||||
- account_change_key_check.account_uri is not none
|
||||
@@ -91,13 +91,13 @@
|
||||
- account_change_key_check.diff.before.public_account_key != account_change_key_check.diff.after.public_account_key
|
||||
|
||||
- name: Validate that the account key was changed
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_change_key is changed
|
||||
- account_change_key.account_uri is not none
|
||||
|
||||
- name: Validate that the account was deactivated (check mode)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_deactivate_check is changed
|
||||
- account_deactivate_check.account_uri is not none
|
||||
@@ -106,13 +106,13 @@
|
||||
- "account_deactivate_check.diff.after == {}"
|
||||
|
||||
- name: Validate that the account was deactivated
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_deactivate is changed
|
||||
- account_deactivate.account_uri is not none
|
||||
|
||||
- name: Validate that the account was really deactivated (idempotency)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_deactivate_idempotent is not changed
|
||||
# The next condition should be true for all conforming ACME servers.
|
||||
@@ -121,19 +121,19 @@
|
||||
- account_deactivate_idempotent.account_uri is none
|
||||
|
||||
- name: Validate that the account is gone (new account key)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_not_created_2 is failed
|
||||
- account_not_created_2.msg == 'Account does not exist or is deactivated.'
|
||||
|
||||
- name: Validate that the account is gone (old account key)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_not_created_3 is failed
|
||||
- account_not_created_3.msg == 'Account does not exist or is deactivated.'
|
||||
|
||||
- name: Validate that the account with External Account Binding has been created
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_created_eab.results[0] is changed
|
||||
- account_created_eab.results[1] is changed
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
- block:
|
||||
- name: Generate account keys
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: "{{ remote_tmp_dir }}/{{ item }}.pem"
|
||||
type: ECC
|
||||
curve: secp256r1
|
||||
@@ -13,7 +13,7 @@
|
||||
loop: "{{ account_keys }}"
|
||||
|
||||
- name: Parse account keys (to ease debugging some test failures)
|
||||
openssl_privatekey_info:
|
||||
community.crypto.openssl_privatekey_info:
|
||||
path: "{{ remote_tmp_dir }}/{{ item }}.pem"
|
||||
return_private_key_data: true
|
||||
loop: "{{ account_keys }}"
|
||||
@@ -24,7 +24,7 @@
|
||||
- accountkey2
|
||||
|
||||
- name: Check that account does not exist
|
||||
acme_account_info:
|
||||
community.crypto.acme_account_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -33,7 +33,7 @@
|
||||
register: account_not_created
|
||||
|
||||
- name: Create it now
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -46,7 +46,7 @@
|
||||
- mailto:example@example.org
|
||||
|
||||
- name: Check that account exists
|
||||
acme_account_info:
|
||||
community.crypto.acme_account_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -55,12 +55,12 @@
|
||||
register: account_created
|
||||
|
||||
- name: Read account key
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/accountkey.pem'
|
||||
register: slurp
|
||||
|
||||
- name: Clear email address
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_content: "{{ slurp.content | b64decode }}"
|
||||
acme_version: 2
|
||||
@@ -71,7 +71,7 @@
|
||||
contact: []
|
||||
|
||||
- name: Check that account was modified
|
||||
acme_account_info:
|
||||
community.crypto.acme_account_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -81,7 +81,7 @@
|
||||
register: account_modified
|
||||
|
||||
- name: Check with wrong account URI
|
||||
acme_account_info:
|
||||
community.crypto.acme_account_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
acme_version: 2
|
||||
@@ -91,7 +91,7 @@
|
||||
register: account_not_exist
|
||||
|
||||
- name: Check with wrong account key
|
||||
acme_account_info:
|
||||
community.crypto.acme_account_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey2.pem"
|
||||
acme_version: 2
|
||||
|
||||
@@ -10,31 +10,31 @@
|
||||
|
||||
- block:
|
||||
- name: Running tests with OpenSSL backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: openssl
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
# Old 0.9.8 versions have insufficient CLI support for signing with EC keys
|
||||
when: openssl_version is version('1.0.0', '>=')
|
||||
|
||||
- name: Remove output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: absent
|
||||
|
||||
- name: Re-create output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: directory
|
||||
|
||||
- block:
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Validate that account wasn't there
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- not account_not_created.exists
|
||||
- account_not_created.account_uri is none
|
||||
- "'account' not in account_not_created"
|
||||
|
||||
- name: Validate that account was created
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_created.exists
|
||||
- account_created.account_uri is not none
|
||||
@@ -22,7 +22,7 @@
|
||||
- "account_created.account.contact[0] == 'mailto:example@example.org'"
|
||||
|
||||
- name: Validate that account email was removed
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_modified.exists
|
||||
- account_modified.account_uri is not none
|
||||
@@ -32,13 +32,13 @@
|
||||
- account_modified.account.contact | length == 0
|
||||
|
||||
- name: Validate that account does not exist with wrong account URI
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- not account_not_exist.exists
|
||||
- account_not_exist.account_uri is none
|
||||
- "'account' not in account_not_exist"
|
||||
|
||||
- name: Validate that account cannot be accessed with wrong key
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_wrong_key is failed
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
## SET UP ACCOUNT KEYS ########################################################################
|
||||
- block:
|
||||
- name: Generate account keys
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: "{{ remote_tmp_dir }}/{{ item.name }}.pem"
|
||||
type: "{{ item.type }}"
|
||||
size: "{{ item.size | default(omit) }}"
|
||||
@@ -21,7 +21,7 @@
|
||||
curve: secp256r1
|
||||
## CREATE ACCOUNTS AND OBTAIN CERTIFICATES ####################################################
|
||||
- name: Obtain cert 1
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 1 for renewal check
|
||||
certificate_name: cert-1
|
||||
@@ -39,18 +39,18 @@
|
||||
account_email: "example@example.org"
|
||||
## OBTAIN CERTIFICATE INFOS ###################################################################
|
||||
- name: Dump OpenSSL x509 info
|
||||
command:
|
||||
ansible.builtin.command:
|
||||
cmd: openssl x509 -in {{ remote_tmp_dir }}/cert-1.pem -noout -text
|
||||
- name: Obtain certificate information
|
||||
x509_certificate_info:
|
||||
community.crypto.x509_certificate_info:
|
||||
path: "{{ remote_tmp_dir }}/cert-1.pem"
|
||||
register: cert_1_info
|
||||
- name: Read certificate
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/cert-1.pem'
|
||||
register: slurp_cert_1
|
||||
- name: Obtain certificate information
|
||||
acme_ari_info:
|
||||
community.crypto.acme_ari_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
certificate_path: "{{ remote_tmp_dir }}/cert-1.pem"
|
||||
acme_version: 2
|
||||
|
||||
@@ -14,31 +14,31 @@
|
||||
block:
|
||||
- block:
|
||||
- name: Running tests with OpenSSL backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: openssl
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
# Old 0.9.8 versions have insufficient CLI support for signing with EC keys
|
||||
when: 1 is version('1.0.0', '>=')
|
||||
|
||||
- name: Remove output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: absent
|
||||
|
||||
- name: Re-create output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: directory
|
||||
|
||||
- block:
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Validate results
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_1 is not changed
|
||||
- cert_1.renewal_info.explanationURL is not defined or cert_1.renewal_info.explanationURL is string
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
## SET UP ACCOUNT KEYS ########################################################################
|
||||
- block:
|
||||
- name: Generate account keys
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: "{{ remote_tmp_dir }}/{{ item.name }}.pem"
|
||||
type: "{{ item.type }}"
|
||||
size: "{{ item.size | default(omit) }}"
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
## SET UP ACCOUNTS ############################################################################
|
||||
- name: Make sure ECC256 account hasn't been created yet
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
acme_version: 2
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
@@ -36,11 +36,11 @@
|
||||
account_key_src: "{{ remote_tmp_dir }}/account-ec256.pem"
|
||||
state: absent
|
||||
- name: Read account key (EC384)
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/account-ec384.pem'
|
||||
register: slurp
|
||||
- name: Create ECC384 account
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
acme_version: 2
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
@@ -53,7 +53,7 @@
|
||||
- mailto:example@example.org
|
||||
- mailto:example@example.com
|
||||
- name: Create RSA account
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
acme_version: 2
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
@@ -66,7 +66,7 @@
|
||||
|
||||
## OBTAIN CERTIFICATES ########################################################################
|
||||
- name: Obtain cert 1
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 1
|
||||
certificate_name: cert-1
|
||||
@@ -89,11 +89,11 @@
|
||||
issuer: "{{ acme_roots[1].subject }}"
|
||||
use_csr_content: true
|
||||
- name: Store obtain results for cert 1
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cert_1_obtain_results: "{{ certificate_obtain_result }}"
|
||||
cert_1_alternate: "{{ 1 if select_crypto_backend == 'cryptography' else 0 }}"
|
||||
- name: Obtain cert 2
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 2
|
||||
certificate_name: cert-2
|
||||
@@ -122,15 +122,15 @@
|
||||
issuer: "{{ acme_roots[2].subject }}"
|
||||
use_csr_content: false
|
||||
- name: Store obtain results for cert 2
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cert_2_obtain_results: "{{ certificate_obtain_result }}"
|
||||
cert_2_alternate: "{{ 0 if select_crypto_backend == 'cryptography' else 0 }}"
|
||||
- name: Read account key (RSA)
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/account-rsa.pem'
|
||||
register: slurp_account_key
|
||||
- name: Obtain cert 3
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 3
|
||||
certificate_name: cert-3
|
||||
@@ -152,11 +152,11 @@
|
||||
subject: "{{ acme_roots[1].subject }}"
|
||||
use_csr_content: true
|
||||
- name: Store obtain results for cert 3
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cert_3_obtain_results: "{{ certificate_obtain_result }}"
|
||||
cert_3_alternate: "{{ 0 if select_crypto_backend == 'cryptography' else 0 }}"
|
||||
- name: Obtain cert 4
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 4
|
||||
certificate_name: cert-4
|
||||
@@ -181,11 +181,11 @@
|
||||
issuer: "{{ acme_roots[1].subject }}"
|
||||
use_csr_content: false
|
||||
- name: Store obtain results for cert 4
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cert_4_obtain_results: "{{ certificate_obtain_result }}"
|
||||
cert_4_alternate: "{{ 2 if select_crypto_backend == 'cryptography' else 0 }}"
|
||||
- name: Obtain cert 5
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 5, Iteration 1/4
|
||||
certificate_name: cert-5
|
||||
@@ -202,11 +202,11 @@
|
||||
account_email: ""
|
||||
use_csr_content: true
|
||||
- name: Store obtain results for cert 5a
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cert_5a_obtain_results: "{{ certificate_obtain_result }}"
|
||||
cert_5_alternate: "{{ 0 if select_crypto_backend == 'cryptography' else 0 }}"
|
||||
- name: Obtain cert 5 (should not, since already there and valid for more than 1 days)
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 5, Iteration 2/4
|
||||
certificate_name: cert-5
|
||||
@@ -223,10 +223,10 @@
|
||||
account_email: ""
|
||||
use_csr_content: false
|
||||
- name: Store obtain results for cert 5b
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cert_5_recreate_1: "{{ challenge_data is changed }}"
|
||||
- name: Obtain cert 5 (should again by less days)
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 5, Iteration 3/4
|
||||
certificate_name: cert-5
|
||||
@@ -245,15 +245,15 @@
|
||||
acme_certificate_profile: "{{ '6days' if acme_supports_profiles else omit }}"
|
||||
acme_certificate_include_renewal_cert_id: when_ari_supported
|
||||
- name: Store obtain results for cert 5c
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cert_5_recreate_2: "{{ challenge_data is changed }}"
|
||||
cert_5c_obtain_results: "{{ certificate_obtain_result }}"
|
||||
- name: Read account key (EC384)
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/account-ec384.pem'
|
||||
register: slurp_account_key
|
||||
- name: Obtain cert 5 (should again by force)
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 5, Iteration 4/4
|
||||
certificate_name: cert-5
|
||||
@@ -270,12 +270,12 @@
|
||||
account_email: ""
|
||||
use_csr_content: false
|
||||
- name: Store obtain results for cert 5d
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cert_5_recreate_3: "{{ challenge_data is changed }}"
|
||||
cert_5d_obtain_results: "{{ certificate_obtain_result }}"
|
||||
- block:
|
||||
- name: Obtain cert 6
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 6
|
||||
certificate_name: cert-6
|
||||
@@ -303,13 +303,13 @@
|
||||
issuer: "{{ acme_roots[1].subject }}"
|
||||
use_csr_content: true
|
||||
- name: Store obtain results for cert 6
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cert_6_obtain_results: "{{ certificate_obtain_result }}"
|
||||
cert_6_alternate: "{{ 0 if select_crypto_backend == 'cryptography' else 0 }}"
|
||||
when: acme_intermediates[0].subject_key_identifier is defined
|
||||
- block:
|
||||
- name: Obtain cert 7
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 7
|
||||
certificate_name: cert-7
|
||||
@@ -333,13 +333,13 @@
|
||||
authority_key_identifier: "{{ acme_roots[2].subject_key_identifier }}"
|
||||
use_csr_content: false
|
||||
- name: Store obtain results for cert 7
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cert_7_obtain_results: "{{ certificate_obtain_result }}"
|
||||
cert_7_alternate: "{{ 2 if select_crypto_backend == 'cryptography' else 0 }}"
|
||||
when: acme_roots[2].subject_key_identifier is defined
|
||||
- block:
|
||||
- name: Obtain cert 8
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 8
|
||||
certificate_name: cert-8
|
||||
@@ -361,114 +361,114 @@
|
||||
account_email: "example@example.org"
|
||||
use_csr_content: true
|
||||
- name: Store obtain results for cert 8
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cert_8_obtain_results: "{{ certificate_obtain_result }}"
|
||||
cert_8_alternate: "{{ 0 if select_crypto_backend == 'cryptography' else 0 }}"
|
||||
|
||||
## DISSECT CERTIFICATES #######################################################################
|
||||
# Make sure certificates are valid. Root certificate for Pebble equals the chain certificate.
|
||||
- name: Verifying cert 1
|
||||
command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-1-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-1-chain.pem" "{{ remote_tmp_dir }}/cert-1.pem"'
|
||||
ansible.builtin.command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-1-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-1-chain.pem" "{{ remote_tmp_dir }}/cert-1.pem"'
|
||||
ignore_errors: true
|
||||
register: cert_1_valid
|
||||
- name: Verifying cert 2
|
||||
command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-2-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-2-chain.pem" "{{ remote_tmp_dir }}/cert-2.pem"'
|
||||
ansible.builtin.command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-2-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-2-chain.pem" "{{ remote_tmp_dir }}/cert-2.pem"'
|
||||
ignore_errors: true
|
||||
register: cert_2_valid
|
||||
- name: Verifying cert 3
|
||||
command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-3-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-3-chain.pem" "{{ remote_tmp_dir }}/cert-3.pem"'
|
||||
ansible.builtin.command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-3-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-3-chain.pem" "{{ remote_tmp_dir }}/cert-3.pem"'
|
||||
ignore_errors: true
|
||||
register: cert_3_valid
|
||||
- name: Verifying cert 4
|
||||
command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-4-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-4-chain.pem" "{{ remote_tmp_dir }}/cert-4.pem"'
|
||||
ansible.builtin.command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-4-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-4-chain.pem" "{{ remote_tmp_dir }}/cert-4.pem"'
|
||||
ignore_errors: true
|
||||
register: cert_4_valid
|
||||
- name: Verifying cert 5
|
||||
command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-5-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-5-chain.pem" "{{ remote_tmp_dir }}/cert-5.pem"'
|
||||
ansible.builtin.command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-5-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-5-chain.pem" "{{ remote_tmp_dir }}/cert-5.pem"'
|
||||
ignore_errors: true
|
||||
register: cert_5_valid
|
||||
- name: Verifying cert 6
|
||||
command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-6-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-6-chain.pem" "{{ remote_tmp_dir }}/cert-6.pem"'
|
||||
ansible.builtin.command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-6-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-6-chain.pem" "{{ remote_tmp_dir }}/cert-6.pem"'
|
||||
ignore_errors: true
|
||||
register: cert_6_valid
|
||||
when: acme_intermediates[0].subject_key_identifier is defined
|
||||
- name: Verifying cert 7
|
||||
command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-7-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-7-chain.pem" "{{ remote_tmp_dir }}/cert-7.pem"'
|
||||
ansible.builtin.command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-7-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-7-chain.pem" "{{ remote_tmp_dir }}/cert-7.pem"'
|
||||
ignore_errors: true
|
||||
register: cert_7_valid
|
||||
when: acme_roots[2].subject_key_identifier is defined
|
||||
- name: Verifying cert 8
|
||||
command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-8-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-8-chain.pem" "{{ remote_tmp_dir }}/cert-8.pem"'
|
||||
ansible.builtin.command: '{{ openssl_binary }} verify -CAfile "{{ remote_tmp_dir }}/cert-8-root.pem" -untrusted "{{ remote_tmp_dir }}/cert-8-chain.pem" "{{ remote_tmp_dir }}/cert-8.pem"'
|
||||
ignore_errors: true
|
||||
register: cert_8_valid
|
||||
|
||||
# Dump certificate info
|
||||
- name: Dumping cert 1
|
||||
command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-1.pem" -noout -text'
|
||||
ansible.builtin.command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-1.pem" -noout -text'
|
||||
register: cert_1_text
|
||||
- name: Dumping cert 2
|
||||
command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-2.pem" -noout -text'
|
||||
ansible.builtin.command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-2.pem" -noout -text'
|
||||
register: cert_2_text
|
||||
- name: Dumping cert 3
|
||||
command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-3.pem" -noout -text'
|
||||
ansible.builtin.command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-3.pem" -noout -text'
|
||||
register: cert_3_text
|
||||
- name: Dumping cert 4
|
||||
command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-4.pem" -noout -text'
|
||||
ansible.builtin.command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-4.pem" -noout -text'
|
||||
register: cert_4_text
|
||||
- name: Dumping cert 5
|
||||
command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-5.pem" -noout -text'
|
||||
ansible.builtin.command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-5.pem" -noout -text'
|
||||
register: cert_5_text
|
||||
- name: Dumping cert 6
|
||||
command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-6.pem" -noout -text'
|
||||
ansible.builtin.command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-6.pem" -noout -text'
|
||||
register: cert_6_text
|
||||
when: acme_intermediates[0].subject_key_identifier is defined
|
||||
- name: Dumping cert 7
|
||||
command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-7.pem" -noout -text'
|
||||
ansible.builtin.command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-7.pem" -noout -text'
|
||||
register: cert_7_text
|
||||
when: acme_roots[2].subject_key_identifier is defined
|
||||
- name: Dumping cert 8
|
||||
command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-8.pem" -noout -text'
|
||||
ansible.builtin.command: '{{ openssl_binary }} x509 -in "{{ remote_tmp_dir }}/cert-8.pem" -noout -text'
|
||||
register: cert_8_text
|
||||
|
||||
# Dump certificate info
|
||||
- name: Dumping cert 1
|
||||
x509_certificate_info:
|
||||
community.crypto.x509_certificate_info:
|
||||
path: "{{ remote_tmp_dir }}/cert-1.pem"
|
||||
register: cert_1_info
|
||||
- name: Dumping cert 2
|
||||
x509_certificate_info:
|
||||
community.crypto.x509_certificate_info:
|
||||
path: "{{ remote_tmp_dir }}/cert-2.pem"
|
||||
register: cert_2_info
|
||||
- name: Dumping cert 3
|
||||
x509_certificate_info:
|
||||
community.crypto.x509_certificate_info:
|
||||
path: "{{ remote_tmp_dir }}/cert-3.pem"
|
||||
register: cert_3_info
|
||||
- name: Dumping cert 4
|
||||
x509_certificate_info:
|
||||
community.crypto.x509_certificate_info:
|
||||
path: "{{ remote_tmp_dir }}/cert-4.pem"
|
||||
register: cert_4_info
|
||||
- name: Dumping cert 5
|
||||
x509_certificate_info:
|
||||
community.crypto.x509_certificate_info:
|
||||
path: "{{ remote_tmp_dir }}/cert-5.pem"
|
||||
register: cert_5_info
|
||||
- name: Dumping cert 6
|
||||
x509_certificate_info:
|
||||
community.crypto.x509_certificate_info:
|
||||
path: "{{ remote_tmp_dir }}/cert-6.pem"
|
||||
register: cert_6_info
|
||||
when: acme_intermediates[0].subject_key_identifier is defined
|
||||
- name: Dumping cert 7
|
||||
x509_certificate_info:
|
||||
community.crypto.x509_certificate_info:
|
||||
path: "{{ remote_tmp_dir }}/cert-7.pem"
|
||||
register: cert_7_info
|
||||
when: acme_roots[2].subject_key_identifier is defined
|
||||
- name: Dumping cert 8
|
||||
x509_certificate_info:
|
||||
community.crypto.x509_certificate_info:
|
||||
path: "{{ remote_tmp_dir }}/cert-8.pem"
|
||||
register: cert_8_info
|
||||
|
||||
## GET ACCOUNT ORDERS #########################################################################
|
||||
- name: Don't retrieve orders
|
||||
acme_account_info:
|
||||
community.crypto.acme_account_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/account-ec256.pem"
|
||||
acme_version: 2
|
||||
@@ -477,7 +477,7 @@
|
||||
retrieve_orders: ignore
|
||||
register: account_orders_not
|
||||
- name: Retrieve orders as URL list (1/2)
|
||||
acme_account_info:
|
||||
community.crypto.acme_account_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/account-ec256.pem"
|
||||
acme_version: 2
|
||||
@@ -486,7 +486,7 @@
|
||||
retrieve_orders: url_list
|
||||
register: account_orders_urls
|
||||
- name: Retrieve orders as URL list (2/2)
|
||||
acme_account_info:
|
||||
community.crypto.acme_account_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/account-ec384.pem"
|
||||
acme_version: 2
|
||||
@@ -495,7 +495,7 @@
|
||||
retrieve_orders: url_list
|
||||
register: account_orders_urls2
|
||||
- name: Retrieve orders as object list (1/2)
|
||||
acme_account_info:
|
||||
community.crypto.acme_account_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/account-ec256.pem"
|
||||
acme_version: 2
|
||||
@@ -504,7 +504,7 @@
|
||||
retrieve_orders: object_list
|
||||
register: account_orders_full
|
||||
- name: Retrieve orders as object list (2/2)
|
||||
acme_account_info:
|
||||
community.crypto.acme_account_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/account-ec384.pem"
|
||||
acme_version: 2
|
||||
|
||||
@@ -10,46 +10,46 @@
|
||||
|
||||
- block:
|
||||
- name: Obtain root and intermediate certificates
|
||||
get_url:
|
||||
ansible.builtin.get_url:
|
||||
url: "http://{{ acme_host }}:5000/{{ item.0 }}-certificate-for-ca/{{ item.1 }}"
|
||||
dest: "{{ remote_tmp_dir }}/acme-{{ item.0 }}-{{ item.1 }}.pem"
|
||||
loop: "{{ query('nested', types, root_numbers) }}"
|
||||
|
||||
- name: Analyze root certificates
|
||||
x509_certificate_info:
|
||||
community.crypto.x509_certificate_info:
|
||||
path: "{{ remote_tmp_dir }}/acme-root-{{ item }}.pem"
|
||||
loop: "{{ root_numbers }}"
|
||||
register: acme_roots
|
||||
|
||||
- name: Analyze intermediate certificates
|
||||
x509_certificate_info:
|
||||
community.crypto.x509_certificate_info:
|
||||
path: "{{ remote_tmp_dir }}/acme-intermediate-{{ item }}.pem"
|
||||
loop: "{{ root_numbers }}"
|
||||
register: acme_intermediates
|
||||
|
||||
- name: Read root certificates
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ remote_tmp_dir ~ '/acme-root-' ~ item ~ '.pem' }}"
|
||||
loop: "{{ root_numbers }}"
|
||||
register: slurp_roots
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
x__: "{{ item | dict2items | selectattr('key', 'in', interesting_keys) | list | items2dict }}"
|
||||
loop: "{{ acme_roots.results }}"
|
||||
register: acme_roots_tmp
|
||||
|
||||
- name: Read intermediate certificates
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ remote_tmp_dir ~ '/acme-intermediate-' ~ item ~ '.pem' }}"
|
||||
loop: "{{ root_numbers }}"
|
||||
register: slurp_intermediates
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
x__: "{{ item | dict2items | selectattr('key', 'in', interesting_keys) | list | items2dict }}"
|
||||
loop: "{{ acme_intermediates.results }}"
|
||||
register: acme_intermediates_tmp
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
acme_roots: "{{ acme_roots_tmp.results | map(attribute='ansible_facts.x__') | list }}"
|
||||
acme_root_certs: "{{ slurp_roots.results | map(attribute='content') | map('b64decode') | list }}"
|
||||
acme_intermediates: "{{ acme_intermediates_tmp.results | map(attribute='ansible_facts.x__') | list }}"
|
||||
@@ -74,48 +74,48 @@
|
||||
# - public_key_fingerprints
|
||||
|
||||
- name: ACME root certificate info
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: acme_roots
|
||||
|
||||
# - name: ACME root certificates as PEM
|
||||
# debug:
|
||||
# ansible.builtin.debug:
|
||||
# var: acme_root_certs
|
||||
|
||||
- name: ACME intermediate certificate info
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: acme_intermediates
|
||||
|
||||
# - name: ACME intermediate certificates as PEM
|
||||
# debug:
|
||||
# ansible.builtin.debug:
|
||||
# var: acme_intermediate_certs
|
||||
|
||||
- block:
|
||||
- name: Running tests with OpenSSL backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: openssl
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
# Old 0.9.8 versions have insufficient CLI support for signing with EC keys
|
||||
when: openssl_version is version('1.0.0', '>=')
|
||||
|
||||
- name: Remove output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: absent
|
||||
|
||||
- name: Re-create output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: directory
|
||||
|
||||
- block:
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -4,15 +4,15 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Check that certificate 1 is valid
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_1_valid is not failed
|
||||
- name: Check that certificate 1 contains correct SANs
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'DNS:example.com' in cert_1_text.stdout"
|
||||
- name: Read certificate 1 files
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/{{ item }}'
|
||||
loop:
|
||||
- cert-1.pem
|
||||
@@ -20,7 +20,7 @@
|
||||
- cert-1-fullchain.pem
|
||||
register: slurp
|
||||
- name: Check that certificate 1 retrieval got all chains
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'all_chains' in cert_1_obtain_results"
|
||||
- "cert_1_obtain_results.all_chains | length > 1"
|
||||
@@ -32,16 +32,16 @@
|
||||
- "(slurp.results[2].content | b64decode) == cert_1_obtain_results.all_chains[cert_1_alternate | int].full_chain"
|
||||
|
||||
- name: Check that certificate 2 is valid
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_2_valid is not failed
|
||||
- name: Check that certificate 2 contains correct SANs
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'DNS:*.example.com' in cert_2_text.stdout"
|
||||
- "'DNS:example.com' in cert_2_text.stdout"
|
||||
- name: Read certificate 2 files
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/{{ item }}'
|
||||
loop:
|
||||
- cert-2.pem
|
||||
@@ -49,7 +49,7 @@
|
||||
- cert-2-fullchain.pem
|
||||
register: slurp
|
||||
- name: Check that certificate 1 retrieval got all chains
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'all_chains' in cert_2_obtain_results"
|
||||
- "cert_2_obtain_results.all_chains | length > 1"
|
||||
@@ -61,17 +61,17 @@
|
||||
- "(slurp.results[2].content | b64decode) == cert_2_obtain_results.all_chains[cert_2_alternate | int].full_chain"
|
||||
|
||||
- name: Check that certificate 3 is valid
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_3_valid is not failed
|
||||
- name: Check that certificate 3 contains correct SANs
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'DNS:*.example.com' in cert_3_text.stdout"
|
||||
- "'DNS:example.org' in cert_3_text.stdout"
|
||||
- "'DNS:t1.example.com' in cert_3_text.stdout"
|
||||
- name: Read certificate 3 files
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/{{ item }}'
|
||||
loop:
|
||||
- cert-3.pem
|
||||
@@ -79,7 +79,7 @@
|
||||
- cert-3-fullchain.pem
|
||||
register: slurp
|
||||
- name: Check that certificate 1 retrieval got all chains
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'all_chains' in cert_3_obtain_results"
|
||||
- "cert_3_obtain_results.all_chains | length > 1"
|
||||
@@ -91,11 +91,11 @@
|
||||
- "(slurp.results[2].content | b64decode) == cert_3_obtain_results.all_chains[cert_3_alternate | int].full_chain"
|
||||
|
||||
- name: Check that certificate 4 is valid
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_4_valid is not failed
|
||||
- name: Check that certificate 4 contains correct SANs
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'DNS:example.com' in cert_4_text.stdout"
|
||||
- "'DNS:t1.example.com' in cert_4_text.stdout"
|
||||
@@ -103,71 +103,71 @@
|
||||
- "'DNS:example.org' in cert_4_text.stdout"
|
||||
- "'DNS:TesT.example.org' in cert_4_text.stdout"
|
||||
- name: Check that certificate 4 retrieval did not get all chains
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'all_chains' not in cert_4_obtain_results"
|
||||
|
||||
- name: Check that certificate 5 is valid
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_5_valid is not failed
|
||||
- name: Check that certificate 5 contains correct SANs
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'DNS:t2.example.com' in cert_5_text.stdout"
|
||||
- name: Check that certificate 5 was not recreated on the first try
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_5_recreate_1 == false
|
||||
- name: Check that certificate 5 was recreated on the second try
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_5_recreate_2 == true
|
||||
- name: Check that certificate 5 was recreated on the third try
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_5_recreate_3 == true
|
||||
|
||||
- block:
|
||||
- name: Check that certificate 6 is valid
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_6_valid is not failed
|
||||
- name: Check that certificate 6 contains correct SANs
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'DNS:example.org' in cert_6_text.stdout"
|
||||
when: acme_intermediates[0].subject_key_identifier is defined
|
||||
|
||||
- block:
|
||||
- name: Check that certificate 7 is valid
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_7_valid is not failed
|
||||
- name: Check that certificate 7 contains correct SANs
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'IP Address:127.0.0.1' in cert_8_text.stdout or 'IP:127.0.0.1' in cert_8_text.stdout"
|
||||
when: acme_roots[2].subject_key_identifier is defined
|
||||
|
||||
- block:
|
||||
- name: Check that certificate 8 is valid
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_8_valid is not failed
|
||||
- name: Check that certificate 8 contains correct SANs
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'IP Address:127.0.0.1' in cert_8_text.stdout or 'IP:127.0.0.1' in cert_8_text.stdout"
|
||||
|
||||
- name: Validate that orders were not retrieved
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'account' in account_orders_not"
|
||||
- "'orders' not in account_orders_not"
|
||||
|
||||
- name: Validate that orders were retrieved as list of URLs (1/2)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'account' in account_orders_urls"
|
||||
- "'orders' not in account_orders_urls"
|
||||
@@ -175,7 +175,7 @@
|
||||
- "account_orders_urls.order_uris[0] is string"
|
||||
|
||||
- name: Validate that orders were retrieved as list of URLs (2/2)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'account' in account_orders_urls2"
|
||||
- "'orders' not in account_orders_urls2"
|
||||
@@ -183,7 +183,7 @@
|
||||
- "account_orders_urls2.order_uris[0] is string"
|
||||
|
||||
- name: Validate that orders were retrieved as list of objects (1/2)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'account' in account_orders_full"
|
||||
- "'orders' in account_orders_full"
|
||||
@@ -192,7 +192,7 @@
|
||||
- "account_orders_full.order_uris[0] is string"
|
||||
|
||||
- name: Validate that orders were retrieved as list of objects (2/2)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'account' in account_orders_full2"
|
||||
- "'orders' in account_orders_full2"
|
||||
|
||||
@@ -9,24 +9,24 @@
|
||||
account_email: example@example.org
|
||||
block:
|
||||
- name: Generate account key
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: "{{ remote_tmp_dir }}/account-ec256.pem"
|
||||
type: ECC
|
||||
curve: secp256r1
|
||||
force: true
|
||||
- name: Create cert private key
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: "{{ remote_tmp_dir }}/{{ certificate_name }}.key"
|
||||
type: ECC
|
||||
curve: secp256r1
|
||||
force: true
|
||||
- name: Create cert CSR
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: "{{ remote_tmp_dir }}/{{ certificate_name }}.csr"
|
||||
privatekey_path: "{{ remote_tmp_dir }}/{{ certificate_name }}.key"
|
||||
subject_alt_name: "{{ subject_alt_name }}"
|
||||
- name: Start process of obtaining certificate
|
||||
acme_certificate:
|
||||
community.crypto.acme_certificate:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
acme_version: 2
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
@@ -42,7 +42,7 @@
|
||||
register: certificate_data
|
||||
|
||||
- name: Inspect order
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -52,11 +52,11 @@
|
||||
method: get
|
||||
register: order_1
|
||||
- name: Show order
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: order_1.output_json
|
||||
|
||||
- name: Deactivate order (check mode)
|
||||
acme_certificate_deactivate_authz:
|
||||
community.crypto.acme_certificate_deactivate_authz:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -67,7 +67,7 @@
|
||||
register: deactivate_1
|
||||
|
||||
- name: Inspect order again
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -77,11 +77,11 @@
|
||||
method: get
|
||||
register: order_2
|
||||
- name: Show order
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: order_2.output_json
|
||||
|
||||
- name: Deactivate order
|
||||
acme_certificate_deactivate_authz:
|
||||
community.crypto.acme_certificate_deactivate_authz:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -91,7 +91,7 @@
|
||||
register: deactivate_2
|
||||
|
||||
- name: Inspect order again
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -101,11 +101,11 @@
|
||||
method: get
|
||||
register: order_3
|
||||
- name: Show order
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: order_3.output_json
|
||||
|
||||
- name: Deactivate order (check mode, idempotent)
|
||||
acme_certificate_deactivate_authz:
|
||||
community.crypto.acme_certificate_deactivate_authz:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -116,7 +116,7 @@
|
||||
register: deactivate_3
|
||||
|
||||
- name: Inspect order again
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -126,11 +126,11 @@
|
||||
method: get
|
||||
register: order_4
|
||||
- name: Show order
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: order_4.output_json
|
||||
|
||||
- name: Deactivate order (idempotent)
|
||||
acme_certificate_deactivate_authz:
|
||||
community.crypto.acme_certificate_deactivate_authz:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -140,7 +140,7 @@
|
||||
register: deactivate_4
|
||||
|
||||
- name: Inspect order again
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -150,5 +150,5 @@
|
||||
method: get
|
||||
register: order_5
|
||||
- name: Show order
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: order_5.output_json
|
||||
|
||||
@@ -10,31 +10,31 @@
|
||||
|
||||
- block:
|
||||
- name: Running tests with OpenSSL backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: openssl
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
# Old 0.9.8 versions have insufficient CLI support for signing with EC keys
|
||||
when: openssl_version is version('1.0.0', '>=')
|
||||
|
||||
- name: Remove output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: absent
|
||||
|
||||
- name: Re-create output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: directory
|
||||
|
||||
- block:
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Checks
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- order_1.output_json.status == 'pending'
|
||||
- deactivate_1 is changed
|
||||
|
||||
@@ -4,23 +4,23 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate random domain name"
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
domain_name: "host{{ '%0x' % ((2**32) | random) }}.example.com"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate account key"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
type: ECC
|
||||
curve: secp256r1
|
||||
force: true
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Parse account keys (to ease debugging some test failures)"
|
||||
openssl_privatekey_info:
|
||||
community.crypto.openssl_privatekey_info:
|
||||
path: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
return_private_key_data: true
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create ACME account"
|
||||
acme_account:
|
||||
community.crypto.acme_account:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -31,14 +31,14 @@
|
||||
register: account
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate certificate key"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: "{{ remote_tmp_dir }}/cert.key"
|
||||
type: ECC
|
||||
curve: secp256r1
|
||||
force: true
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate certificate CSR"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: "{{ remote_tmp_dir }}/cert.csr"
|
||||
privatekey_path: "{{ remote_tmp_dir }}/cert.key"
|
||||
subject:
|
||||
@@ -47,7 +47,7 @@
|
||||
register: csr
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create certificate order"
|
||||
acme_certificate_order_create:
|
||||
community.crypto.acme_certificate_order_create:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -57,11 +57,11 @@
|
||||
register: order_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Show order information"
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: order_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check order"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- order_1 is changed
|
||||
- order_1.order_uri.startswith('https://' ~ acme_host ~ ':14000/')
|
||||
@@ -81,7 +81,7 @@
|
||||
- order_1.account_uri == account.account_uri
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get order information"
|
||||
acme_certificate_order_info:
|
||||
community.crypto.acme_certificate_order_info:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -91,11 +91,11 @@
|
||||
register: order_info_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Show order information"
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: order_info_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check order information"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- order_info_1 is not changed
|
||||
- order_info_1.authorizations_by_identifier | length == 1
|
||||
@@ -120,8 +120,8 @@
|
||||
- order_info_1.account_uri == account.account_uri
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create HTTP challenges"
|
||||
uri:
|
||||
url: "http://{{ acme_host }}:5000/http/{{ item.identifier }}/{{ item.challenges['http-01'].resource[('.well-known/acme-challenge/'|length):] }}"
|
||||
ansible.builtin.uri:
|
||||
url: "http://{{ acme_host }}:5000/http/{{ item.identifier }}/{{ item.challenges['http-01'].resource[('.well-known/acme-challenge/' | length) :] }}"
|
||||
method: PUT
|
||||
body_format: raw
|
||||
body: "{{ item.challenges['http-01'].resource_value }}"
|
||||
@@ -142,13 +142,13 @@
|
||||
register: validate_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check validation result"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- validate_1 is changed
|
||||
- validate_1.account_uri == account.account_uri
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get order information"
|
||||
acme_certificate_order_info:
|
||||
community.crypto.acme_certificate_order_info:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -158,11 +158,11 @@
|
||||
register: order_info_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Show order information"
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: order_info_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check order information"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- order_info_2 is not changed
|
||||
- order_info_2.authorizations_by_identifier | length == 1
|
||||
@@ -198,7 +198,7 @@
|
||||
register: validate_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check validation result"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- validate_2 is not changed
|
||||
- validate_2.account_uri == account.account_uri
|
||||
@@ -220,7 +220,7 @@
|
||||
register: finalize_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check finalization result"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- finalize_1 is changed
|
||||
- finalize_1.account_uri == account.account_uri
|
||||
@@ -231,7 +231,7 @@
|
||||
- finalize_1.selected_chain.full_chain == finalize_1.selected_chain.cert + finalize_1.selected_chain.chain
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read files from disk"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ remote_tmp_dir }}/{{ item }}.pem"
|
||||
loop:
|
||||
- cert
|
||||
@@ -240,14 +240,14 @@
|
||||
register: slurp
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Compare finalization result with files on disk"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- finalize_1.selected_chain.cert == slurp.results[0].content | b64decode
|
||||
- finalize_1.selected_chain.chain == slurp.results[1].content | b64decode
|
||||
- finalize_1.selected_chain.full_chain == slurp.results[2].content | b64decode
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get order information"
|
||||
acme_certificate_order_info:
|
||||
community.crypto.acme_certificate_order_info:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -257,11 +257,11 @@
|
||||
register: order_info_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Show order information"
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: order_info_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check order information"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- order_info_3 is not changed
|
||||
- order_info_3.authorizations_by_identifier['dns:' ~ domain_name].identifier.type == 'dns'
|
||||
@@ -299,7 +299,7 @@
|
||||
register: finalize_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check finalization result"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- finalize_2 is not changed
|
||||
- finalize_2.account_uri == account.account_uri
|
||||
@@ -311,7 +311,7 @@
|
||||
- finalize_2.selected_chain == finalize_1.selected_chain
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get order information"
|
||||
acme_certificate_order_info:
|
||||
community.crypto.acme_certificate_order_info:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -321,11 +321,11 @@
|
||||
register: order_info_4
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Show order information"
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: order_info_4
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check order information"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- order_info_4 is not changed
|
||||
- order_info_4.authorizations_by_identifier['dns:' ~ domain_name].identifier.type == 'dns'
|
||||
@@ -351,7 +351,7 @@
|
||||
- when: acme_supports_ari
|
||||
block:
|
||||
- name: "({{ select_crypto_backend }}) Get certificate renewal information"
|
||||
acme_certificate_renewal_info:
|
||||
community.crypto.acme_certificate_renewal_info:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -361,14 +361,14 @@
|
||||
register: cert_info
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Verify information"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_info.supports_ari == true
|
||||
- cert_info.should_renew == false
|
||||
- cert_info.cert_id is string
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create replacement order 1"
|
||||
acme_certificate_order_create:
|
||||
community.crypto.acme_certificate_order_create:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -381,7 +381,7 @@
|
||||
register: replacement_order_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get replacement order 1 information"
|
||||
acme_certificate_order_info:
|
||||
community.crypto.acme_certificate_order_info:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -391,7 +391,7 @@
|
||||
register: order_info_5
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check replacement order 1"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- replacement_order_1 is changed
|
||||
- replacement_order_1.order_uri.startswith('https://' ~ acme_host ~ ':14000/')
|
||||
@@ -412,7 +412,7 @@
|
||||
- replacement_order_1.order_uri not in [order_1.order_uri]
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check replacement order 1 information"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- order_info_5 is not changed
|
||||
- order_info_5.authorizations_by_identifier | length == 1
|
||||
@@ -441,7 +441,7 @@
|
||||
- when: false # TODO get Pebble improved
|
||||
block:
|
||||
- name: "({{ select_crypto_backend }}) Create replacement order 2 (should fail)"
|
||||
acme_certificate_order_create:
|
||||
community.crypto.acme_certificate_order_create:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -454,7 +454,7 @@
|
||||
ignore_errors: true
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check replacement order 2"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- replacement_order_2 is failed
|
||||
- >-
|
||||
@@ -465,7 +465,7 @@
|
||||
)
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create replacement order 3 with error handling"
|
||||
acme_certificate_order_create:
|
||||
community.crypto.acme_certificate_order_create:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -477,7 +477,7 @@
|
||||
register: replacement_order_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get replacement order 3 information"
|
||||
acme_certificate_order_info:
|
||||
community.crypto.acme_certificate_order_info:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -487,7 +487,7 @@
|
||||
register: order_info_6
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check replacement order 3"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- replacement_order_3 is changed
|
||||
- replacement_order_3.order_uri.startswith('https://' ~ acme_host ~ ':14000/')
|
||||
@@ -510,7 +510,7 @@
|
||||
('Stop passing `replaces=' ~ cert_info.cert_id ~ '` due to error 409 urn:ietf:params:acme:error:malformed when creating ACME order') in replacement_order_3.warnings
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check replacement order 3 information"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- order_info_6 is not changed
|
||||
- order_info_6.authorizations_by_identifier | length == 1
|
||||
@@ -535,7 +535,7 @@
|
||||
- order_info_6.account_uri == account.account_uri
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Deactivate authzs for replacement order 3"
|
||||
acme_certificate_deactivate_authz:
|
||||
community.crypto.acme_certificate_deactivate_authz:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -546,8 +546,8 @@
|
||||
# Complete replacement order 1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create HTTP challenges (replacement order 1)"
|
||||
uri:
|
||||
url: "http://{{ acme_host }}:5000/http/{{ item.identifier }}/{{ item.challenges['http-01'].resource[('.well-known/acme-challenge/'|length):] }}"
|
||||
ansible.builtin.uri:
|
||||
url: "http://{{ acme_host }}:5000/http/{{ item.identifier }}/{{ item.challenges['http-01'].resource[('.well-known/acme-challenge/' | length) :] }}"
|
||||
method: PUT
|
||||
body_format: raw
|
||||
body: "{{ item.challenges['http-01'].resource_value }}"
|
||||
@@ -585,7 +585,7 @@
|
||||
- when: true
|
||||
block:
|
||||
- name: "({{ select_crypto_backend }}) Create replacement order 4 (should fail)"
|
||||
acme_certificate_order_create:
|
||||
community.crypto.acme_certificate_order_create:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -598,7 +598,7 @@
|
||||
ignore_errors: true
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check replacement order 4"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- replacement_order_4 is failed
|
||||
- replacement_order_4.msg.startswith('Failed to start new order for https://' ~ acme_host)
|
||||
@@ -606,7 +606,7 @@
|
||||
' with status 409 Conflict. Error urn:ietf:params:acme:error:malformed: ' in replacement_order_4.msg
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create replacement order 5 with error handling"
|
||||
acme_certificate_order_create:
|
||||
community.crypto.acme_certificate_order_create:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -618,7 +618,7 @@
|
||||
register: replacement_order_5
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get replacement order 5 information"
|
||||
acme_certificate_order_info:
|
||||
community.crypto.acme_certificate_order_info:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -628,7 +628,7 @@
|
||||
register: order_info_7
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check replacement order 5"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- replacement_order_5 is changed
|
||||
- replacement_order_5.order_uri.startswith('https://' ~ acme_host ~ ':14000/')
|
||||
@@ -651,7 +651,7 @@
|
||||
('Stop passing `replaces=' ~ cert_info.cert_id ~ '` due to error 409 urn:ietf:params:acme:error:malformed when creating ACME order') in replacement_order_5.warnings
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check replacement order 5 information"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- order_info_7 is not changed
|
||||
- order_info_7.authorizations_by_identifier | length == 1
|
||||
@@ -676,7 +676,7 @@
|
||||
- order_info_7.account_uri == account.account_uri
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Deactivate authzs for replacement order 5"
|
||||
acme_certificate_deactivate_authz:
|
||||
community.crypto.acme_certificate_deactivate_authz:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -689,7 +689,7 @@
|
||||
- when: acme_supports_profiles
|
||||
block:
|
||||
- name: "({{ select_crypto_backend }}) Create order with invalid profile (should fail)"
|
||||
acme_certificate_order_create:
|
||||
community.crypto.acme_certificate_order_create:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -702,7 +702,7 @@
|
||||
ignore_errors: true
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check invalid profile order"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- invalid_profile_order is failed
|
||||
- invalid_profile_order.msg == "The ACME CA does not support selected profile 'does-not-exist'."
|
||||
@@ -712,7 +712,7 @@
|
||||
- when: not acme_supports_profiles
|
||||
block:
|
||||
- name: "({{ select_crypto_backend }}) Create order with profile when server does not support it (should fail)"
|
||||
acme_certificate_order_create:
|
||||
community.crypto.acme_certificate_order_create:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -724,7 +724,7 @@
|
||||
ignore_errors: true
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check profile without server support order"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- profile_without_server_support is failed
|
||||
- profile_without_server_support.msg == 'The ACME CA does not support profiles. Please omit the "profile" option.'
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
- block:
|
||||
- name: Running tests with OpenSSL backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: openssl
|
||||
|
||||
@@ -18,18 +18,18 @@
|
||||
when: openssl_version is version('1.0.0', '>=')
|
||||
|
||||
- name: Remove output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: absent
|
||||
|
||||
- name: Re-create output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: directory
|
||||
|
||||
- block:
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
## SET UP ACCOUNT KEYS ########################################################################
|
||||
- block:
|
||||
- name: Generate account keys
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: "{{ remote_tmp_dir }}/{{ item.name }}.pem"
|
||||
type: "{{ item.type }}"
|
||||
size: "{{ item.size | default(omit) }}"
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
## CREATE ACCOUNTS AND OBTAIN CERTIFICATES ####################################################
|
||||
- name: Obtain cert 1
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 1 for renewal check
|
||||
certificate_name: cert-1
|
||||
@@ -41,18 +41,18 @@
|
||||
|
||||
## OBTAIN CERTIFICATE INFOS ###################################################################
|
||||
- name: Dump OpenSSL x509 info
|
||||
command:
|
||||
ansible.builtin.command:
|
||||
cmd: openssl x509 -in {{ remote_tmp_dir }}/cert-1.pem -noout -text
|
||||
- name: Obtain certificate information
|
||||
x509_certificate_info:
|
||||
community.crypto.x509_certificate_info:
|
||||
path: "{{ remote_tmp_dir }}/cert-1.pem"
|
||||
register: cert_1_info
|
||||
- name: Read certificate
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/cert-1.pem'
|
||||
register: slurp_cert_1
|
||||
- name: Obtain certificate information (1/11)
|
||||
acme_certificate_renewal_info:
|
||||
community.crypto.acme_certificate_renewal_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
certificate_path: "{{ remote_tmp_dir }}/cert-1.pem"
|
||||
acme_version: 2
|
||||
@@ -60,7 +60,7 @@
|
||||
validate_certs: false
|
||||
register: cert_1_renewal_1
|
||||
- name: Obtain certificate information (2/11)
|
||||
acme_certificate_renewal_info:
|
||||
community.crypto.acme_certificate_renewal_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
certificate_path: "{{ remote_tmp_dir }}/cert-1.pem"
|
||||
acme_version: 2
|
||||
@@ -70,7 +70,7 @@
|
||||
remaining_percentage: 0.5
|
||||
register: cert_1_renewal_2
|
||||
- name: Obtain certificate information (3/11)
|
||||
acme_certificate_renewal_info:
|
||||
community.crypto.acme_certificate_renewal_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
certificate_content: "{{ slurp_cert_1.content | b64decode }}"
|
||||
acme_version: 2
|
||||
@@ -79,7 +79,7 @@
|
||||
now: +1800d
|
||||
register: cert_1_renewal_3
|
||||
- name: Obtain certificate information (4/11)
|
||||
acme_certificate_renewal_info:
|
||||
community.crypto.acme_certificate_renewal_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
certificate_path: "{{ remote_tmp_dir }}/cert-1.pem"
|
||||
acme_version: 2
|
||||
@@ -90,7 +90,7 @@
|
||||
remaining_percentage: 0.1
|
||||
register: cert_1_renewal_4
|
||||
- name: Obtain certificate information (5/11)
|
||||
acme_certificate_renewal_info:
|
||||
community.crypto.acme_certificate_renewal_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
certificate_path: "{{ remote_tmp_dir }}/cert-1.pem"
|
||||
acme_version: 2
|
||||
@@ -101,7 +101,7 @@
|
||||
remaining_percentage: 0.01
|
||||
register: cert_1_renewal_5
|
||||
- name: Obtain certificate information (6/11)
|
||||
acme_certificate_renewal_info:
|
||||
community.crypto.acme_certificate_renewal_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
certificate_path: "{{ remote_tmp_dir }}/cert-1.pem"
|
||||
acme_version: 2
|
||||
@@ -112,7 +112,7 @@
|
||||
remaining_percentage: 0.03
|
||||
register: cert_1_renewal_6
|
||||
- name: Obtain certificate information (7/11)
|
||||
acme_certificate_renewal_info:
|
||||
community.crypto.acme_certificate_renewal_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
certificate_path: "{{ remote_tmp_dir }}/cert-1.pem"
|
||||
acme_version: 2
|
||||
@@ -121,7 +121,7 @@
|
||||
now: +1830d
|
||||
register: cert_1_renewal_7
|
||||
- name: Obtain certificate information (8/11)
|
||||
acme_certificate_renewal_info:
|
||||
community.crypto.acme_certificate_renewal_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
acme_version: 2
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
@@ -129,7 +129,7 @@
|
||||
now: +1830d
|
||||
register: cert_1_renewal_8
|
||||
- name: Obtain certificate information (9/11)
|
||||
acme_certificate_renewal_info:
|
||||
community.crypto.acme_certificate_renewal_info:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
certificate_path: "{{ remote_tmp_dir }}/cert-does-not-exist.pem"
|
||||
acme_version: 2
|
||||
@@ -137,12 +137,12 @@
|
||||
validate_certs: false
|
||||
register: cert_1_renewal_9
|
||||
- name: Create broken file
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
dest: "{{ remote_tmp_dir }}/cert-is-broken.pem"
|
||||
content: |
|
||||
--- THIS IS NOT A CERT ---
|
||||
- name: Obtain certificate information (10/11)
|
||||
acme_certificate_renewal_info:
|
||||
community.crypto.acme_certificate_renewal_info:
|
||||
treat_parsing_error_as_non_existing: false
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
certificate_path: "{{ remote_tmp_dir }}/cert-is-broken.pem"
|
||||
@@ -152,7 +152,7 @@
|
||||
register: cert_1_renewal_10
|
||||
ignore_errors: true
|
||||
- name: Obtain certificate information (11/11)
|
||||
acme_certificate_renewal_info:
|
||||
community.crypto.acme_certificate_renewal_info:
|
||||
treat_parsing_error_as_non_existing: true
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
certificate_path: "{{ remote_tmp_dir }}/cert-is-broken.pem"
|
||||
|
||||
@@ -13,31 +13,31 @@
|
||||
block:
|
||||
- block:
|
||||
- name: Running tests with OpenSSL backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: openssl
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
# Old 0.9.8 versions have insufficient CLI support for signing with EC keys
|
||||
when: openssl_version is version('1.0.0', '>=')
|
||||
|
||||
- name: Remove output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: absent
|
||||
|
||||
- name: Re-create output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: directory
|
||||
|
||||
- block:
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
block:
|
||||
|
||||
- name: Validate results (generic)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_1_renewal_1.should_renew == false
|
||||
- cert_1_renewal_1.msg == 'The certificate is still valid and no condition was reached'
|
||||
@@ -64,7 +64,7 @@
|
||||
when: not acme_supports_ari
|
||||
|
||||
- name: Validate results without ARI
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_1_renewal_1.supports_ari == false
|
||||
- cert_1_renewal_2.supports_ari == false
|
||||
@@ -84,7 +84,7 @@
|
||||
when: not acme_supports_ari
|
||||
|
||||
- name: Validate results with ARI
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_1_renewal_1.supports_ari == true
|
||||
- cert_1_renewal_2.supports_ari == true
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
## SET UP ACCOUNT KEYS ########################################################################
|
||||
- block:
|
||||
- name: Generate account keys
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: "{{ remote_tmp_dir }}/{{ item.name }}.pem"
|
||||
type: "{{ item.type }}"
|
||||
size: "{{ item.size | default(omit) }}"
|
||||
@@ -28,11 +28,11 @@
|
||||
|
||||
## CREATE ACCOUNTS AND OBTAIN CERTIFICATES ####################################################
|
||||
- name: Read account key (EC256)
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/account-ec256.pem'
|
||||
register: slurp_account_key
|
||||
- name: Obtain cert 1
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 1 for revocation
|
||||
certificate_name: cert-1
|
||||
@@ -49,7 +49,7 @@
|
||||
terms_agreed: true
|
||||
account_email: "example@example.org"
|
||||
- name: Obtain cert 2
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 2 for revocation
|
||||
certificate_name: cert-2
|
||||
@@ -66,7 +66,7 @@
|
||||
terms_agreed: true
|
||||
account_email: "example@example.org"
|
||||
- name: Obtain cert 3
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
certgen_title: Certificate 3 for revocation
|
||||
certificate_name: cert-3
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
## REVOKE CERTIFICATES ########################################################################
|
||||
- name: Revoke certificate 1 via account key
|
||||
acme_certificate_revoke:
|
||||
community.crypto.acme_certificate_revoke:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_src: "{{ remote_tmp_dir }}/account-ec256.pem"
|
||||
certificate: "{{ remote_tmp_dir }}/cert-1.pem"
|
||||
@@ -94,7 +94,7 @@
|
||||
ignore_errors: true
|
||||
register: cert_1_revoke
|
||||
- name: Revoke certificate 2 via certificate private key
|
||||
acme_certificate_revoke:
|
||||
community.crypto.acme_certificate_revoke:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
private_key_src: "{{ remote_tmp_dir }}/cert-2.key"
|
||||
private_key_passphrase: "{{ 'hunter2' if select_crypto_backend != 'openssl' else omit }}"
|
||||
@@ -105,11 +105,11 @@
|
||||
ignore_errors: true
|
||||
register: cert_2_revoke
|
||||
- name: Read account key (RSA)
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/account-rsa.pem'
|
||||
register: slurp_account_key
|
||||
- name: Revoke certificate 3 via account key (fullchain)
|
||||
acme_certificate_revoke:
|
||||
community.crypto.acme_certificate_revoke:
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
account_key_content: "{{ slurp_account_key.content | b64decode }}"
|
||||
certificate: "{{ remote_tmp_dir }}/cert-3-fullchain.pem"
|
||||
|
||||
@@ -10,31 +10,31 @@
|
||||
|
||||
- block:
|
||||
- name: Running tests with OpenSSL backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: openssl
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
# Old 0.9.8 versions have insufficient CLI support for signing with EC keys
|
||||
when: openssl_version is version('1.0.0', '>=')
|
||||
|
||||
- name: Remove output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: absent
|
||||
|
||||
- name: Re-create output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: directory
|
||||
|
||||
- block:
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -4,17 +4,17 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Check that certificate 1 was revoked
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_1_revoke is changed
|
||||
- cert_1_revoke is not failed
|
||||
- name: Check that certificate 2 was revoked
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_2_revoke is changed
|
||||
- cert_2_revoke is not failed
|
||||
- name: Check that certificate 3 was revoked
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert_3_revoke is changed
|
||||
- cert_3_revoke is not failed
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
|
||||
- block:
|
||||
- name: Generate ECC256 account keys
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: "{{ remote_tmp_dir }}/account-ec256.pem"
|
||||
type: ECC
|
||||
curve: secp256r1
|
||||
force: true
|
||||
- name: Obtain cert 1
|
||||
include_tasks: obtain-cert.yml
|
||||
ansible.builtin.include_tasks: obtain-cert.yml
|
||||
vars:
|
||||
select_crypto_backend: auto
|
||||
certgen_title: Certificate 1
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
- block:
|
||||
- name: Generate account keys
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: "{{ remote_tmp_dir }}/{{ item }}.pem"
|
||||
type: ECC
|
||||
curve: secp256r1
|
||||
@@ -13,7 +13,7 @@
|
||||
loop: "{{ account_keys }}"
|
||||
|
||||
- name: Parse account keys (to ease debugging some test failures)
|
||||
openssl_privatekey_info:
|
||||
community.crypto.openssl_privatekey_info:
|
||||
path: "{{ remote_tmp_dir }}/{{ item }}.pem"
|
||||
return_private_key_data: true
|
||||
loop: "{{ account_keys }}"
|
||||
@@ -23,32 +23,32 @@
|
||||
- accountkey
|
||||
|
||||
- name: Get directory
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
method: directory-only
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
register: directory
|
||||
- debug: var=directory
|
||||
- ansible.builtin.debug: var=directory
|
||||
|
||||
- name: Create an account
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
account_key_src: "{{ remote_tmp_dir }}/accountkey.pem"
|
||||
url: "{{ directory.directory.newAccount}}"
|
||||
url: "{{ directory.directory.newAccount }}"
|
||||
method: post
|
||||
content: '{"termsOfServiceAgreed":true}'
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
register: account_creation
|
||||
# account_creation.headers.location contains the account URI
|
||||
# if creation was successful
|
||||
- debug: var=account_creation
|
||||
- ansible.builtin.debug: var=account_creation
|
||||
|
||||
- name: Get account information
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -58,10 +58,10 @@
|
||||
method: get
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
register: account_get
|
||||
- debug: var=account_get
|
||||
- ansible.builtin.debug: var=account_get
|
||||
|
||||
- name: Update account contacts
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -78,10 +78,10 @@
|
||||
contact:
|
||||
- mailto:me@example.com
|
||||
register: account_update
|
||||
- debug: var=account_update
|
||||
- ansible.builtin.debug: var=account_update
|
||||
|
||||
- name: Create certificate order
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -102,10 +102,10 @@
|
||||
- type: dns
|
||||
value: example.org
|
||||
register: new_order
|
||||
- debug: var=new_order
|
||||
- ansible.builtin.debug: var=new_order
|
||||
|
||||
- name: Get order information
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -115,10 +115,10 @@
|
||||
method: get
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
register: order
|
||||
- debug: var=order
|
||||
- ansible.builtin.debug: var=order
|
||||
|
||||
- name: Get authzs for order
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -129,10 +129,10 @@
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
loop: "{{ order.output_json.authorizations }}"
|
||||
register: authz
|
||||
- debug: var=authz
|
||||
- ansible.builtin.debug: var=authz
|
||||
|
||||
- name: Get HTTP-01 challenge for authz
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -143,10 +143,10 @@
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
register: http01challenge
|
||||
loop: "{{ authz.results | map(attribute='output_json') | list }}"
|
||||
- debug: var=http01challenge
|
||||
- ansible.builtin.debug: var=http01challenge
|
||||
|
||||
- name: Activate HTTP-01 challenge manually
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -158,10 +158,10 @@
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
register: activation
|
||||
loop: "{{ http01challenge.results | map(attribute='output_json') | list }}"
|
||||
- debug: var=activation
|
||||
- ansible.builtin.debug: var=activation
|
||||
|
||||
- name: Get HTTP-01 challenge results
|
||||
acme_inspect:
|
||||
community.crypto.acme_inspect:
|
||||
acme_directory: "{{ acme_directory_url }}"
|
||||
acme_version: 2
|
||||
validate_certs: false
|
||||
@@ -175,4 +175,4 @@
|
||||
until: "validation_result.output_json.status not in ['pending', 'processing']"
|
||||
retries: 20
|
||||
delay: 1
|
||||
- debug: var=validation_result
|
||||
- ansible.builtin.debug: var=validation_result
|
||||
|
||||
@@ -10,31 +10,31 @@
|
||||
|
||||
- block:
|
||||
- name: Running tests with OpenSSL backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: openssl
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
# Old 0.9.8 versions have insufficient CLI support for signing with EC keys
|
||||
when: openssl_version is version('1.0.0', '>=')
|
||||
|
||||
- name: Remove output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: absent
|
||||
|
||||
- name: Re-create output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: directory
|
||||
|
||||
- block:
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Check directory output
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- directory is not changed
|
||||
- "'directory' in directory"
|
||||
@@ -16,7 +16,7 @@
|
||||
- "'output_json' not in directory"
|
||||
|
||||
- name: Check account creation output
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_creation is changed
|
||||
- "'directory' in account_creation"
|
||||
@@ -30,7 +30,7 @@
|
||||
- account_creation.output_text | from_json == account_creation.output_json
|
||||
|
||||
- name: Check account get output
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_get is not changed
|
||||
- "'directory' in account_get"
|
||||
@@ -41,7 +41,7 @@
|
||||
- account_get.output_json == account_creation.output_json
|
||||
|
||||
- name: Check account update output
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- account_update is changed
|
||||
- "'directory' in account_update"
|
||||
@@ -53,7 +53,7 @@
|
||||
- account_update.output_json.contact[0] in ['mailto:me@example.com', 'mailto:*******@example.com']
|
||||
|
||||
- name: Check certificate request output
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- new_order is changed
|
||||
- "'directory' in new_order"
|
||||
@@ -66,7 +66,7 @@
|
||||
- "'finalize' in new_order.output_json"
|
||||
|
||||
- name: Check get order output
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- order is not changed
|
||||
- "'directory' in order"
|
||||
@@ -77,7 +77,7 @@
|
||||
# - new_order.output_json == order.output_json
|
||||
|
||||
- name: Check get authz output
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- item is not changed
|
||||
- "'directory' in item"
|
||||
@@ -90,7 +90,7 @@
|
||||
loop: "{{ authz.results }}"
|
||||
|
||||
- name: Check get challenge output
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- item is not changed
|
||||
- "'directory' in item"
|
||||
@@ -104,7 +104,7 @@
|
||||
loop: "{{ http01challenge.results }}"
|
||||
|
||||
- name: Check challenge activation output
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- item is changed
|
||||
- "'directory' in item"
|
||||
@@ -118,7 +118,7 @@
|
||||
loop: "{{ activation.results }}"
|
||||
|
||||
- name: Check validation result
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- item is not changed
|
||||
- "'directory' in item"
|
||||
|
||||
@@ -9,14 +9,14 @@
|
||||
####################################################################
|
||||
|
||||
- name: Generate CSR for {{ certificate.name }}
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/{{ certificate.name }}.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/{{ certificate.name }}.key'
|
||||
subject: '{{ certificate.subject }}'
|
||||
useCommonNameForSAN: false
|
||||
|
||||
- name: Generate certificate for {{ certificate.name }}
|
||||
x509_certificate:
|
||||
community.crypto.x509_certificate:
|
||||
path: '{{ remote_tmp_dir }}/{{ certificate.name }}.pem'
|
||||
csr_path: '{{ remote_tmp_dir }}/{{ certificate.name }}.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/{{ certificate.name }}.key'
|
||||
|
||||
@@ -10,25 +10,25 @@
|
||||
|
||||
- block:
|
||||
- name: Create private keys
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/{{ item.name }}.key'
|
||||
size: '{{ default_rsa_key_size_certificates }}'
|
||||
loop: '{{ certificates }}'
|
||||
|
||||
- name: Generate certificates
|
||||
include_tasks: create-single-certificate.yml
|
||||
ansible.builtin.include_tasks: create-single-certificate.yml
|
||||
loop: '{{ certificates }}'
|
||||
loop_control:
|
||||
loop_var: certificate
|
||||
|
||||
- name: Read certificates
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/{{ item.name }}.pem'
|
||||
loop: '{{ certificates }}'
|
||||
register: certificates_read
|
||||
|
||||
- name: Store read certificates
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
read_certificates: >-
|
||||
{{ certificates_read.results | map(attribute='content') | map('b64decode')
|
||||
| zip(certificates | map(attribute='name'))
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
####################################################################
|
||||
|
||||
- name: Case A => works
|
||||
certificate_complete_chain:
|
||||
community.crypto.certificate_complete_chain:
|
||||
input_chain: "{{ read_certificates['d-leaf'] }}"
|
||||
intermediate_certificates:
|
||||
- '{{ remote_tmp_dir }}/b-intermediate.pem'
|
||||
@@ -19,7 +19,7 @@
|
||||
- name: Case B => doesn't work, but this is expected
|
||||
failed_when: false
|
||||
register: caseb
|
||||
certificate_complete_chain:
|
||||
community.crypto.certificate_complete_chain:
|
||||
input_chain: "{{ read_certificates['d-leaf'] }}"
|
||||
intermediate_certificates:
|
||||
- '{{ remote_tmp_dir }}/c-intermediate.pem'
|
||||
@@ -27,11 +27,11 @@
|
||||
- '{{ remote_tmp_dir }}/a-root.pem'
|
||||
|
||||
- name: Assert that case B failed
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that: "'Cannot complete chain' in caseb.msg"
|
||||
|
||||
- name: Case C => works
|
||||
certificate_complete_chain:
|
||||
community.crypto.certificate_complete_chain:
|
||||
input_chain: "{{ read_certificates['d-leaf'] }}"
|
||||
intermediate_certificates:
|
||||
- '{{ remote_tmp_dir }}/c-intermediate.pem'
|
||||
@@ -40,7 +40,7 @@
|
||||
- '{{ remote_tmp_dir }}/a-root.pem'
|
||||
|
||||
- name: Case D => works as well after PR 403
|
||||
certificate_complete_chain:
|
||||
community.crypto.certificate_complete_chain:
|
||||
input_chain: "{{ read_certificates['d-leaf'] }}"
|
||||
intermediate_certificates:
|
||||
- '{{ remote_tmp_dir }}/b-intermediate.pem'
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
|
||||
- block:
|
||||
- name: Find root for cert 1 using directory
|
||||
certificate_complete_chain:
|
||||
community.crypto.certificate_complete_chain:
|
||||
input_chain: '{{ fullchain | trim }}'
|
||||
root_certificates:
|
||||
- '{{ remote_tmp_dir }}/files/roots/'
|
||||
register: cert1_root
|
||||
- name: Verify root for cert 1
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert1_root.complete_chain | join('') == (fullchain ~ root)
|
||||
- cert1_root.root == root
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
- block:
|
||||
- name: Find rootchain for cert 1 using intermediate and root PEM
|
||||
certificate_complete_chain:
|
||||
community.crypto.certificate_complete_chain:
|
||||
input_chain: '{{ cert }}'
|
||||
intermediate_certificates:
|
||||
- '{{ remote_tmp_dir }}/files/cert1-chain.pem'
|
||||
@@ -34,7 +34,7 @@
|
||||
- '{{ remote_tmp_dir }}/files/roots.pem'
|
||||
register: cert1_rootchain
|
||||
- name: Verify rootchain for cert 1
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert1_rootchain.complete_chain | join('') == (cert ~ chain ~ root)
|
||||
- cert1_rootchain.chain[:-1] | join('') == chain
|
||||
@@ -46,13 +46,13 @@
|
||||
|
||||
- block:
|
||||
- name: Find root for cert 2 using directory
|
||||
certificate_complete_chain:
|
||||
community.crypto.certificate_complete_chain:
|
||||
input_chain: "{{ fullchain | trim }}"
|
||||
root_certificates:
|
||||
- '{{ remote_tmp_dir }}/files/roots/'
|
||||
register: cert2_root
|
||||
- name: Verify root for cert 2
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert2_root.complete_chain | join('') == (fullchain ~ root)
|
||||
- cert2_root.root == root
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
- block:
|
||||
- name: Find rootchain for cert 2 using intermediate and root PEM
|
||||
certificate_complete_chain:
|
||||
community.crypto.certificate_complete_chain:
|
||||
input_chain: '{{ cert }}'
|
||||
intermediate_certificates:
|
||||
- '{{ remote_tmp_dir }}/files/cert2-chain.pem'
|
||||
@@ -70,7 +70,7 @@
|
||||
- '{{ remote_tmp_dir }}/files/roots.pem'
|
||||
register: cert2_rootchain
|
||||
- name: Verify rootchain for cert 2
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert2_rootchain.complete_chain | join('') == (cert ~ chain ~ root)
|
||||
- cert2_rootchain.chain[:-1] | join('') == chain
|
||||
@@ -82,7 +82,7 @@
|
||||
|
||||
- block:
|
||||
- name: Find alternate rootchain for cert 2 using intermediate and root PEM
|
||||
certificate_complete_chain:
|
||||
community.crypto.certificate_complete_chain:
|
||||
input_chain: '{{ cert }}'
|
||||
intermediate_certificates:
|
||||
- '{{ remote_tmp_dir }}/files/cert2-altchain.pem'
|
||||
@@ -90,7 +90,7 @@
|
||||
- '{{ remote_tmp_dir }}/files/roots.pem'
|
||||
register: cert2_rootchain_alt
|
||||
- name: Verify rootchain for cert 2
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert2_rootchain_alt.complete_chain | join('') == (cert ~ chain ~ root)
|
||||
- cert2_rootchain_alt.chain[:-1] | join('') == chain
|
||||
@@ -102,13 +102,13 @@
|
||||
|
||||
- block:
|
||||
- name: Find alternate rootchain for cert 2 when complete chain is already presented to the module
|
||||
certificate_complete_chain:
|
||||
community.crypto.certificate_complete_chain:
|
||||
input_chain: '{{ cert ~ chain ~ root }}'
|
||||
root_certificates:
|
||||
- '{{ remote_tmp_dir }}/files/roots.pem'
|
||||
register: cert2_complete_chain
|
||||
- name: Verify rootchain for cert 2
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert2_complete_chain.complete_chain | join('') == (cert ~ chain ~ root)
|
||||
- cert2_complete_chain.chain == []
|
||||
@@ -119,7 +119,7 @@
|
||||
root: "{{ lookup('file', 'cert2-altroot.pem', rstrip=False) }}"
|
||||
|
||||
- name: Check failure when no intermediate certificate can be found
|
||||
certificate_complete_chain:
|
||||
community.crypto.certificate_complete_chain:
|
||||
input_chain: '{{ lookup("file", "cert2.pem", rstrip=true) }}'
|
||||
intermediate_certificates:
|
||||
- '{{ remote_tmp_dir }}/files/cert1-chain.pem'
|
||||
@@ -128,13 +128,13 @@
|
||||
register: cert2_no_intermediate
|
||||
ignore_errors: true
|
||||
- name: Verify failure
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert2_no_intermediate is failed
|
||||
- "cert2_no_intermediate.msg.startswith('Cannot complete chain. Stuck at certificate ')"
|
||||
|
||||
- name: Check failure when infinite loop is found
|
||||
certificate_complete_chain:
|
||||
community.crypto.certificate_complete_chain:
|
||||
input_chain: '{{ lookup("file", "cert1-fullchain.pem", rstrip=true) }}'
|
||||
intermediate_certificates:
|
||||
- '{{ remote_tmp_dir }}/files/roots.pem'
|
||||
@@ -143,7 +143,7 @@
|
||||
register: cert2_infinite_loop
|
||||
ignore_errors: true
|
||||
- name: Verify failure
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- cert2_infinite_loop is failed
|
||||
- "cert2_infinite_loop.msg == 'Found cycle while building certificate chain'"
|
||||
|
||||
@@ -11,17 +11,17 @@
|
||||
- block:
|
||||
|
||||
- name: Copy test files to testhost
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
src: '{{ role_path }}/files/'
|
||||
dest: '{{ remote_tmp_dir }}/files/'
|
||||
|
||||
- name: Run tests with copied certificates
|
||||
import_tasks: existing.yml
|
||||
ansible.builtin.import_tasks: existing.yml
|
||||
|
||||
- name: Create more certificates
|
||||
import_tasks: create.yml
|
||||
ansible.builtin.import_tasks: create.yml
|
||||
|
||||
- name: Run tests with created certificates
|
||||
import_tasks: created.yml
|
||||
ansible.builtin.import_tasks: created.yml
|
||||
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -9,23 +9,23 @@
|
||||
####################################################################
|
||||
|
||||
- name: Retrieve information
|
||||
crypto_info:
|
||||
community.crypto.crypto_info:
|
||||
register: result
|
||||
|
||||
- name: Display information
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
var: result
|
||||
|
||||
- name: Register cryptography version
|
||||
command: "{{ ansible_python.executable }} -c 'import cryptography; print(cryptography.__version__)'"
|
||||
ansible.builtin.command: "{{ ansible_python.executable }} -c 'import cryptography; print(cryptography.__version__)'"
|
||||
register: local_cryptography_version
|
||||
|
||||
- name: Set cryptography version
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
local_cryptography_version: "{{ local_cryptography_version.stdout }}"
|
||||
|
||||
- name: Determine complex version-based capabilities
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
supports_ed25519: >-
|
||||
{{
|
||||
local_cryptography_version is version("2.6", ">=")
|
||||
@@ -46,7 +46,7 @@
|
||||
}}
|
||||
|
||||
- name: Verify cryptography information
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.python_cryptography_installed
|
||||
- "'python_cryptography_import_error' not in result"
|
||||
@@ -67,15 +67,15 @@
|
||||
- result.python_cryptography_capabilities.has_x448 == (local_cryptography_version is version('2.5', '>='))
|
||||
|
||||
- name: Find OpenSSL binary
|
||||
command: which openssl
|
||||
ansible.builtin.command: which openssl
|
||||
register: local_openssl_path
|
||||
|
||||
- name: Find OpenSSL version
|
||||
command: openssl version
|
||||
ansible.builtin.command: openssl version
|
||||
register: local_openssl_version_full
|
||||
|
||||
- name: Verify OpenSSL information
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.openssl_present
|
||||
- result.openssl.path == local_openssl_path.stdout
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: "Get CSR info"
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/csr_1.csr') | community.crypto.openssl_csr_info }}
|
||||
result_idna: >-
|
||||
@@ -13,7 +13,7 @@
|
||||
{{ lookup('file', remote_tmp_dir ~ '/csr_1.csr') | community.crypto.openssl_csr_info(name_encoding='unicode') }}
|
||||
|
||||
- name: "Check whether subject and extensions behaves as expected"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.subject.organizationalUnitName == 'ACME Department'
|
||||
- "['organizationalUnitName', 'Crypto Department'] in result.subject_ordered"
|
||||
@@ -40,7 +40,7 @@
|
||||
- result.extensions_by_oid['2.5.29.37'].value == 'MHQGCCsGAQUFBwMBBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDBAYIKwYBBQUHAwgGCCsGAQUFBwMJBgRVHSUABggrBgEFBQcBAwYIKwYBBQUHAwoGCCsGAQUFBwMHBggrBgEFBQcBAg=='
|
||||
|
||||
- name: "Check SubjectKeyIdentifier and AuthorityKeyIdentifier"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.subject_key_identifier == "00:11:22:33"
|
||||
- result.authority_key_identifier == "44:55:66:77"
|
||||
@@ -56,17 +56,17 @@
|
||||
- "IP:1.2.3.4"
|
||||
|
||||
- name: "Get CSR info"
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/csr_2.csr') | community.crypto.openssl_csr_info }}
|
||||
|
||||
- name: "Get CSR info"
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/csr_3.csr') | community.crypto.openssl_csr_info }}
|
||||
|
||||
- name: "Check AuthorityKeyIdentifier"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.authority_key_identifier is none
|
||||
- result.authority_cert_issuer == expected_authority_cert_issuer
|
||||
@@ -77,65 +77,65 @@
|
||||
- "IP:1.2.3.4"
|
||||
|
||||
- name: "Get CSR info"
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/csr_4.csr') | community.crypto.openssl_csr_info }}
|
||||
|
||||
- name: "Check AuthorityKeyIdentifier"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.authority_key_identifier == "44:55:66:77"
|
||||
- result.authority_cert_issuer is none
|
||||
- result.authority_cert_serial_number is none
|
||||
|
||||
- name: Get invalid certificate info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ [] | community.crypto.openssl_csr_info }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("The community.crypto.openssl_csr_info input must be a text type, not ")
|
||||
|
||||
- name: Get invalid certificate info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ 'foo' | community.crypto.openssl_csr_info }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("Unable to load (?:request|PEM file)(?:\.|$)")
|
||||
|
||||
- name: Get invalid certificate info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ 'foo' | community.crypto.openssl_csr_info(name_encoding=[]) }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("The name_encoding option must be of a text type, not ")
|
||||
|
||||
- name: Get invalid name_encoding parameter
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ 'bar' | community.crypto.openssl_csr_info(name_encoding='foo') }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("The name_encoding option must be one of the values \"ignore\", \"idna\", or \"unicode\", not \"foo\"$")
|
||||
|
||||
@@ -9,23 +9,23 @@
|
||||
####################################################################
|
||||
|
||||
- name: Make sure the Python idna library is installed
|
||||
pip:
|
||||
ansible.builtin.pip:
|
||||
name: idna
|
||||
state: present
|
||||
|
||||
- name: Generate privatekey
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- name: Generate privatekey with password
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
passphrase: hunter2
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- name: Generate CSR 1
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_1.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -94,7 +94,7 @@
|
||||
- "IP:1.2.3.4"
|
||||
|
||||
- name: Generate CSR 2
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_2.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
privatekey_passphrase: hunter2
|
||||
@@ -103,7 +103,7 @@
|
||||
- "CA:TRUE"
|
||||
|
||||
- name: Generate CSR 3
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_3.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
useCommonNameForSAN: false
|
||||
@@ -121,12 +121,12 @@
|
||||
- "IP:1.2.3.4"
|
||||
|
||||
- name: Generate CSR 4
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_4.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
useCommonNameForSAN: false
|
||||
authority_key_identifier: "44:55:66:77"
|
||||
|
||||
- name: Running tests
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Get key 1 info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/privatekey_1.pem') | community.crypto.openssl_privatekey_info }}
|
||||
|
||||
- name: Check that RSA key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'public_key' in result"
|
||||
- "'public_key_fingerprints' in result"
|
||||
@@ -21,12 +21,12 @@
|
||||
- "'private_data' not in result"
|
||||
|
||||
- name: Get key 2 info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/privatekey_2.pem') | community.crypto.openssl_privatekey_info(return_private_key_data=true) }}
|
||||
|
||||
- name: Check that RSA key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'public_key' in result"
|
||||
- "'public_key_fingerprints' in result"
|
||||
@@ -41,26 +41,26 @@
|
||||
- "result.private_data.exponent > 5"
|
||||
|
||||
- name: Get key 3 info (without passphrase)
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result_: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/privatekey_3.pem') | community.crypto.openssl_privatekey_info(return_private_key_data=true) }}
|
||||
ignore_errors: true
|
||||
register: result
|
||||
|
||||
- name: Check that loading passphrase protected key without passphrase failed
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is failed
|
||||
- >-
|
||||
'Wrong or empty passphrase provided for private key' in result.msg
|
||||
|
||||
- name: Get key 3 info (with passphrase)
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/privatekey_3.pem') | community.crypto.openssl_privatekey_info(passphrase='hunter2', return_private_key_data=true) }}
|
||||
|
||||
- name: Check that RSA key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'public_key' in result"
|
||||
- "'public_key_fingerprints' in result"
|
||||
@@ -74,12 +74,12 @@
|
||||
- "result.private_data.exponent > 5"
|
||||
|
||||
- name: Get key 4 info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/privatekey_4.pem') | community.crypto.openssl_privatekey_info(return_private_key_data=true) }}
|
||||
|
||||
- name: Check that ECC key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'public_key' in result"
|
||||
- "'public_key_fingerprints' in result"
|
||||
@@ -94,12 +94,12 @@
|
||||
- "result.private_data.multiplier > 1024"
|
||||
|
||||
- name: Get key 5 info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/privatekey_5.pem') | community.crypto.openssl_privatekey_info(return_private_key_data=true) }}
|
||||
|
||||
- name: Check that DSA key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'public_key' in result"
|
||||
- "'public_key_fingerprints' in result"
|
||||
|
||||
@@ -9,34 +9,34 @@
|
||||
####################################################################
|
||||
|
||||
- name: Generate privatekey 1
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_1.pem'
|
||||
|
||||
- name: Generate privatekey 2 (less bits)
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_2.pem'
|
||||
type: RSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- name: Generate privatekey 3 (with password)
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_3.pem'
|
||||
passphrase: hunter2
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- name: Generate privatekey 4 (ECC)
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_4.pem'
|
||||
type: ECC
|
||||
curve: "{{ (ansible_distribution == 'CentOS' and ansible_distribution_major_version == '6') | ternary('secp521r1', 'secp256k1') }}"
|
||||
# ^ cryptography on CentOS6 doesn't support secp256k1, so we use secp521r1 instead
|
||||
|
||||
- name: Generate privatekey 5 (DSA)
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_5.pem'
|
||||
type: DSA
|
||||
size: 1024
|
||||
|
||||
- name: Running tests
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Get key 1 info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/publickey_1.pem') | community.crypto.openssl_publickey_info }}
|
||||
|
||||
- name: Check that RSA key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'fingerprints' in result"
|
||||
- "'type' in result"
|
||||
@@ -19,12 +19,12 @@
|
||||
- "result.public_data.exponent > 5"
|
||||
|
||||
- name: Get key 2 info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/publickey_2.pem') | community.crypto.openssl_publickey_info }}
|
||||
|
||||
- name: Check that RSA key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'fingerprints' in result"
|
||||
- "'type' in result"
|
||||
@@ -35,12 +35,12 @@
|
||||
- "result.public_data.exponent > 5"
|
||||
|
||||
- name: Get key 3 info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/publickey_3.pem') | community.crypto.openssl_publickey_info }}
|
||||
|
||||
- name: Check that ECC key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'fingerprints' in result"
|
||||
- "'type' in result"
|
||||
@@ -52,12 +52,12 @@
|
||||
- "result.public_data.exponent_size == (521 if (ansible_distribution == 'CentOS' and ansible_distribution_major_version == '6') else 256)"
|
||||
|
||||
- name: Get key 4 info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/publickey_4.pem') | community.crypto.openssl_publickey_info }}
|
||||
|
||||
- name: Check that DSA key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'fingerprints' in result"
|
||||
- "'type' in result"
|
||||
@@ -69,27 +69,27 @@
|
||||
- "result.public_data.y > 2"
|
||||
|
||||
- name: Get invalid key info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ [] | community.crypto.openssl_publickey_info }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("The community.crypto.openssl_publickey_info input must be a text type, not ")
|
||||
|
||||
- name: Get invalid key info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ 'foo' | community.crypto.openssl_publickey_info }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- 'output.msg is search("Error while deserializing key: ")'
|
||||
|
||||
@@ -9,17 +9,17 @@
|
||||
####################################################################
|
||||
|
||||
- name: Generate privatekey 1
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_1.pem'
|
||||
|
||||
- name: Generate privatekey 2 (less bits)
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_2.pem'
|
||||
type: RSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- name: Generate privatekey 3 (ECC)
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_3.pem'
|
||||
type: ECC
|
||||
curve: "{{ (ansible_distribution == 'CentOS' and ansible_distribution_major_version == '6') | ternary('secp521r1', 'secp256k1') }}"
|
||||
@@ -27,13 +27,13 @@
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
- name: Generate privatekey 4 (DSA)
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_4.pem'
|
||||
type: DSA
|
||||
size: 1024
|
||||
|
||||
- name: Generate public keys
|
||||
openssl_publickey:
|
||||
community.crypto.openssl_publickey:
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey_{{ item }}.pem'
|
||||
path: '{{ remote_tmp_dir }}/publickey_{{ item }}.pem'
|
||||
loop:
|
||||
@@ -43,5 +43,5 @@
|
||||
- 4
|
||||
|
||||
- name: Running tests
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Test parse_serial filter
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- >-
|
||||
'0' | community.crypto.parse_serial == 0
|
||||
@@ -22,35 +22,35 @@
|
||||
'1:2:3' | community.crypto.parse_serial == 66051
|
||||
|
||||
- name: "Test error 1: empty string"
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
msg: >-
|
||||
{{ '' | community.crypto.parse_serial }}
|
||||
ignore_errors: true
|
||||
register: error_1
|
||||
|
||||
- name: "Test error 2: invalid type"
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
msg: >-
|
||||
{{ [] | community.crypto.parse_serial }}
|
||||
ignore_errors: true
|
||||
register: error_2
|
||||
|
||||
- name: "Test error 3: invalid values (range)"
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
msg: >-
|
||||
{{ '100' | community.crypto.parse_serial }}
|
||||
ignore_errors: true
|
||||
register: error_3
|
||||
|
||||
- name: "Test error 4: invalid values (digits)"
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
msg: >-
|
||||
{{ 'abcdefg' | community.crypto.parse_serial }}
|
||||
ignore_errors: true
|
||||
register: error_4
|
||||
|
||||
- name: Validate errors
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- >-
|
||||
error_1 is failed and "The 1st part '' is not a hexadecimal number in range [0, 255]: invalid literal" in error_1.msg
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
####################################################################
|
||||
|
||||
- name: Run tests that raise no errors
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- >-
|
||||
'' | community.crypto.split_pem == []
|
||||
@@ -49,13 +49,13 @@
|
||||
AAb=
|
||||
|
||||
- name: Invalid input
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ [] | community.crypto.split_pem }}"
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Validate error
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("The community.crypto.split_pem input must be a text type, not ")
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Test to_serial filter
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- 0 | community.crypto.to_serial == '00'
|
||||
- 1 | community.crypto.to_serial == '01'
|
||||
@@ -13,21 +13,21 @@
|
||||
- 65536 | community.crypto.to_serial == '01:00:00'
|
||||
|
||||
- name: "Test error 1: negative number"
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
msg: >-
|
||||
{{ (-1) | community.crypto.to_serial }}
|
||||
ignore_errors: true
|
||||
register: error_1
|
||||
|
||||
- name: "Test error 2: invalid type"
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
msg: >-
|
||||
{{ [] | community.crypto.to_serial }}
|
||||
ignore_errors: true
|
||||
register: error_2
|
||||
|
||||
- name: Validate error
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- >-
|
||||
error_1 is failed and "The input for the community.crypto.to_serial filter must not be negative" in error_1.msg
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Get certificate info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/cert_1.pem') | community.crypto.x509_certificate_info }}
|
||||
result_idna: >-
|
||||
@@ -13,7 +13,7 @@
|
||||
{{ lookup('file', remote_tmp_dir ~ '/cert_1.pem') | community.crypto.x509_certificate_info(name_encoding='unicode') }}
|
||||
|
||||
- name: Check whether issuer and subject and extensions behave as expected
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.issuer.organizationalUnitName == 'ACME Department'
|
||||
- "['organizationalUnitName', 'Crypto Department'] in result.issuer_ordered"
|
||||
@@ -70,7 +70,7 @@
|
||||
- result.extensions_by_oid['2.5.29.37'].value == 'MHQGCCsGAQUFBwMBBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDBAYIKwYBBQUHAwgGCCsGAQUFBwMJBgRVHSUABggrBgEFBQcBAwYIKwYBBQUHAwoGCCsGAQUFBwMHBggrBgEFBQcBAg=='
|
||||
|
||||
- name: Check SubjectKeyIdentifier and AuthorityKeyIdentifier
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.subject_key_identifier == "00:11:22:33"
|
||||
- result.authority_key_identifier == "44:55:66:77"
|
||||
@@ -86,17 +86,17 @@
|
||||
- "IP:1.2.3.4"
|
||||
|
||||
- name: Get certificate info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/cert_2.pem') | community.crypto.x509_certificate_info }}
|
||||
|
||||
- name: Get certificate info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/cert_3.pem') | community.crypto.x509_certificate_info }}
|
||||
|
||||
- name: Check AuthorityKeyIdentifier
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.authority_key_identifier is none
|
||||
- result.authority_cert_issuer == expected_authority_cert_issuer
|
||||
@@ -107,23 +107,23 @@
|
||||
- "IP:1.2.3.4"
|
||||
|
||||
- name: Get certificate info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/cert_4.pem') | community.crypto.x509_certificate_info }}
|
||||
|
||||
- name: Check AuthorityKeyIdentifier
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.authority_key_identifier == "44:55:66:77"
|
||||
- result.authority_cert_issuer is none
|
||||
- result.authority_cert_serial_number is none
|
||||
|
||||
- name: Get certificate info for packaged cert 1
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ lookup('file', role_path ~ '/../x509_certificate_info/files/cert1.pem') | community.crypto.x509_certificate_info }}
|
||||
- name: Check extensions
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'ocsp_uri' in result"
|
||||
- "result.ocsp_uri == 'http://ocsp.foobarbaz.example.com'"
|
||||
@@ -160,59 +160,59 @@
|
||||
- result.extensions_by_oid['2.5.29.37'].critical == false
|
||||
- result.extensions_by_oid['2.5.29.37'].value == 'MBQGCCsGAQUFBwMBBggrBgEFBQcDAg=='
|
||||
- name: Check fingerprints
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- (result.fingerprints.sha256 == '08:26:60:3d:29:11:f2:88:09:3f:40:71:bb:67:cb:59:9c:6e:cf:e0:49:22:ab:e8:60:bd:f6:9a:01:e3:0e:2c' if result.fingerprints.sha256 is defined else true)
|
||||
- (result.fingerprints.sha1 == '5a:32:7f:22:61:f3:2e:ad:a7:d8:77:07:1c:7f:08:cd:ab:7f:bc:11' if result.fingerprints.sha1 is defined else true)
|
||||
|
||||
- name: Get invalid certificate info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ [] | community.crypto.x509_certificate_info }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("The community.crypto.x509_certificate_info input must be a text type, not ")
|
||||
|
||||
- name: Get invalid certificate info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ 'foo' | community.crypto.x509_certificate_info }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("Unable to load (?:certificate|PEM file)(?:\.|$)")
|
||||
|
||||
- name: Get invalid certificate info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ 'foo' | community.crypto.x509_certificate_info(name_encoding=[]) }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("The name_encoding option must be of a text type, not ")
|
||||
|
||||
- name: Get invalid name_encoding parameter
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ 'bar' | community.crypto.x509_certificate_info(name_encoding='foo') }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("The name_encoding option must be one of the values \"ignore\", \"idna\", or \"unicode\", not \"foo\"$")
|
||||
|
||||
@@ -9,24 +9,24 @@
|
||||
####################################################################
|
||||
|
||||
- name: Make sure the Python idna library is installed
|
||||
pip:
|
||||
ansible.builtin.pip:
|
||||
name: idna
|
||||
state: present
|
||||
|
||||
- name: Generate privatekey
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
size: '{{ default_rsa_key_size_certificates }}'
|
||||
|
||||
- name: Generate privatekey with password
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
passphrase: hunter2
|
||||
select_crypto_backend: cryptography
|
||||
size: '{{ default_rsa_key_size_certificates }}'
|
||||
|
||||
- name: Generate CSR 1
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_1.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -96,7 +96,7 @@
|
||||
- "IP:1.2.3.4"
|
||||
|
||||
- name: Generate CSR 2
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_2.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
privatekey_passphrase: hunter2
|
||||
@@ -105,7 +105,7 @@
|
||||
- "CA:TRUE"
|
||||
|
||||
- name: Generate CSR 3
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_3.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
useCommonNameForSAN: false
|
||||
@@ -123,14 +123,14 @@
|
||||
- "IP:1.2.3.4"
|
||||
|
||||
- name: Generate CSR 4
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_4.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
useCommonNameForSAN: false
|
||||
authority_key_identifier: "44:55:66:77"
|
||||
|
||||
- name: Generate selfsigned certificates
|
||||
x509_certificate:
|
||||
community.crypto.x509_certificate:
|
||||
path: '{{ remote_tmp_dir }}/cert_{{ item }}.pem'
|
||||
csr_path: '{{ remote_tmp_dir }}/csr_{{ item }}.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
@@ -145,5 +145,5 @@
|
||||
- 4
|
||||
|
||||
- name: Running tests
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Create CRL 1
|
||||
x509_crl:
|
||||
community.crypto.x509_crl:
|
||||
path: '{{ remote_tmp_dir }}/ca-crl1.crl'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/ca.key'
|
||||
issuer:
|
||||
@@ -23,17 +23,17 @@
|
||||
revocation_date: 20191001000000Z
|
||||
|
||||
- name: Retrieve CRL 1 infos
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
crl_1_info_1: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/ca-crl1.crl') | community.crypto.x509_crl_info }}
|
||||
|
||||
- name: Retrieve CRL 1 infos
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
crl_1_info_2: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/ca-crl1.crl') | b64encode | community.crypto.x509_crl_info }}
|
||||
|
||||
- name: Validate CRL 1 info
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- crl_1_info_1.format == 'pem'
|
||||
- crl_1_info_1.digest == 'ecdsa-with-SHA256'
|
||||
@@ -70,7 +70,7 @@
|
||||
- crl_1_info_1 == crl_1_info_2
|
||||
|
||||
- name: Recreate CRL 1 as DER file
|
||||
x509_crl:
|
||||
community.crypto.x509_crl:
|
||||
path: '{{ remote_tmp_dir }}/ca-crl1.crl'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/ca.key'
|
||||
format: der
|
||||
@@ -90,22 +90,22 @@
|
||||
revocation_date: 20191001000000Z
|
||||
|
||||
- name: Read ca-crl1.crl
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ remote_tmp_dir }}/ca-crl1.crl"
|
||||
register: content
|
||||
|
||||
- name: Retrieve CRL 1 infos from DER (Base64 encoded)
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
crl_1_info_5: >-
|
||||
{{ content.content | community.crypto.x509_crl_info }}
|
||||
|
||||
- name: Validate CRL 1
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- crl_1_info_5.format == 'der'
|
||||
|
||||
- name: Create CRL 2
|
||||
x509_crl:
|
||||
community.crypto.x509_crl:
|
||||
path: '{{ remote_tmp_dir }}/ca-crl2.crl'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/ca.key'
|
||||
issuer_ordered:
|
||||
@@ -126,12 +126,12 @@
|
||||
register: crl_2_change
|
||||
|
||||
- name: Retrieve CRL 2 infos
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
crl_2_info_1: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/ca-crl2.crl') | community.crypto.x509_crl_info(list_revoked_certificates=false) }}
|
||||
|
||||
- name: Create CRL 2 (changed order)
|
||||
x509_crl:
|
||||
community.crypto.x509_crl:
|
||||
path: '{{ remote_tmp_dir }}/ca-crl2.crl'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/ca.key'
|
||||
issuer_ordered:
|
||||
@@ -152,12 +152,12 @@
|
||||
register: crl_2_change_order
|
||||
|
||||
- name: Retrieve CRL 2 infos again
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
crl_2_info_2: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/ca-crl2.crl') | community.crypto.x509_crl_info(list_revoked_certificates=false) }}
|
||||
|
||||
- name: Validate CRL 2 info
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'revoked_certificates' not in crl_2_info_1"
|
||||
- >
|
||||
@@ -176,7 +176,7 @@
|
||||
]
|
||||
|
||||
- name: Create CRL 3
|
||||
x509_crl:
|
||||
community.crypto.x509_crl:
|
||||
path: '{{ remote_tmp_dir }}/ca-crl3.crl'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/ca.key'
|
||||
issuer:
|
||||
@@ -199,7 +199,7 @@
|
||||
register: crl_3
|
||||
|
||||
- name: Create CRL 3 (IDNA encoding)
|
||||
x509_crl:
|
||||
community.crypto.x509_crl:
|
||||
path: '{{ remote_tmp_dir }}/ca-crl3.crl'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/ca.key'
|
||||
issuer:
|
||||
@@ -224,7 +224,7 @@
|
||||
register: crl_3_idna
|
||||
|
||||
- name: Create CRL 3 (Unicode encoding)
|
||||
x509_crl:
|
||||
community.crypto.x509_crl:
|
||||
path: '{{ remote_tmp_dir }}/ca-crl3.crl'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/ca.key'
|
||||
issuer:
|
||||
@@ -249,7 +249,7 @@
|
||||
register: crl_3_unicode
|
||||
|
||||
- name: Retrieve CRL 3 infos
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
crl_3_info: >-
|
||||
{{ lookup('file', remote_tmp_dir ~ '/ca-crl3.crl') | community.crypto.x509_crl_info(list_revoked_certificates=true) }}
|
||||
crl_3_info_idna: >-
|
||||
@@ -258,73 +258,73 @@
|
||||
{{ lookup('file', remote_tmp_dir ~ '/ca-crl3.crl') | community.crypto.x509_crl_info(list_revoked_certificates=true, name_encoding='unicode') }}
|
||||
|
||||
- name: Validate CRL 3 info
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- crl_3.revoked_certificates == crl_3_info.revoked_certificates
|
||||
- crl_3_idna.revoked_certificates == crl_3_info_idna.revoked_certificates
|
||||
- crl_3_unicode.revoked_certificates == crl_3_info_unicode.revoked_certificates
|
||||
|
||||
- name: Get invalid CRL info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ [] | community.crypto.x509_crl_info }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("The community.crypto.x509_crl_info input must be a text type, not ")
|
||||
|
||||
- name: Get invalid CRL info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ 'foo' | community.crypto.x509_crl_info }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("Error while decoding CRL")
|
||||
|
||||
- name: Get invalid CRL info
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ 'foo' | community.crypto.x509_crl_info(name_encoding=[]) }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("The name_encoding option must be of a text type, not ")
|
||||
|
||||
- name: Get invalid name_encoding parameter
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ 'bar' | community.crypto.x509_crl_info(name_encoding='foo') }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("The name_encoding option must be one of the values \"ignore\", \"idna\", or \"unicode\", not \"foo\"$")
|
||||
|
||||
- name: Get invalid list_revoked_certificates parameter
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
result: >-
|
||||
{{ 'bar' | community.crypto.x509_crl_info(list_revoked_certificates=[]) }}
|
||||
ignore_errors: true
|
||||
register: output
|
||||
|
||||
- name: Check that task failed and error message is OK
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output is failed
|
||||
- output.msg is search("The list_revoked_certificates option must be a boolean, not ")
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
####################################################################
|
||||
|
||||
- name: Make sure the Python idna library is installed
|
||||
pip:
|
||||
ansible.builtin.pip:
|
||||
name: idna
|
||||
state: present
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
certificates:
|
||||
- name: ca
|
||||
subject:
|
||||
@@ -39,14 +39,14 @@
|
||||
- DNS:b64.ansible.com
|
||||
|
||||
- name: Generate private keys
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/{{ item.name }}.key'
|
||||
type: ECC
|
||||
curve: secp256r1
|
||||
loop: "{{ certificates }}"
|
||||
|
||||
- name: Generate CSRs
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/{{ item.name }}.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/{{ item.name }}.key'
|
||||
subject: "{{ item.subject | default(omit) }}"
|
||||
@@ -56,7 +56,7 @@
|
||||
loop: "{{ certificates }}"
|
||||
|
||||
- name: Generate CA certificates
|
||||
x509_certificate:
|
||||
community.crypto.x509_certificate:
|
||||
path: '{{ remote_tmp_dir }}/{{ item.name }}.pem'
|
||||
csr_path: '{{ remote_tmp_dir }}/{{ item.name }}.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/{{ item.name }}.key'
|
||||
@@ -65,7 +65,7 @@
|
||||
when: item.is_ca | default(false)
|
||||
|
||||
- name: Generate other certificates
|
||||
x509_certificate:
|
||||
community.crypto.x509_certificate:
|
||||
path: '{{ remote_tmp_dir }}/{{ item.name }}.pem'
|
||||
csr_path: '{{ remote_tmp_dir }}/{{ item.name }}.csr'
|
||||
provider: ownca
|
||||
@@ -75,7 +75,7 @@
|
||||
when: not (item.is_ca | default(false))
|
||||
|
||||
- name: Get certificate infos
|
||||
x509_certificate_info:
|
||||
community.crypto.x509_certificate_info:
|
||||
path: '{{ remote_tmp_dir }}/{{ item }}.pem'
|
||||
loop:
|
||||
- cert-1
|
||||
@@ -86,6 +86,6 @@
|
||||
|
||||
- block:
|
||||
- name: Running tests
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
# and should not be used as examples of how to write Ansible roles #
|
||||
####################################################################
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
skip_tests: false
|
||||
has_get_certificate_chain: >-
|
||||
{{ ansible_facts.python_version is version('3.10.0', '>=') }}
|
||||
@@ -16,14 +16,14 @@
|
||||
- block:
|
||||
|
||||
- name: Get servers certificate with backend auto-detection
|
||||
get_certificate:
|
||||
community.crypto.get_certificate:
|
||||
host: "{{ httpbin_host }}"
|
||||
port: 443
|
||||
asn1_base64: "{{ true if ansible_version.full is version('2.18', '>=') else omit }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
skip_tests: |
|
||||
{{
|
||||
result is failed and (
|
||||
@@ -33,7 +33,7 @@
|
||||
)
|
||||
}}
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result is success or skip_tests
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
- block:
|
||||
|
||||
- include_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.include_tasks: ../tests/validate.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
|
||||
@@ -4,16 +4,16 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Get servers certificate for SNI test part 1
|
||||
get_certificate:
|
||||
community.crypto.get_certificate:
|
||||
host: "{{ httpbin_host }}"
|
||||
port: 443
|
||||
server_name: "{{ sni_host }}"
|
||||
asn1_base64: true
|
||||
register: result
|
||||
|
||||
- debug: var=result
|
||||
- ansible.builtin.debug: var=result
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
# This module should never change anything
|
||||
- result is not changed
|
||||
@@ -22,16 +22,16 @@
|
||||
- "'{{ sni_host }}' == result.subject.CN"
|
||||
|
||||
- name: Get servers certificate for SNI test part 2
|
||||
get_certificate:
|
||||
community.crypto.get_certificate:
|
||||
host: "{{ sni_host }}"
|
||||
port: 443
|
||||
server_name: "{{ httpbin_host }}"
|
||||
asn1_base64: true
|
||||
register: result
|
||||
|
||||
- debug: var=result
|
||||
- ansible.builtin.debug: var=result
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
# This module should never change anything
|
||||
- result is not changed
|
||||
@@ -40,16 +40,16 @@
|
||||
- "'{{ httpbin_host }}' == result.subject.CN"
|
||||
|
||||
- name: Get servers certificate
|
||||
get_certificate:
|
||||
community.crypto.get_certificate:
|
||||
host: "{{ httpbin_host }}"
|
||||
port: 443
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
asn1_base64: true
|
||||
register: result
|
||||
|
||||
- debug: var=result
|
||||
- ansible.builtin.debug: var=result
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
# This module should never change anything
|
||||
- result is not changed
|
||||
@@ -58,7 +58,7 @@
|
||||
- "'North Carolina' == result.subject.ST"
|
||||
|
||||
- name: Connect to http port (will fail because there is no SSL cert to get)
|
||||
get_certificate:
|
||||
community.crypto.get_certificate:
|
||||
host: "{{ httpbin_host }}"
|
||||
port: 80
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
@@ -66,7 +66,7 @@
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result is failed
|
||||
@@ -78,7 +78,7 @@
|
||||
or 'record layer failure' in result.msg
|
||||
|
||||
- name: Test timeout option
|
||||
get_certificate:
|
||||
community.crypto.get_certificate:
|
||||
host: "{{ httpbin_host }}"
|
||||
port: 1234
|
||||
timeout: 1
|
||||
@@ -87,7 +87,7 @@
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result is failed
|
||||
@@ -95,7 +95,7 @@
|
||||
- "'Failed to get cert from port with error: timed out' == result.msg or 'Connection refused' in result.msg"
|
||||
|
||||
- name: Test failure if ca_cert is not a valid file
|
||||
get_certificate:
|
||||
community.crypto.get_certificate:
|
||||
host: "{{ httpbin_host }}"
|
||||
port: 443
|
||||
ca_cert: dn.e
|
||||
@@ -104,7 +104,7 @@
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result is failed
|
||||
@@ -112,12 +112,12 @@
|
||||
- "'ca_cert file does not exist' == result.msg"
|
||||
|
||||
- name: Download CA Cert as pem from server
|
||||
get_url:
|
||||
ansible.builtin.get_url:
|
||||
url: "http://ansible.http.tests/cacert.pem"
|
||||
dest: "{{ remote_tmp_dir }}/temp.pem"
|
||||
|
||||
- name: Get servers certificate comparing it to its own ca_cert file
|
||||
get_certificate:
|
||||
community.crypto.get_certificate:
|
||||
ca_cert: '{{ remote_tmp_dir }}/temp.pem'
|
||||
host: "{{ httpbin_host }}"
|
||||
port: 443
|
||||
@@ -126,19 +126,19 @@
|
||||
get_certificate_chain: "{{ has_get_certificate_chain }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result is not failed
|
||||
|
||||
- name: Read CA cert
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/temp.pem'
|
||||
register: cacert
|
||||
when: has_get_certificate_chain
|
||||
|
||||
- name: Validate get_certificate_chain=true results
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.verified_chain is sequence
|
||||
- result.unverified_chain is sequence
|
||||
@@ -149,20 +149,20 @@
|
||||
when: has_get_certificate_chain
|
||||
|
||||
- name: Validate get_certificate_chain=false results
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.verified_chain is undefined
|
||||
- result.unverified_chain is undefined
|
||||
when: not has_get_certificate_chain
|
||||
|
||||
- name: Generate bogus CA privatekey
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/bogus_ca.key'
|
||||
type: ECC
|
||||
curve: secp256r1
|
||||
|
||||
- name: Generate bogus CA CSR
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/bogus_ca.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/bogus_ca.key'
|
||||
subject:
|
||||
@@ -173,7 +173,7 @@
|
||||
basic_constraints_critical: true
|
||||
|
||||
- name: Generate selfsigned bogus CA certificate
|
||||
x509_certificate:
|
||||
community.crypto.x509_certificate:
|
||||
path: '{{ remote_tmp_dir }}/bogus_ca.pem'
|
||||
csr_path: '{{ remote_tmp_dir }}/bogus_ca.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/bogus_ca.key'
|
||||
@@ -181,7 +181,7 @@
|
||||
selfsigned_digest: sha256
|
||||
|
||||
- name: Get servers certificate comparing it to an invalid ca_cert file
|
||||
get_certificate:
|
||||
community.crypto.get_certificate:
|
||||
ca_cert: '{{ remote_tmp_dir }}/bogus_ca.pem'
|
||||
host: "{{ httpbin_host }}"
|
||||
port: 443
|
||||
@@ -190,7 +190,7 @@
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result is not changed
|
||||
- result is failed
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
####################################################################
|
||||
|
||||
- name: Copy keyfiles
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
src: '{{ item }}'
|
||||
dest: '{{ remote_tmp_dir }}/{{ item }}'
|
||||
loop:
|
||||
@@ -17,7 +17,7 @@
|
||||
- keyfile2
|
||||
|
||||
- name: Include OS-specific variables
|
||||
include_vars: '{{ lookup("first_found", search) }}'
|
||||
ansible.builtin.include_vars: '{{ lookup("first_found", search) }}'
|
||||
vars:
|
||||
search:
|
||||
files:
|
||||
@@ -30,62 +30,62 @@
|
||||
- vars
|
||||
|
||||
- name: Make sure cryptsetup is installed
|
||||
package:
|
||||
ansible.builtin.package:
|
||||
name: '{{ cryptsetup_package }}'
|
||||
state: present
|
||||
become: true
|
||||
|
||||
- name: Install additionally required packages
|
||||
package:
|
||||
ansible.builtin.package:
|
||||
name: '{{ luks_extra_packages }}'
|
||||
state: present
|
||||
become: true
|
||||
when: luks_extra_packages | length > 0
|
||||
|
||||
- name: Determine cryptsetup version
|
||||
command: cryptsetup --version
|
||||
ansible.builtin.command: cryptsetup --version
|
||||
register: cryptsetup_version
|
||||
|
||||
- name: Extract cryptsetup version
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cryptsetup_version: >-
|
||||
{{ cryptsetup_version.stdout_lines[0] | regex_search('cryptsetup ([0-9]+\.[0-9]+\.[0-9]+)') | split | last }}
|
||||
|
||||
- name: Create cryptfile
|
||||
command: dd if=/dev/zero of={{ remote_tmp_dir.replace('~', ansible_env.HOME) }}/cryptfile bs=1M count=32
|
||||
ansible.builtin.command: dd if=/dev/zero of={{ remote_tmp_dir.replace('~', ansible_env.HOME) }}/cryptfile bs=1M count=32
|
||||
|
||||
- name: Figure out next loopback device
|
||||
command: losetup -f
|
||||
ansible.builtin.command: losetup -f
|
||||
become: true
|
||||
register: cryptfile_device_output
|
||||
|
||||
- name: Create lookback device
|
||||
command: losetup -f {{ remote_tmp_dir.replace('~', ansible_env.HOME) }}/cryptfile
|
||||
ansible.builtin.command: losetup -f {{ remote_tmp_dir.replace('~', ansible_env.HOME) }}/cryptfile
|
||||
become: true
|
||||
|
||||
- name: Store some common data for tests
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cryptfile_device: "{{ cryptfile_device_output.stdout_lines[0] }}"
|
||||
cryptfile_passphrase1: "uNiJ9vKG2mUOEWDiQVuBHJlfMHE"
|
||||
cryptfile_passphrase2: "HW4Ak2HtE2vvne0qjJMPTtmbV4M"
|
||||
cryptfile_passphrase3: "qQJqsjabO9pItV792k90VvX84MM"
|
||||
|
||||
- block:
|
||||
- include_tasks: run-test.yml
|
||||
- ansible.builtin.include_tasks: run-test.yml
|
||||
with_fileglob:
|
||||
- "tests/*.yml"
|
||||
|
||||
always:
|
||||
- name: Make sure LUKS device is gone
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: absent
|
||||
become: true
|
||||
ignore_errors: true
|
||||
|
||||
- command: losetup -d "{{ cryptfile_device }}"
|
||||
- ansible.builtin.command: losetup -d "{{ cryptfile_device }}"
|
||||
become: true
|
||||
|
||||
- file:
|
||||
- ansible.builtin.file:
|
||||
dest: "{{ remote_tmp_dir.replace('~', ansible_env.HOME) }}/cryptfile"
|
||||
state: absent
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Make sure LUKS device is gone
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: absent
|
||||
become: true
|
||||
- name: "Loading tasks from {{ item }}"
|
||||
include_tasks: "{{ item }}"
|
||||
ansible.builtin.include_tasks: "{{ item }}"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Create (check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -14,7 +14,7 @@
|
||||
become: true
|
||||
register: create_check
|
||||
- name: Create
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -23,7 +23,7 @@
|
||||
become: true
|
||||
register: create
|
||||
- name: Create (idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -32,7 +32,7 @@
|
||||
become: true
|
||||
register: create_idem
|
||||
- name: Create (idempotent, check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -41,7 +41,7 @@
|
||||
check_mode: true
|
||||
become: true
|
||||
register: create_idem_check
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- create_check is changed
|
||||
- create is changed
|
||||
@@ -49,7 +49,7 @@
|
||||
- create_idem_check is not changed
|
||||
|
||||
- name: Open (check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -57,28 +57,28 @@
|
||||
become: true
|
||||
register: open_check
|
||||
- name: Open
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
become: true
|
||||
register: open
|
||||
- name: Open (idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
become: true
|
||||
register: open_idem
|
||||
- name: Open (idempotent, check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
check_mode: true
|
||||
become: true
|
||||
register: open_idem_check
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_check is changed
|
||||
- open is changed
|
||||
@@ -86,32 +86,32 @@
|
||||
- open_idem_check is not changed
|
||||
|
||||
- name: Closed (via name, check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
name: "{{ open.name }}"
|
||||
state: closed
|
||||
check_mode: true
|
||||
become: true
|
||||
register: close_check
|
||||
- name: Closed (via name)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
name: "{{ open.name }}"
|
||||
state: closed
|
||||
become: true
|
||||
register: close
|
||||
- name: Closed (via name, idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
name: "{{ open.name }}"
|
||||
state: closed
|
||||
become: true
|
||||
register: close_idem
|
||||
- name: Closed (via name, idempotent, check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
name: "{{ open.name }}"
|
||||
state: closed
|
||||
check_mode: true
|
||||
become: true
|
||||
register: close_idem_check
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- close_check is changed
|
||||
- close is changed
|
||||
@@ -119,39 +119,39 @@
|
||||
- close_idem_check is not changed
|
||||
|
||||
- name: Re-open
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
become: true
|
||||
|
||||
- name: Closed (via device, check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
check_mode: true
|
||||
become: true
|
||||
register: close_check
|
||||
- name: Closed (via device)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
become: true
|
||||
register: close
|
||||
- name: Closed (via device, idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
become: true
|
||||
register: close_idem
|
||||
- name: Closed (via device, idempotent, check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
check_mode: true
|
||||
become: true
|
||||
register: close_idem_check
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- close_check is changed
|
||||
- close is changed
|
||||
@@ -159,39 +159,39 @@
|
||||
- close_idem_check is not changed
|
||||
|
||||
- name: Re-opened
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
become: true
|
||||
|
||||
- name: Absent (check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: absent
|
||||
check_mode: true
|
||||
become: true
|
||||
register: absent_check
|
||||
- name: Absent
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: absent
|
||||
become: true
|
||||
register: absent
|
||||
- name: Absent (idempotence)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: absent
|
||||
become: true
|
||||
register: absent_idem
|
||||
- name: Absent (idempotence, check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: absent
|
||||
check_mode: true
|
||||
become: true
|
||||
register: absent_idem_check
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- absent_check is changed
|
||||
- absent is changed
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Fix name
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
cryptname: "crypt{{ '%0x' % ((2**32) | random) }}"
|
||||
|
||||
- name: Create
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
name: "{{ cryptname }}"
|
||||
state: present
|
||||
@@ -18,7 +18,7 @@
|
||||
become: true
|
||||
register: create
|
||||
- name: Open
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
name: "{{ cryptname }}"
|
||||
state: opened
|
||||
@@ -26,7 +26,7 @@
|
||||
become: true
|
||||
register: open
|
||||
- name: Open (idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
name: "{{ cryptname }}"
|
||||
state: opened
|
||||
@@ -34,25 +34,25 @@
|
||||
become: true
|
||||
register: open_idem
|
||||
- name: Closed (via name)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
name: "{{ cryptname }}"
|
||||
state: closed
|
||||
become: true
|
||||
register: close
|
||||
- name: Closed (via name, idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
name: "{{ cryptname }}"
|
||||
state: closed
|
||||
become: true
|
||||
register: close_idem
|
||||
- name: Absent
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
name: "{{ cryptname }}"
|
||||
state: absent
|
||||
become: true
|
||||
register: absent
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- create is changed
|
||||
- open is changed
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Create with invalid device name (check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: /dev/asdfasdfasdf
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -15,7 +15,7 @@
|
||||
become: true
|
||||
register: create_check
|
||||
- name: Create with invalid device name
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: /dev/asdfasdfasdf
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -24,7 +24,7 @@
|
||||
ignore_errors: true
|
||||
become: true
|
||||
register: create
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- create_check is failed
|
||||
- create is failed
|
||||
@@ -32,7 +32,7 @@
|
||||
- "'o such file or directory' in create.msg"
|
||||
|
||||
- name: Create with something which is not a device (check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: /tmp/
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -43,7 +43,7 @@
|
||||
become: true
|
||||
register: create_check
|
||||
- name: Create with something which is not a device
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: /tmp/
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -52,7 +52,7 @@
|
||||
ignore_errors: true
|
||||
become: true
|
||||
register: create
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- create_check is failed
|
||||
- create is failed
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Create with keyfile1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -15,36 +15,36 @@
|
||||
# Access: keyfile1
|
||||
|
||||
- name: Try to open with keyfile1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is not failed
|
||||
- name: Close
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
become: true
|
||||
|
||||
- name: Try to open with keyfile2
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile2"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is failed
|
||||
|
||||
- name: Give access to keyfile2
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -55,7 +55,7 @@
|
||||
register: result_1
|
||||
|
||||
- name: Give access to keyfile2 (idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -63,7 +63,7 @@
|
||||
become: true
|
||||
register: result_2
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result_1 is changed
|
||||
- result_2 is not changed
|
||||
@@ -71,28 +71,28 @@
|
||||
# Access: keyfile1 and keyfile2
|
||||
|
||||
- name: Try to open with keyfile2
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile2"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is not failed
|
||||
- name: Close
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
become: true
|
||||
|
||||
- name: Dump LUKS header
|
||||
command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
ansible.builtin.command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
become: true
|
||||
|
||||
- name: Remove access from keyfile1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -101,7 +101,7 @@
|
||||
register: result_1
|
||||
|
||||
- name: Remove access from keyfile1 (idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -109,7 +109,7 @@
|
||||
become: true
|
||||
register: result_2
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result_1 is changed
|
||||
- result_2 is not changed
|
||||
@@ -117,40 +117,40 @@
|
||||
# Access: keyfile2
|
||||
|
||||
- name: Try to open with keyfile1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is failed
|
||||
|
||||
- name: Try to open with keyfile2
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile2"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is not failed
|
||||
- name: Close
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
become: true
|
||||
|
||||
- name: Dump LUKS header
|
||||
command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
ansible.builtin.command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
become: true
|
||||
|
||||
- name: Remove access from keyfile2
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile2"
|
||||
@@ -158,7 +158,7 @@
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: remove_last_key
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- remove_last_key is failed
|
||||
- "'force_remove_last_key' in remove_last_key.msg"
|
||||
@@ -166,24 +166,24 @@
|
||||
# Access: keyfile2
|
||||
|
||||
- name: Try to open with keyfile2
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile2"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is not failed
|
||||
- name: Close
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
become: true
|
||||
|
||||
- name: Remove access from keyfile2
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile2"
|
||||
@@ -194,13 +194,13 @@
|
||||
# Access: none
|
||||
|
||||
- name: Try to open with keyfile2
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile2"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is failed
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Create with keyfile3
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
passphrase: "{{ keyfile3 }}"
|
||||
@@ -21,7 +21,7 @@
|
||||
register: create_passphrase_1
|
||||
|
||||
- name: Create with keyfile3 (without argon2i)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
passphrase: "{{ keyfile3 }}"
|
||||
@@ -32,7 +32,7 @@
|
||||
when: create_passphrase_1 is failed
|
||||
|
||||
- name: Open with keyfile3
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
passphrase: "{{ keyfile3 }}"
|
||||
@@ -40,29 +40,29 @@
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is not failed
|
||||
- name: Close
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
become: true
|
||||
|
||||
- name: Try to open with passphrase1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
passphrase: "{{ cryptfile_passphrase1 }}"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is failed
|
||||
|
||||
- name: Give access to passphrase1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
passphrase: "{{ keyfile3 }}"
|
||||
@@ -73,7 +73,7 @@
|
||||
become: true
|
||||
|
||||
- name: Remove access for keyfile3
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
remove_passphrase: "{{ keyfile3 }}"
|
||||
@@ -81,25 +81,25 @@
|
||||
become: true
|
||||
|
||||
- name: Try to open with keyfile3
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
passphrase: "{{ keyfile3 }}"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is failed
|
||||
|
||||
- name: Open with passphrase1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
passphrase: "{{ cryptfile_passphrase1 }}"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is not failed
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Create luks with keyslot 4 (check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -15,7 +15,7 @@
|
||||
become: true
|
||||
register: create_luks_slot4_check
|
||||
- name: Create luks with keyslot 4
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -25,7 +25,7 @@
|
||||
become: true
|
||||
register: create_luks_slot4
|
||||
- name: Create luks with keyslot 4 (idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -35,7 +35,7 @@
|
||||
become: true
|
||||
register: create_luks_slot4_idem
|
||||
- name: Create luks with keyslot 4 (idempotent, check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -46,10 +46,10 @@
|
||||
become: true
|
||||
register: create_luks_slot4_idem_check
|
||||
- name: Dump luks header
|
||||
command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
ansible.builtin.command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
become: true
|
||||
register: luks_header_slot4
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- create_luks_slot4_check is changed
|
||||
- create_luks_slot4 is changed
|
||||
@@ -58,7 +58,7 @@
|
||||
- "'Key Slot 4: ENABLED' in luks_header_slot4.stdout or '4: luks2' in luks_header_slot4.stdout"
|
||||
|
||||
- name: Add key in slot 2 (check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -70,7 +70,7 @@
|
||||
become: true
|
||||
register: add_luks_slot2_check
|
||||
- name: Add key in slot 2
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -81,7 +81,7 @@
|
||||
become: true
|
||||
register: add_luks_slot2
|
||||
- name: Add key in slot 2 (idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -92,7 +92,7 @@
|
||||
become: true
|
||||
register: add_luks_slot2_idem
|
||||
- name: Add key in slot 2 (idempotent, check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -104,10 +104,10 @@
|
||||
become: true
|
||||
register: add_luks_slot2_idem_check
|
||||
- name: Dump luks header
|
||||
command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
ansible.builtin.command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
become: true
|
||||
register: luks_header_slot2
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- add_luks_slot2_check is changed
|
||||
- add_luks_slot2 is changed
|
||||
@@ -116,27 +116,27 @@
|
||||
- "'Key Slot 2: ENABLED' in luks_header_slot2.stdout or '2: luks2' in luks_header_slot2.stdout"
|
||||
|
||||
- name: Check remove slot 4 without key
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
remove_keyslot: 4
|
||||
ignore_errors: true
|
||||
become: true
|
||||
register: kill_slot4_nokey
|
||||
- name: Check remove slot 4 with slot 4 key
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
remove_keyslot: 4
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
ignore_errors: true
|
||||
become: true
|
||||
register: kill_slot4_key_slot4
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- kill_slot4_nokey is failed
|
||||
- kill_slot4_key_slot4 is failed
|
||||
|
||||
- name: Remove key in slot 4 (check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile2"
|
||||
remove_keyslot: 4
|
||||
@@ -144,21 +144,21 @@
|
||||
become: true
|
||||
register: kill_luks_slot4_check
|
||||
- name: Remove key in slot 4
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile2"
|
||||
remove_keyslot: 4
|
||||
become: true
|
||||
register: kill_luks_slot4
|
||||
- name: Remove key in slot 4 (idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile2"
|
||||
remove_keyslot: 4
|
||||
become: true
|
||||
register: kill_luks_slot4_idem
|
||||
- name: Remove key in slot 4 (idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile2"
|
||||
remove_keyslot: 4
|
||||
@@ -166,10 +166,10 @@
|
||||
become: true
|
||||
register: kill_luks_slot4_idem_check
|
||||
- name: Dump luks header
|
||||
command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
ansible.builtin.command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
become: true
|
||||
register: luks_header_slot4_removed
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- kill_luks_slot4_check is changed
|
||||
- kill_luks_slot4 is changed
|
||||
@@ -178,7 +178,7 @@
|
||||
- "'Key Slot 4: DISABLED' in luks_header_slot4_removed.stdout or not '4: luks' in luks_header_slot4_removed.stdout"
|
||||
|
||||
- name: Add key in slot 0
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile2"
|
||||
@@ -189,17 +189,17 @@
|
||||
become: true
|
||||
register: add_luks_slot0
|
||||
- name: Remove key in slot 0
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile2"
|
||||
remove_keyslot: 0
|
||||
become: true
|
||||
register: kill_luks_slot0
|
||||
- name: Dump luks header
|
||||
command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
ansible.builtin.command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
become: true
|
||||
register: luks_header_slot0_removed
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- add_luks_slot0 is changed
|
||||
- kill_luks_slot0 is changed
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Create new luks
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -12,7 +12,7 @@
|
||||
iteration_time: 0.1
|
||||
become: true
|
||||
- name: Add new keyslot with same keyfile (check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
new_keyslot: 1
|
||||
@@ -23,7 +23,7 @@
|
||||
check_mode: true
|
||||
register: keyslot_duplicate_check
|
||||
- name: Add new keyslot with same keyfile
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
new_keyslot: 1
|
||||
@@ -32,7 +32,7 @@
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: keyslot_duplicate
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- keyslot_duplicate_check is failed
|
||||
- "'Trying to add key that is already present in another slot' in keyslot_duplicate_check.msg"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Check invalid slot (luks1, 8)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
type: luks1
|
||||
@@ -16,7 +16,7 @@
|
||||
become: true
|
||||
register: create_luks1_slot8
|
||||
- name: Check invalid slot (luks2, 32)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
type: luks2
|
||||
@@ -28,7 +28,7 @@
|
||||
become: true
|
||||
register: create_luks2_slot32
|
||||
- name: Check invalid slot (no luks type, 8)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -38,14 +38,14 @@
|
||||
ignore_errors: true
|
||||
become: true
|
||||
register: create_luks_slot8
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- create_luks1_slot8 is failed
|
||||
- create_luks2_slot32 is failed
|
||||
- create_luks_slot8 is failed
|
||||
|
||||
- name: Check valid slot (luks2, 8)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
type: luks2
|
||||
@@ -57,12 +57,12 @@
|
||||
ignore_errors: true
|
||||
register: create_luks2_slot8
|
||||
- name: Make sure that the previous task only fails if LUKS2 is not supported
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'Unknown option --type' in create_luks2_slot8.msg"
|
||||
when: create_luks2_slot8 is failed
|
||||
- name: Check add valid slot (no luks type, 10)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -73,7 +73,7 @@
|
||||
become: true
|
||||
register: create_luks_slot10
|
||||
when: create_luks2_slot8 is changed
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- create_luks_slot10 is changed
|
||||
when: create_luks2_slot8 is changed
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Create with keysize
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -15,7 +15,7 @@
|
||||
become: true
|
||||
register: create_with_keysize
|
||||
- name: Create with keysize (idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -26,7 +26,7 @@
|
||||
become: true
|
||||
register: create_idem_with_keysize
|
||||
- name: Create with different keysize (idempotent since we do not update keysize)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -37,7 +37,7 @@
|
||||
become: true
|
||||
register: create_idem_with_diff_keysize
|
||||
- name: Create with ambiguous arguments
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -49,7 +49,7 @@
|
||||
become: true
|
||||
register: create_with_ambiguous
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- create_with_keysize is changed
|
||||
- create_idem_with_keysize is not changed
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Create with passphrase1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
passphrase: "{{ cryptfile_passphrase1 }}"
|
||||
@@ -20,13 +20,13 @@
|
||||
register: create_passphrase_1
|
||||
|
||||
- name: Make sure that the previous task only fails if LUKS2 is not supported
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'Unknown option --type' in create_passphrase_1.msg"
|
||||
when: create_passphrase_1 is failed
|
||||
|
||||
- name: Create with passphrase1 (without argon2i)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
passphrase: "{{ cryptfile_passphrase1 }}"
|
||||
@@ -36,7 +36,7 @@
|
||||
when: create_passphrase_1 is failed
|
||||
|
||||
- name: Open with passphrase1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
# Encode passphrase with Base64 to test passphrase_encoding
|
||||
@@ -45,17 +45,17 @@
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is not failed
|
||||
- name: Close
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
become: true
|
||||
|
||||
- name: Give access with ambiguous new_ arguments
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
passphrase: "{{ cryptfile_passphrase1 }}"
|
||||
@@ -66,24 +66,24 @@
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: new_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- new_try is failed
|
||||
|
||||
- name: Try to open with passphrase2
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
passphrase: "{{ cryptfile_passphrase2 }}"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is failed
|
||||
|
||||
- name: Give access to passphrase2
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
passphrase: "{{ cryptfile_passphrase1 }}"
|
||||
@@ -94,7 +94,7 @@
|
||||
register: result_1
|
||||
|
||||
- name: Give access to passphrase2 (idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
passphrase: "{{ cryptfile_passphrase1 }}"
|
||||
@@ -102,42 +102,42 @@
|
||||
become: true
|
||||
register: result_2
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result_1 is changed
|
||||
- result_2 is not changed
|
||||
|
||||
- name: Open with passphrase2
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
passphrase: "{{ cryptfile_passphrase2 }}"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is not failed
|
||||
- name: Close
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
become: true
|
||||
|
||||
- name: Try to open with keyfile1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is failed
|
||||
|
||||
- name: Give access to keyfile1 from passphrase1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
passphrase: "{{ cryptfile_passphrase1 }}"
|
||||
@@ -147,7 +147,7 @@
|
||||
become: true
|
||||
|
||||
- name: Remove access with ambiguous remove_ arguments
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
remove_keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -155,29 +155,29 @@
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: remove_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- remove_try is failed
|
||||
|
||||
- name: Open with keyfile1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is not failed
|
||||
- name: Close
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
become: true
|
||||
|
||||
- name: Remove access for passphrase1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
remove_passphrase: "{{ cryptfile_passphrase1 }}"
|
||||
@@ -185,44 +185,44 @@
|
||||
register: result_1
|
||||
|
||||
- name: Remove access for passphrase1 (idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
remove_passphrase: "{{ cryptfile_passphrase1 }}"
|
||||
become: true
|
||||
register: result_2
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result_1 is changed
|
||||
- result_2 is not changed
|
||||
|
||||
- name: Try to open with passphrase1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
passphrase: "{{ cryptfile_passphrase1 }}"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is failed
|
||||
|
||||
- name: Try to open with passphrase3
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
passphrase: "{{ cryptfile_passphrase3 }}"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is failed
|
||||
|
||||
- name: Give access to passphrase3 from keyfile1
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -232,18 +232,18 @@
|
||||
become: true
|
||||
|
||||
- name: Open with passphrase3
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
passphrase: "{{ cryptfile_passphrase3 }}"
|
||||
become: true
|
||||
ignore_errors: true
|
||||
register: open_try
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- open_try is not failed
|
||||
- name: Close
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: closed
|
||||
become: true
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
- name: On kernel >= 5.9 use performance flags
|
||||
block:
|
||||
- name: Create and open (check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -22,7 +22,7 @@
|
||||
become: true
|
||||
register: create_open_check
|
||||
- name: Create and open
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -37,7 +37,7 @@
|
||||
become: true
|
||||
register: create_open
|
||||
- name: Create and open (idempotent)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: opened
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -52,7 +52,7 @@
|
||||
become: true
|
||||
register: create_open_idem
|
||||
- name: Create and open (idempotent, check)
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
device: "{{ cryptfile_device }}"
|
||||
state: present
|
||||
keyfile: "{{ remote_tmp_dir }}/keyfile1"
|
||||
@@ -67,7 +67,7 @@
|
||||
check_mode: true
|
||||
become: true
|
||||
register: create_open_idem_check
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- create_open_check is changed
|
||||
- create_open is changed
|
||||
@@ -75,10 +75,10 @@
|
||||
- create_open_idem_check is not changed
|
||||
|
||||
- name: Dump LUKS Header
|
||||
command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
ansible.builtin.command: "cryptsetup luksDump {{ cryptfile_device }}"
|
||||
become: true
|
||||
register: luks_header
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- "'no-read-workqueue' in luks_header.stdout"
|
||||
- "'no-write-workqueue' in luks_header.stdout"
|
||||
@@ -87,10 +87,10 @@
|
||||
- "'allow-discards' in luks_header.stdout"
|
||||
|
||||
- name: Dump device mapper table
|
||||
command: "dmsetup table {{ create_open.name }}"
|
||||
ansible.builtin.command: "dmsetup table {{ create_open.name }}"
|
||||
become: true
|
||||
register: dm_table
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- "'no_read_workqueue' in dm_table.stdout"
|
||||
- "'no_write_workqueue' in dm_table.stdout"
|
||||
@@ -99,7 +99,7 @@
|
||||
- "'allow_discards' in dm_table.stdout"
|
||||
|
||||
- name: Closed and Removed
|
||||
luks_device:
|
||||
community.crypto.luks_device:
|
||||
name: "{{ cryptfile_device }}"
|
||||
state: absent
|
||||
become: true
|
||||
|
||||
@@ -9,39 +9,39 @@
|
||||
####################################################################
|
||||
|
||||
- name: Declare global variables
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
signing_key: '{{ remote_tmp_dir }}/id_key'
|
||||
public_key: '{{ remote_tmp_dir }}/id_key.pub'
|
||||
certificate_path: '{{ remote_tmp_dir }}/id_cert'
|
||||
|
||||
- name: Generate keypair
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ signing_key }}"
|
||||
type: rsa
|
||||
size: 1024
|
||||
|
||||
- block:
|
||||
- name: Import idempotency tests
|
||||
import_tasks: ../tests/idempotency.yml
|
||||
ansible.builtin.import_tasks: ../tests/idempotency.yml
|
||||
|
||||
- name: Import key_idempotency tests
|
||||
import_tasks: ../tests/key_idempotency.yml
|
||||
ansible.builtin.import_tasks: ../tests/key_idempotency.yml
|
||||
|
||||
- name: Import options tests
|
||||
import_tasks: ../tests/options_idempotency.yml
|
||||
ansible.builtin.import_tasks: ../tests/options_idempotency.yml
|
||||
|
||||
- name: Import regenerate tests
|
||||
import_tasks: ../tests/regenerate.yml
|
||||
ansible.builtin.import_tasks: ../tests/regenerate.yml
|
||||
|
||||
- name: Import remove tests
|
||||
import_tasks: ../tests/remove.yml
|
||||
ansible.builtin.import_tasks: ../tests/remove.yml
|
||||
when: not (ansible_facts['distribution'] == "CentOS" and ansible_facts['distribution_major_version'] == "6")
|
||||
|
||||
- name: Import ssh-agent tests
|
||||
import_tasks: ../tests/ssh-agent.yml
|
||||
ansible.builtin.import_tasks: ../tests/ssh-agent.yml
|
||||
when: openssh_version is version("7.6",">=")
|
||||
|
||||
- name: Remove keypair
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ signing_key }}"
|
||||
state: absent
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
# and should not be used as examples of how to write Ansible roles #
|
||||
####################################################################
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
test_cases:
|
||||
- test_name: Generate cert - force option (check_mode)
|
||||
force: true
|
||||
@@ -253,7 +253,7 @@
|
||||
changed: true
|
||||
|
||||
- name: Execute idempotency tests
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
force: "{{ test_case.force | default(omit) }}"
|
||||
identifier: "{{ test_case.identifier | default(omit) }}"
|
||||
options: "{{ test_case.options | default(omit) }}"
|
||||
@@ -275,7 +275,7 @@
|
||||
loop_var: test_case
|
||||
|
||||
- name: Assert task statuses
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.changed == test_cases[index].changed
|
||||
loop: "{{ idempotency_test_output.results }}"
|
||||
@@ -284,6 +284,6 @@
|
||||
loop_var: result
|
||||
|
||||
- name: Remove certificate
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
path: "{{ certificate_path }}"
|
||||
state: absent
|
||||
@@ -8,16 +8,16 @@
|
||||
# and should not be used as examples of how to write Ansible roles #
|
||||
####################################################################
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
new_signing_key: "{{ remote_tmp_dir }}/new_key"
|
||||
new_public_key: "{{ remote_tmp_dir }}/new_key.pub"
|
||||
|
||||
- name: Generate new test key
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ new_signing_key }}"
|
||||
|
||||
- name: Generate cert with original keys
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
- block:
|
||||
- name: Generate cert with updated signature algorithm
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -38,12 +38,12 @@
|
||||
register: updated_signature_algorithm
|
||||
|
||||
- name: Assert signature algorithm update causes change
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- updated_signature_algorithm is changed
|
||||
|
||||
- name: Generate cert with updated signature algorithm (idempotent)
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -54,13 +54,13 @@
|
||||
register: updated_signature_algorithm_idempotent
|
||||
|
||||
- name: Assert signature algorithm update is idempotent
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- updated_signature_algorithm_idempotent is not changed
|
||||
|
||||
- block:
|
||||
- name: Generate cert with original signature algorithm
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -71,7 +71,7 @@
|
||||
register: second_signature_algorithm
|
||||
|
||||
- name: Assert second signature algorithm update causes change
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- second_signature_algorithm is changed
|
||||
# RHEL9, Fedora 41 and Rocky 9 disable the SHA-1 algorithms by default, making this test fail with a 'libcrypt' error.
|
||||
@@ -81,7 +81,7 @@
|
||||
- not (ansible_facts['distribution'] == "Fedora" and (ansible_facts['distribution_major_version'] | int) >= 41)
|
||||
|
||||
- name: Omit signature algorithm
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -91,12 +91,12 @@
|
||||
register: omitted_signature_algorithm
|
||||
|
||||
- name: Assert omitted_signature_algorithm does not cause change
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- omitted_signature_algorithm is not changed
|
||||
|
||||
- name: Revert to original certificate
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -107,7 +107,7 @@
|
||||
when: openssh_version is version("7.3", ">=")
|
||||
|
||||
- name: Generate cert with new signing key
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -117,7 +117,7 @@
|
||||
register: new_signing_key_output
|
||||
|
||||
- name: Generate cert with new public key
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ new_public_key }}"
|
||||
@@ -127,7 +127,7 @@
|
||||
register: new_public_key_output
|
||||
|
||||
- name: Generate cert with new signing key - full idempotency
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -138,7 +138,7 @@
|
||||
register: new_signing_key_full_idempotency_output
|
||||
|
||||
- name: Generate cert with new pubic key - full idempotency
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ new_public_key }}"
|
||||
@@ -149,7 +149,7 @@
|
||||
register: new_public_key_full_idempotency_output
|
||||
|
||||
- name: Assert changes to public key or signing key results in no change unless idempotency=full
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- new_signing_key_output is not changed
|
||||
- new_public_key_output is not changed
|
||||
@@ -157,11 +157,11 @@
|
||||
- new_public_key_full_idempotency_output is changed
|
||||
|
||||
- name: Remove certificate
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
path: "{{ certificate_path }}"
|
||||
state: absent
|
||||
|
||||
- name: Remove new keypair
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ new_signing_key }}"
|
||||
state: absent
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
####################################################################
|
||||
|
||||
- name: Generate cert with no options
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -22,7 +22,7 @@
|
||||
register: no_options
|
||||
|
||||
- name: Generate cert with no options with explicit directives
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -39,7 +39,7 @@
|
||||
register: no_options_explicit_directives
|
||||
|
||||
- name: Generate cert with explicit extension
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -53,7 +53,7 @@
|
||||
register: explicit_extension_before
|
||||
|
||||
- name: Generate cert with explicit extension (idempotency)
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -67,7 +67,7 @@
|
||||
register: explicit_extension_after
|
||||
|
||||
- name: Generate cert with explicit extension and corresponding directive
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -81,7 +81,7 @@
|
||||
register: explicit_extension_and_directive
|
||||
|
||||
- name: Generate cert with default options
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -92,7 +92,7 @@
|
||||
register: default_options
|
||||
|
||||
- name: Generate cert with relative timestamp
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -104,7 +104,7 @@
|
||||
register: relative_timestamp
|
||||
|
||||
- name: Generate cert with ignore_timestamp true
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -117,7 +117,7 @@
|
||||
register: relative_timestamp_true
|
||||
|
||||
- name: Generate cert with ignore_timestamp false
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -130,7 +130,7 @@
|
||||
register: relative_timestamp_false
|
||||
|
||||
- name: Generate cert with ignore_timestamp true
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -143,7 +143,7 @@
|
||||
register: relative_timestamp_invalid_at
|
||||
|
||||
- name: Generate host cert full_idempotence
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: host
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -153,7 +153,7 @@
|
||||
regenerate: full_idempotence
|
||||
|
||||
- name: Generate host cert full_idempotence again
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: host
|
||||
path: "{{ certificate_path }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -164,7 +164,7 @@
|
||||
register: host_cert_full_idempotence
|
||||
|
||||
- name: Assert options results
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- no_options is changed
|
||||
- no_options_explicit_directives is not changed
|
||||
@@ -179,6 +179,6 @@
|
||||
- host_cert_full_idempotence is not changed
|
||||
|
||||
- name: Remove certificate
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
path: "{{ certificate_path }}"
|
||||
state: absent
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
# and should not be used as examples of how to write Ansible roles #
|
||||
####################################################################
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
test_cases:
|
||||
- test_name: Generate certificate
|
||||
type: user
|
||||
@@ -104,7 +104,7 @@
|
||||
changed: true
|
||||
|
||||
- name: Execute regenerate tests
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
force: "{{ test_case.force | default(omit) }}"
|
||||
options: "{{ test_case.options | default(omit) }}"
|
||||
path: "{{ test_case.path | default(omit) }}"
|
||||
@@ -126,7 +126,7 @@
|
||||
loop_var: test_case
|
||||
|
||||
- name: Assert task statuses
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.changed == test_cases[index].changed
|
||||
loop: "{{ regenerate_tests_output.results }}"
|
||||
@@ -135,6 +135,6 @@
|
||||
loop_var: result
|
||||
|
||||
- name: Remove certificate
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
path: "{{ certificate_path }}"
|
||||
state: absent
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
# and should not be used as examples of how to write Ansible roles #
|
||||
####################################################################
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
test_cases:
|
||||
- test_name: Generate certificate
|
||||
type: user
|
||||
@@ -38,7 +38,7 @@
|
||||
changed: false
|
||||
|
||||
- name: Execute remove tests
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
options: "{{ test_case.options | default(omit) }}"
|
||||
path: "{{ test_case.path | default(omit) }}"
|
||||
public_key: "{{ test_case.public_key | default(omit) }}"
|
||||
@@ -57,7 +57,7 @@
|
||||
loop_var: test_case
|
||||
|
||||
- name: Assert task statuses
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.changed == test_cases[index].changed
|
||||
loop: "{{ remove_test_output.results }}"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
block:
|
||||
- name: Generate always valid cert using agent without key in agent (should fail)
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
signing_key: "{{ signing_key }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -26,16 +26,16 @@
|
||||
ignore_errors: true
|
||||
|
||||
- name: Make sure cert creation with agent fails if key not in agent
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- rc_no_key_in_agent is failed
|
||||
- "'agent contains no identities' in rc_no_key_in_agent.msg or 'not found in agent' in rc_no_key_in_agent.msg"
|
||||
|
||||
- name: Add key to agent
|
||||
command: 'ssh-add {{ signing_key }}'
|
||||
ansible.builtin.command: 'ssh-add {{ signing_key }}'
|
||||
|
||||
- name: Generate always valid cert with agent (check mode)
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
signing_key: "{{ signing_key }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -46,7 +46,7 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Generate always valid cert with agent
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
signing_key: "{{ signing_key }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -56,7 +56,7 @@
|
||||
valid_to: forever
|
||||
|
||||
- name: Generate always valid cert with agent (idempotent)
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
signing_key: "{{ signing_key }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -67,13 +67,13 @@
|
||||
register: rc_cert_with_agent_idempotent
|
||||
|
||||
- name: Check agent idempotency
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- rc_cert_with_agent_idempotent is not changed
|
||||
msg: OpenSSH certificate generation without serial number is idempotent.
|
||||
|
||||
- name: Generate always valid cert with agent (idempotent, check mode)
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
type: user
|
||||
signing_key: "{{ signing_key }}"
|
||||
public_key: "{{ public_key }}"
|
||||
@@ -84,6 +84,6 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Remove certificate
|
||||
openssh_cert:
|
||||
community.crypto.openssh_cert:
|
||||
state: absent
|
||||
path: '{{ remote_tmp_dir }}/id_cert_with_agent'
|
||||
|
||||
@@ -9,42 +9,42 @@
|
||||
####################################################################
|
||||
|
||||
- name: Backend auto-detection test
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/auto_backend_key'
|
||||
state: "{{ item }}"
|
||||
loop: ['present', 'absent']
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
backends: ['opensshbin']
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
backends: "{{ backends + ['cryptography'] }}"
|
||||
when: cryptography_version is version('3.3', '>=') and bcrypt_version.stdout is version('3.1.5', '>=')
|
||||
|
||||
- include_tasks: ../tests/core.yml
|
||||
- ansible.builtin.include_tasks: ../tests/core.yml
|
||||
loop: "{{ backends }}"
|
||||
loop_control:
|
||||
loop_var: backend
|
||||
|
||||
- include_tasks: ../tests/invalid.yml
|
||||
- ansible.builtin.include_tasks: ../tests/invalid.yml
|
||||
loop: "{{ backends }}"
|
||||
loop_control:
|
||||
loop_var: backend
|
||||
|
||||
- include_tasks: ../tests/options.yml
|
||||
- ansible.builtin.include_tasks: ../tests/options.yml
|
||||
loop: "{{ backends }}"
|
||||
loop_control:
|
||||
loop_var: backend
|
||||
|
||||
- include_tasks: ../tests/regenerate.yml
|
||||
- ansible.builtin.include_tasks: ../tests/regenerate.yml
|
||||
loop: "{{ backends }}"
|
||||
loop_control:
|
||||
loop_var: backend
|
||||
|
||||
- include_tasks: ../tests/state.yml
|
||||
- ansible.builtin.include_tasks: ../tests/state.yml
|
||||
loop: "{{ backends }}"
|
||||
loop_control:
|
||||
loop_var: backend
|
||||
|
||||
- include_tasks: ../tests/cryptography_backend.yml
|
||||
- ansible.builtin.include_tasks: ../tests/cryptography_backend.yml
|
||||
when: cryptography_version is version('3.3', '>=') and bcrypt_version.stdout is version('3.1.5', '>=')
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
####################################################################
|
||||
|
||||
- name: "({{ backend }}) Generate key (check mode)"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/core"
|
||||
size: 1280
|
||||
backend: "{{ backend }}"
|
||||
@@ -17,14 +17,14 @@
|
||||
check_mode: true
|
||||
|
||||
- name: "({{ backend }}) Generate key"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/core"
|
||||
size: 1280
|
||||
backend: "{{ backend }}"
|
||||
register: core_output
|
||||
|
||||
- name: "({{ backend }}) Generate key (check mode idempotent)"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/core"
|
||||
size: 1280
|
||||
backend: "{{ backend }}"
|
||||
@@ -32,18 +32,18 @@
|
||||
check_mode: true
|
||||
|
||||
- name: "({{ backend }}) Generate key (idempotent)"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/core'
|
||||
size: 1280
|
||||
backend: "{{ backend }}"
|
||||
register: idempotency_core_output
|
||||
|
||||
- name: "({{ backend }}) Log key return values"
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ core_output }}"
|
||||
|
||||
- name: "({{ backend }}) Assert core behavior"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- check_core_output is changed
|
||||
- core_output is changed
|
||||
@@ -52,7 +52,7 @@
|
||||
- idempotency_core_output is not changed
|
||||
|
||||
- name: "({{ backend }}) Assert key returns fingerprint"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- core_output['fingerprint'] is string
|
||||
- core_output['fingerprint'].startswith('SHA256:')
|
||||
@@ -60,44 +60,44 @@
|
||||
when: not (backend == 'opensshbin' and openssh_version is version('6.8', '<'))
|
||||
|
||||
- name: "({{ backend }}) Assert key returns public_key"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- core_output['public_key'] is string
|
||||
- core_output['public_key'].startswith('ssh-rsa ')
|
||||
|
||||
- name: "({{ backend }}) Assert key returns size value"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- core_output['size']|type_debug == 'int'
|
||||
- core_output['size'] == 1280
|
||||
|
||||
- name: "({{ backend }}) Assert key returns key type"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- core_output['type'] is string
|
||||
- core_output['type'] == 'rsa'
|
||||
|
||||
- name: "({{ backend }}) Retrieve key size from 'ssh-keygen'"
|
||||
shell: "ssh-keygen -lf {{ remote_tmp_dir }}/core | grep -o -E '^[0-9]+'"
|
||||
ansible.builtin.shell: "ssh-keygen -lf {{ remote_tmp_dir }}/core | grep -o -E '^[0-9]+'"
|
||||
register: core_size_ssh_keygen
|
||||
|
||||
- name: "({{ backend }}) Assert key size matches 'ssh-keygen' output"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- core_size_ssh_keygen.stdout == '1280'
|
||||
|
||||
- name: "({{ backend }}) Read core.pub"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/core.pub'
|
||||
register: slurp
|
||||
|
||||
- name: "({{ backend }}) Assert public key module return equal to the public key content"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "core_output.public_key == (slurp.content | b64decode).strip('\n ')"
|
||||
|
||||
- name: "({{ backend }}) Remove key"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/core'
|
||||
backend: "{{ backend }}"
|
||||
state: absent
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Generate a password protected key
|
||||
command: 'ssh-keygen -f {{ remote_tmp_dir }}/password_protected -N {{ passphrase }}'
|
||||
ansible.builtin.command: 'ssh-keygen -f {{ remote_tmp_dir }}/password_protected -N {{ passphrase }}'
|
||||
|
||||
- name: Modify the password protected key with passphrase
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/password_protected'
|
||||
size: 1024
|
||||
passphrase: "{{ passphrase }}"
|
||||
@@ -15,7 +15,7 @@
|
||||
register: password_protected_output
|
||||
|
||||
- name: Check password protected key idempotency
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/password_protected'
|
||||
size: 1024
|
||||
passphrase: "{{ passphrase }}"
|
||||
@@ -23,29 +23,29 @@
|
||||
register: password_protected_idempotency_output
|
||||
|
||||
- name: Ensure that ssh-keygen can read keys generated with passphrase
|
||||
command: 'ssh-keygen -yf {{ remote_tmp_dir }}/password_protected -P {{ passphrase }}'
|
||||
ansible.builtin.command: 'ssh-keygen -yf {{ remote_tmp_dir }}/password_protected -P {{ passphrase }}'
|
||||
register: password_protected_ssh_keygen_output
|
||||
|
||||
- name: Check that password protected key with passphrase was regenerated
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- password_protected_output is changed
|
||||
- password_protected_idempotency_output is not changed
|
||||
- password_protected_ssh_keygen_output is success
|
||||
|
||||
- name: Remove password protected key
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/password_protected'
|
||||
backend: cryptography
|
||||
state: absent
|
||||
|
||||
- name: Generate an unprotected key
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/unprotected'
|
||||
backend: cryptography
|
||||
|
||||
- name: Modify unprotected key with passphrase
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/unprotected'
|
||||
size: 1280
|
||||
passphrase: "{{ passphrase }}"
|
||||
@@ -54,7 +54,7 @@
|
||||
register: unprotected_modification_output
|
||||
|
||||
- name: Modify unprotected key with passphrase (force)
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/unprotected'
|
||||
size: 1280
|
||||
passphrase: "{{ passphrase }}"
|
||||
@@ -63,22 +63,22 @@
|
||||
register: force_unprotected_modification_output
|
||||
|
||||
- name: Check that unprotected key was modified
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- unprotected_modification_output is failed
|
||||
- force_unprotected_modification_output is changed
|
||||
|
||||
- name: Remove unprotected key
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/unprotected'
|
||||
backend: cryptography
|
||||
state: absent
|
||||
|
||||
- name: Generate PEM encoded key with passphrase
|
||||
command: 'ssh-keygen -t rsa -b 1280 -f {{ remote_tmp_dir }}/pem_encoded -N {{ passphrase }} -m PEM'
|
||||
ansible.builtin.command: 'ssh-keygen -t rsa -b 1280 -f {{ remote_tmp_dir }}/pem_encoded -N {{ passphrase }} -m PEM'
|
||||
|
||||
- name: Try to verify a PEM encoded key
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/pem_encoded'
|
||||
passphrase: "{{ passphrase }}"
|
||||
backend: cryptography
|
||||
@@ -86,84 +86,84 @@
|
||||
register: pem_encoded_output
|
||||
|
||||
- name: Check that PEM encoded file is read without errors
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- pem_encoded_output is not changed
|
||||
|
||||
- name: Remove PEM encoded key
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/pem_encoded'
|
||||
backend: cryptography
|
||||
state: absent
|
||||
|
||||
- name: Generate a private key with specified format
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/private_key_format'
|
||||
private_key_format: pkcs1
|
||||
backend: cryptography
|
||||
|
||||
- name: Generate a private key with specified format (Idempotent)
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/private_key_format'
|
||||
private_key_format: pkcs1
|
||||
backend: cryptography
|
||||
register: private_key_format_idempotent
|
||||
|
||||
- name: Check that private key with specified format is idempotent
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- private_key_format_idempotent is not changed
|
||||
|
||||
- name: Change to PKCS8 format
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/private_key_format'
|
||||
private_key_format: pkcs8
|
||||
backend: cryptography
|
||||
register: private_key_format_pkcs8
|
||||
|
||||
- name: Check that format change causes regeneration
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- private_key_format_pkcs8 is changed
|
||||
|
||||
- name: Change to PKCS8 format (Idempotent)
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/private_key_format'
|
||||
private_key_format: pkcs8
|
||||
backend: cryptography
|
||||
register: private_key_format_pkcs8_idempotent
|
||||
|
||||
- name: Check that private key with PKCS8 format is idempotent
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- private_key_format_pkcs8_idempotent is not changed
|
||||
|
||||
- name: Change to SSH format
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/private_key_format'
|
||||
private_key_format: ssh
|
||||
backend: cryptography
|
||||
register: private_key_format_ssh
|
||||
|
||||
- name: Check that format change causes regeneration
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- private_key_format_ssh is changed
|
||||
|
||||
- name: Change to SSH format (Idempotent)
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/private_key_format'
|
||||
private_key_format: ssh
|
||||
backend: cryptography
|
||||
register: private_key_format_ssh_idempotent
|
||||
|
||||
- name: Check that private key with SSH format is idempotent
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- private_key_format_ssh_idempotent is not changed
|
||||
|
||||
- name: Remove private key with specified format
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/private_key_format'
|
||||
backend: cryptography
|
||||
state: absent
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
####################################################################
|
||||
|
||||
- name: "({{ backend }}) Generate key - broken"
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
dest: '{{ item }}'
|
||||
content: ''
|
||||
mode: '0700'
|
||||
@@ -18,91 +18,91 @@
|
||||
- "{{ remote_tmp_dir }}/broken.pub"
|
||||
|
||||
- name: "({{ backend }}) Regenerate key - broken"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/broken"
|
||||
backend: "{{ backend }}"
|
||||
register: broken_output
|
||||
ignore_errors: true
|
||||
|
||||
- name: "({{ backend }}) Assert broken key causes failure - broken"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- broken_output is failed
|
||||
- "'Unable to read the key. The key is protected with a passphrase or broken.' in broken_output.msg"
|
||||
|
||||
- name: "({{ backend }}) Regenerate key with force - broken"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/broken"
|
||||
backend: "{{ backend }}"
|
||||
force: true
|
||||
register: force_broken_output
|
||||
|
||||
- name: "({{ backend }}) Assert broken key regenerated when 'force=true' - broken"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- force_broken_output is changed
|
||||
|
||||
- name: "({{ backend }}) Remove key - broken"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/broken"
|
||||
backend: "{{ backend }}"
|
||||
state: absent
|
||||
|
||||
- name: "({{ backend }}) Generate key - write-only"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/write-only"
|
||||
mode: "0200"
|
||||
backend: "{{ backend }}"
|
||||
|
||||
- name: "({{ backend }}) Check private key status - write-only"
|
||||
stat:
|
||||
ansible.builtin.stat:
|
||||
path: '{{ remote_tmp_dir }}/write-only'
|
||||
register: write_only_private_key
|
||||
|
||||
- name: "({{ backend }}) Check public key status - write-only"
|
||||
stat:
|
||||
ansible.builtin.stat:
|
||||
path: '{{ remote_tmp_dir }}/write-only.pub'
|
||||
register: write_only_public_key
|
||||
|
||||
- name: "({{ backend }}) Assert that private and public keys match permissions - write-only"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- write_only_private_key.stat.mode == '0200'
|
||||
- write_only_public_key.stat.mode == '0200'
|
||||
|
||||
- name: "({{ backend }}) Regenerate key with force - write-only"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/write-only"
|
||||
backend: "{{ backend }}"
|
||||
force: true
|
||||
register: write_only_output
|
||||
|
||||
- name: "({{ backend }}) Check private key status after regeneration - write-only"
|
||||
stat:
|
||||
ansible.builtin.stat:
|
||||
path: '{{ remote_tmp_dir }}/write-only'
|
||||
register: write_only_private_key_after
|
||||
|
||||
- name: "({{ backend }}) Assert key is regenerated - write-only"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- write_only_output is changed
|
||||
|
||||
- name: "({{ backend }}) Assert key permissions are preserved with 'opensshbin'"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- write_only_private_key_after.stat.mode == '0200'
|
||||
|
||||
- name: "({{ backend }}) Remove key - write-only"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/write-only"
|
||||
backend: "{{ backend }}"
|
||||
state: absent
|
||||
|
||||
- name: "({{ backend }}) Generate key with ssh-keygen - password_protected"
|
||||
command: "ssh-keygen -f {{ remote_tmp_dir }}/password_protected -N {{ passphrase }}"
|
||||
ansible.builtin.command: "ssh-keygen -f {{ remote_tmp_dir }}/password_protected -N {{ passphrase }}"
|
||||
|
||||
- name: "({{ backend }}) Modify key - password_protected"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/password_protected"
|
||||
size: 1280
|
||||
backend: "{{ backend }}"
|
||||
@@ -110,13 +110,13 @@
|
||||
ignore_errors: true
|
||||
|
||||
- name: "({{ backend }}) Assert key cannot be read - password_protected"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- password_protected_output is failed
|
||||
- "'Unable to read the key. The key is protected with a passphrase or broken.' in password_protected_output.msg"
|
||||
|
||||
- name: "({{ backend }}) Modify key with 'force=true' - password_protected"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/password_protected"
|
||||
size: 1280
|
||||
backend: "{{ backend }}"
|
||||
@@ -124,12 +124,12 @@
|
||||
register: force_password_protected_output
|
||||
|
||||
- name: "({{ backend }}) Assert key regenerated with 'force=true' - password_protected"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- force_password_protected_output is changed
|
||||
|
||||
- name: "({{ backend }}) Remove key - password_protected"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/password_protected"
|
||||
backend: "{{ backend }}"
|
||||
state: absent
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
# and should not be used as examples of how to write Ansible roles #
|
||||
####################################################################
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
key_types: "{{ key_types_src | reject('equalto', '') | list }}"
|
||||
vars:
|
||||
key_types_src:
|
||||
@@ -17,61 +17,61 @@
|
||||
- ecdsa
|
||||
|
||||
- name: "({{ backend }}) Generate keys with default size - size"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/default_size_{{ item }}"
|
||||
type: "{{ item }}"
|
||||
backend: "{{ backend }}"
|
||||
loop: "{{ key_types }}"
|
||||
|
||||
- name: "({{ backend }}) Retrieve key size from 'ssh-keygen' - size"
|
||||
shell: "ssh-keygen -lf {{ remote_tmp_dir }}/default_size_{{ item }} | grep -o -E '^[0-9]+'"
|
||||
ansible.builtin.shell: "ssh-keygen -lf {{ remote_tmp_dir }}/default_size_{{ item }} | grep -o -E '^[0-9]+'"
|
||||
loop: "{{ key_types }}"
|
||||
register: key_size_output
|
||||
|
||||
- name: "({{ backend }}) Assert key sizes match default size - size"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- (key_size_output.results | selectattr('item', 'equalto', 'rsa') | first).stdout == '4096'
|
||||
- not openssh_supports_dsa or (key_size_output.results | selectattr('item', 'equalto', 'dsa') | first).stdout == '1024'
|
||||
- (key_size_output.results | selectattr('item', 'equalto', 'ecdsa') | first).stdout == '256'
|
||||
|
||||
- name: "({{ backend }}) Remove keys - size"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/default_size_{{ item }}"
|
||||
state: absent
|
||||
loop: "{{ key_types }}"
|
||||
|
||||
- block:
|
||||
- name: "({{ backend }}) Generate ed25519 key with default size - size"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/default_size_ed25519"
|
||||
type: ed25519
|
||||
backend: "{{ backend }}"
|
||||
|
||||
- name: "({{ backend }}) Retrieve ed25519 key size from 'ssh-keygen' - size"
|
||||
shell: "ssh-keygen -lf {{ remote_tmp_dir }}/default_size_ed25519 | grep -o -E '^[0-9]+'"
|
||||
ansible.builtin.shell: "ssh-keygen -lf {{ remote_tmp_dir }}/default_size_ed25519 | grep -o -E '^[0-9]+'"
|
||||
register: ed25519_key_size_output
|
||||
|
||||
- name: "({{ backend }}) Assert ed25519 key size matches default size - size"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- ed25519_key_size_output.stdout == '256'
|
||||
|
||||
- name: "({{ backend }}) Remove ed25519 key - size"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/default_size_ed25519"
|
||||
state: absent
|
||||
# Support for ed25519 keys was added in OpenSSH 6.5
|
||||
when: not (backend == 'opensshbin' and openssh_version is version('6.5', '<'))
|
||||
|
||||
- name: "({{ backend }}) Generate key - force"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/force"
|
||||
type: rsa
|
||||
backend: "{{ backend }}"
|
||||
|
||||
- name: "({{ backend }}) Regenerate key - force"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/force"
|
||||
type: rsa
|
||||
force: true
|
||||
@@ -79,25 +79,25 @@
|
||||
register: force_output
|
||||
|
||||
- name: "({{ backend }}) Assert key regenerated - force"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- force_output is changed
|
||||
|
||||
- name: "({{ backend }}) Remove key - force"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/force"
|
||||
state: absent
|
||||
backend: "{{ backend }}"
|
||||
|
||||
- name: "({{ backend }}) Generate key - comment"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/comment"
|
||||
comment: "test@comment"
|
||||
backend: "{{ backend }}"
|
||||
register: comment_output
|
||||
|
||||
- name: "({{ backend }}) Modify comment - comment"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/comment"
|
||||
comment: "test_modified@comment"
|
||||
backend: "{{ backend }}"
|
||||
@@ -106,13 +106,13 @@
|
||||
|
||||
- name: "({{ backend }}) Assert comment preserved public key - comment"
|
||||
when: modified_comment_output is succeeded
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- comment_output.public_key == modified_comment_output.public_key
|
||||
- comment_output.comment == 'test@comment'
|
||||
|
||||
- name: "({{ backend }}) Assert comment changed - comment"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- modified_comment_output.comment == 'test_modified@comment'
|
||||
- modified_comment_output is succeeded
|
||||
@@ -120,14 +120,14 @@
|
||||
when: not (backend == 'opensshbin' and openssh_version is version('7.2', '<'))
|
||||
|
||||
- name: "({{ backend }}) Assert comment not changed - comment"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- modified_comment_output is failed
|
||||
# Support for updating comments for key types other than rsa1 was added in OpenSSH 7.2
|
||||
when: backend == 'opensshbin' and openssh_version is version('7.2', '<')
|
||||
|
||||
- name: "({{ backend }}) Remove key - comment"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: "{{ remote_tmp_dir }}/comment"
|
||||
state: absent
|
||||
backend: "{{ backend }}"
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
loop: "{{ old_test_artifacts.files }}"
|
||||
|
||||
- name: "({{ backend }}) Regenerate - setup simple keys"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}'
|
||||
type: rsa
|
||||
size: 1024
|
||||
@@ -31,11 +31,11 @@
|
||||
regenerate: "{{ item }}"
|
||||
loop: "{{ regenerate_values }}"
|
||||
- name: "({{ backend }}) Regenerate - setup password protected keys"
|
||||
command: 'ssh-keygen -f {{ remote_tmp_dir }}/regenerate-b-{{ item }} -N {{ passphrase }}'
|
||||
ansible.builtin.command: 'ssh-keygen -f {{ remote_tmp_dir }}/regenerate-b-{{ item }} -N {{ passphrase }}'
|
||||
loop: "{{ regenerate_values }}"
|
||||
|
||||
- name: "({{ backend }}) Regenerate - setup broken keys"
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
dest: '{{ remote_tmp_dir }}/regenerate-c-{{ item.0 }}{{ item.1 }}'
|
||||
content: 'broken key'
|
||||
mode: '0700'
|
||||
@@ -44,11 +44,11 @@
|
||||
- ['', '.pub']
|
||||
|
||||
- name: "({{ backend }}) Regenerate - setup password protected keys for passphrse test"
|
||||
command: 'ssh-keygen -f {{ remote_tmp_dir }}/regenerate-d-{{ item }} -N {{ passphrase }}'
|
||||
ansible.builtin.command: 'ssh-keygen -f {{ remote_tmp_dir }}/regenerate-d-{{ item }} -N {{ passphrase }}'
|
||||
loop: "{{ regenerate_values }}"
|
||||
|
||||
- name: "({{ backend }}) Regenerate - modify broken keys (check mode)"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-c-{{ item }}'
|
||||
type: rsa
|
||||
size: 1024
|
||||
@@ -58,7 +58,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is failed
|
||||
- "'Unable to read the key. The key is protected with a passphrase or broken. Will not proceed.' in result.results[0].msg"
|
||||
@@ -70,7 +70,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ backend }}) Regenerate - modify broken keys"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-c-{{ item }}'
|
||||
type: rsa
|
||||
size: 1024
|
||||
@@ -79,7 +79,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is failed
|
||||
- "'Unable to read the key. The key is protected with a passphrase or broken. Will not proceed.' in result.results[0].msg"
|
||||
@@ -91,7 +91,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ backend }}) Regenerate - modify password protected keys (check mode)"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-b-{{ item }}'
|
||||
type: rsa
|
||||
size: 1024
|
||||
@@ -101,7 +101,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is failed
|
||||
- "'Unable to read the key. The key is protected with a passphrase or broken. Will not proceed.' in result.results[0].msg"
|
||||
@@ -113,7 +113,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ backend }}) Regenerate - modify password protected keys with passphrase (check mode)"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-b-{{ item }}'
|
||||
type: rsa
|
||||
size: 1024
|
||||
@@ -126,7 +126,7 @@
|
||||
register: result
|
||||
when: backend == 'cryptography'
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is success
|
||||
- result.results[1] is failed
|
||||
@@ -137,7 +137,7 @@
|
||||
when: backend == 'cryptography'
|
||||
|
||||
- name: "({{ backend }}) Regenerate - modify password protected keys"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-b-{{ item }}'
|
||||
type: rsa
|
||||
size: 1024
|
||||
@@ -146,7 +146,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is failed
|
||||
- "'Unable to read the key. The key is protected with a passphrase or broken. Will not proceed.' in result.results[0].msg"
|
||||
@@ -158,7 +158,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ backend }}) Regenerate - modify password protected keys with passphrase"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-d-{{ item }}'
|
||||
type: rsa
|
||||
size: 1024
|
||||
@@ -170,7 +170,7 @@
|
||||
register: result
|
||||
when: backend == 'cryptography'
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is success
|
||||
- result.results[1] is failed
|
||||
@@ -181,7 +181,7 @@
|
||||
when: backend == 'cryptography'
|
||||
|
||||
- name: "({{ backend }}) Regenerate - not modify regular keys (check mode)"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}'
|
||||
type: rsa
|
||||
size: 1024
|
||||
@@ -190,7 +190,7 @@
|
||||
check_mode: true
|
||||
loop: "{{ regenerate_values }}"
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is not changed
|
||||
- result.results[1] is not changed
|
||||
@@ -199,7 +199,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ backend }}) Regenerate - not modify regular keys"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}'
|
||||
type: rsa
|
||||
size: 1024
|
||||
@@ -207,7 +207,7 @@
|
||||
backend: "{{ backend }}"
|
||||
loop: "{{ regenerate_values }}"
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is not changed
|
||||
- result.results[1] is not changed
|
||||
@@ -216,7 +216,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ backend }}) Regenerate - adjust key size (check mode)"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}'
|
||||
type: rsa
|
||||
size: 1048
|
||||
@@ -226,7 +226,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is success and result.results[0] is not changed
|
||||
- result.results[1] is failed
|
||||
@@ -236,7 +236,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ backend }}) Regenerate - adjust key size"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}'
|
||||
type: rsa
|
||||
size: 1048
|
||||
@@ -245,7 +245,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is success and result.results[0] is not changed
|
||||
- result.results[1] is failed
|
||||
@@ -255,7 +255,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ backend }}) Regenerate - redistribute keys"
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
src: '{{ remote_tmp_dir }}/regenerate-a-always{{ item.1 }}'
|
||||
dest: '{{ remote_tmp_dir }}/regenerate-a-{{ item.0 }}{{ item.1 }}'
|
||||
remote_src: true
|
||||
@@ -270,7 +270,7 @@
|
||||
|
||||
block:
|
||||
- name: "({{ backend }}) Regenerate - adjust key type (check mode)"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}'
|
||||
type: '{{ ssh_type }}'
|
||||
size: '{{ ssh_size }}'
|
||||
@@ -280,7 +280,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is success and result.results[0] is not changed
|
||||
- result.results[1] is failed
|
||||
@@ -290,7 +290,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ backend }}) Regenerate - adjust key type"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}'
|
||||
type: '{{ ssh_type }}'
|
||||
size: '{{ ssh_size }}'
|
||||
@@ -299,7 +299,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is success and result.results[0] is not changed
|
||||
- result.results[1] is failed
|
||||
@@ -309,7 +309,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ backend }}) Regenerate - redistribute keys"
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
src: '{{ remote_tmp_dir }}/regenerate-a-always{{ item.1 }}'
|
||||
dest: '{{ remote_tmp_dir }}/regenerate-a-{{ item.0 }}{{ item.1 }}'
|
||||
remote_src: true
|
||||
@@ -319,7 +319,7 @@
|
||||
when: "item.0 != 'always'"
|
||||
|
||||
- name: "({{ backend }}) Regenerate - adjust comment (check mode)"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}'
|
||||
type: '{{ ssh_type }}'
|
||||
size: '{{ ssh_size }}'
|
||||
@@ -330,7 +330,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
|
||||
@@ -338,7 +338,7 @@
|
||||
- when: not (backend == 'opensshbin' and openssh_version is version('7.2', '<'))
|
||||
block:
|
||||
- name: "({{ backend }}) Regenerate - adjust comment"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}'
|
||||
type: '{{ ssh_type }}'
|
||||
size: '{{ ssh_size }}'
|
||||
@@ -347,7 +347,7 @@
|
||||
backend: "{{ backend }}"
|
||||
loop: "{{ regenerate_values }}"
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result is changed
|
||||
# for all values but 'always', the key should not be regenerated.
|
||||
|
||||
@@ -9,41 +9,41 @@
|
||||
####################################################################
|
||||
|
||||
- name: "({{ backend }}) Generate key"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/removed'
|
||||
backend: "{{ backend }}"
|
||||
state: present
|
||||
|
||||
- name: "({{ backend }}) Generate key (idempotency)"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
path: '{{ remote_tmp_dir }}/removed'
|
||||
backend: "{{ backend }}"
|
||||
state: present
|
||||
|
||||
- name: "({{ backend }}) Remove key"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
state: absent
|
||||
path: '{{ remote_tmp_dir }}/removed'
|
||||
backend: "{{ backend }}"
|
||||
|
||||
- name: "({{ backend }}) Remove key (idempotency)"
|
||||
openssh_keypair:
|
||||
community.crypto.openssh_keypair:
|
||||
state: absent
|
||||
path: '{{ remote_tmp_dir }}/removed'
|
||||
backend: "{{ backend }}"
|
||||
|
||||
- name: "({{ backend }}) Check private key status"
|
||||
stat:
|
||||
ansible.builtin.stat:
|
||||
path: '{{ remote_tmp_dir }}/removed'
|
||||
register: removed_private_key
|
||||
|
||||
- name: "({{ backend }}) Check public key status"
|
||||
stat:
|
||||
ansible.builtin.stat:
|
||||
path: '{{ remote_tmp_dir }}/removed.pub'
|
||||
register: removed_public_key
|
||||
|
||||
- name: "({{ backend }}) Assert key pair files are removed"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- not removed_private_key.stat.exists
|
||||
- not removed_public_key.stat.exists
|
||||
|
||||
@@ -4,17 +4,17 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read privatekey"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
register: privatekey
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (check mode)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -25,7 +25,7 @@
|
||||
register: generate_csr_check
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -35,7 +35,7 @@
|
||||
register: generate_csr
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (idempotent)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr.csr'
|
||||
privatekey_content: '{{ privatekey.content | b64decode }}'
|
||||
subject_ordered:
|
||||
@@ -45,7 +45,7 @@
|
||||
register: generate_csr_idempotent
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (idempotent, check mode)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -56,7 +56,7 @@
|
||||
register: generate_csr_idempotent_check
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR without SAN (check mode)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr-nosan.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -67,7 +67,7 @@
|
||||
register: generate_csr_nosan_check
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR without SAN"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr-nosan.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -77,7 +77,7 @@
|
||||
register: generate_csr_nosan
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR without SAN (idempotent)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr-nosan.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -87,7 +87,7 @@
|
||||
register: generate_csr_nosan_check_idempotent
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR without SAN (idempotent, check mode)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr-nosan.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -102,7 +102,7 @@
|
||||
# but the short name is used to test idempotency for ipsecuser
|
||||
# and vice-versa for biometricInfo
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with KU and XKU"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_ku_xku.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -118,7 +118,7 @@
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with KU and XKU (test idempotency)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_ku_xku.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -135,7 +135,7 @@
|
||||
register: csr_ku_xku
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with KU and XKU (test XKU change)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_ku_xku.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -151,7 +151,7 @@
|
||||
register: csr_ku_xku_change
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with KU and XKU (test KU change)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_ku_xku.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -166,14 +166,14 @@
|
||||
register: csr_ku_xku_change_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with old API"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_oldapi.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
commonName: www.ansible.com
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with invalid SAN (1/2)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csrinvsan.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject_alt_name: invalid-san.example.com
|
||||
@@ -182,7 +182,7 @@
|
||||
ignore_errors: true
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with invalid SAN (2/2)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csrinvsan2.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject_alt_name: "DNS:system:kube-controller-manager"
|
||||
@@ -191,7 +191,7 @@
|
||||
ignore_errors: true
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with OCSP Must Staple"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_ocsp.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject_alt_name: "DNS:www.ansible.com"
|
||||
@@ -199,7 +199,7 @@
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with OCSP Must Staple (test idempotency)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_ocsp.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject_alt_name: "DNS:www.ansible.com"
|
||||
@@ -208,13 +208,13 @@
|
||||
register: csr_ocsp_idempotency
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate ECC privatekey"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey2.pem'
|
||||
type: ECC
|
||||
curve: secp384r1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with ECC privatekey"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr2.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey2.pem'
|
||||
subject:
|
||||
@@ -222,7 +222,7 @@
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with text common name"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr3.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey2.pem'
|
||||
subject:
|
||||
@@ -231,7 +231,7 @@
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with country name"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr4.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey2.pem'
|
||||
country_name: de
|
||||
@@ -239,7 +239,7 @@
|
||||
register: country_idempotent_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with country name (idempotent)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr4.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey2.pem'
|
||||
country_name: de
|
||||
@@ -247,7 +247,7 @@
|
||||
register: country_idempotent_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with country name (idempotent 2)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr4.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey2.pem'
|
||||
subject:
|
||||
@@ -256,7 +256,7 @@
|
||||
register: country_idempotent_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with country name (bad country name)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr4.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey2.pem'
|
||||
subject:
|
||||
@@ -266,19 +266,19 @@
|
||||
ignore_errors: true
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey with password"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
passphrase: hunter2
|
||||
select_crypto_backend: cryptography
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read privatekey"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
register: privatekeypw
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with privatekey passphrase"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_pw.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
privatekey_passphrase: hunter2
|
||||
@@ -286,7 +286,7 @@
|
||||
register: passphrase_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with privatekey passphrase and private key content"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_pw.csr'
|
||||
privatekey_content: '{{ privatekeypw.content | b64decode }}'
|
||||
privatekey_passphrase: hunter2
|
||||
@@ -294,7 +294,7 @@
|
||||
register: passphrase_1_content
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (failed passphrase 1)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_pw1.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
privatekey_passphrase: hunter2
|
||||
@@ -303,7 +303,7 @@
|
||||
register: passphrase_error_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (failed passphrase 2)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_pw2.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
privatekey_passphrase: wrong_password
|
||||
@@ -312,7 +312,7 @@
|
||||
register: passphrase_error_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (failed passphrase 3)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_pw3.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
@@ -320,11 +320,11 @@
|
||||
register: passphrase_error_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create broken CSR"
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
dest: "{{ remote_tmp_dir }}/csrbroken.csr"
|
||||
content: "broken"
|
||||
- name: "({{ select_crypto_backend }}) Regenerate broken CSR"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csrbroken.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey2.pem'
|
||||
subject:
|
||||
@@ -334,7 +334,7 @@
|
||||
register: output_broken
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_backup.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -343,7 +343,7 @@
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: csr_backup_1
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (idempotent)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_backup.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -352,7 +352,7 @@
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: csr_backup_2
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (change)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_backup.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -361,7 +361,7 @@
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: csr_backup_3
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (remove)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_backup.csr'
|
||||
state: absent
|
||||
backup: true
|
||||
@@ -369,7 +369,7 @@
|
||||
return_content: true
|
||||
register: csr_backup_4
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (remove, idempotent)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_backup.csr'
|
||||
state: absent
|
||||
backup: true
|
||||
@@ -377,7 +377,7 @@
|
||||
register: csr_backup_5
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with subject key identifier"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_ski.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -387,7 +387,7 @@
|
||||
register: subject_key_identifier_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with subject key identifier (idempotency)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_ski.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -397,7 +397,7 @@
|
||||
register: subject_key_identifier_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with subject key identifier (change)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_ski.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -407,7 +407,7 @@
|
||||
register: subject_key_identifier_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with subject key identifier (auto-create)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_ski.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -417,7 +417,7 @@
|
||||
register: subject_key_identifier_4
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with subject key identifier (auto-create idempotency)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_ski.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -427,7 +427,7 @@
|
||||
register: subject_key_identifier_5
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with subject key identifier (remove)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_ski.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -436,7 +436,7 @@
|
||||
register: subject_key_identifier_6
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with authority key identifier"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_aki.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -446,7 +446,7 @@
|
||||
register: authority_key_identifier_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with authority key identifier (idempotency)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_aki.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -456,7 +456,7 @@
|
||||
register: authority_key_identifier_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with authority key identifier (change)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_aki.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -466,7 +466,7 @@
|
||||
register: authority_key_identifier_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with authority key identifier (remove)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_aki.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -475,7 +475,7 @@
|
||||
register: authority_key_identifier_4
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with authority cert issuer / serial number"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_acisn.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -488,7 +488,7 @@
|
||||
register: authority_cert_issuer_sn_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with authority cert issuer / serial number (idempotency)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_acisn.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -501,7 +501,7 @@
|
||||
register: authority_cert_issuer_sn_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with authority cert issuer / serial number (change issuer)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_acisn.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -514,7 +514,7 @@
|
||||
register: authority_cert_issuer_sn_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with authority cert issuer / serial number (change serial number)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_acisn.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -527,7 +527,7 @@
|
||||
register: authority_cert_issuer_sn_4
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with authority cert issuer / serial number (remove)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_acisn.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -535,7 +535,7 @@
|
||||
register: authority_cert_issuer_sn_5
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with everything"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_everything.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject_ordered:
|
||||
@@ -620,7 +620,7 @@
|
||||
register: everything_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with everything (idempotent, check mode)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_everything.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject_ordered:
|
||||
@@ -706,7 +706,7 @@
|
||||
register: everything_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with everything (idempotent)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_everything.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -792,7 +792,7 @@
|
||||
register: everything_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR with everything (not idempotent, check mode)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_everything.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject_ordered:
|
||||
@@ -887,7 +887,7 @@
|
||||
- name: "({{ select_crypto_backend }}) Ed25519 and Ed448 tests"
|
||||
block:
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekeys"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_{{ item }}.pem'
|
||||
type: '{{ item }}'
|
||||
loop:
|
||||
@@ -901,7 +901,7 @@
|
||||
block:
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_{{ item }}.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey_{{ item }}.pem'
|
||||
subject:
|
||||
@@ -914,7 +914,7 @@
|
||||
ignore_errors: true
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (idempotent)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_{{ item }}.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey_{{ item }}.pem'
|
||||
subject:
|
||||
@@ -931,7 +931,7 @@
|
||||
- name: "({{ select_crypto_backend }}) CRL distribution endpoints"
|
||||
block:
|
||||
- name: "({{ select_crypto_backend }}) Create CSR with CRL distribution endpoints"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_crl_d_e.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -953,7 +953,7 @@
|
||||
register: crl_distribution_endpoints_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create CSR with CRL distribution endpoints (idempotence)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_crl_d_e.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -975,7 +975,7 @@
|
||||
register: crl_distribution_endpoints_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create CSR with CRL distribution endpoints (change)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_crl_d_e.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -995,7 +995,7 @@
|
||||
register: crl_distribution_endpoints_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create CSR with CRL distribution endpoints (no endpoints)"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_crl_d_e.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -1004,7 +1004,7 @@
|
||||
register: crl_distribution_endpoints_4
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create CSR with CRL distribution endpoints"
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_crl_d_e.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
|
||||
@@ -10,22 +10,22 @@
|
||||
|
||||
- block:
|
||||
- name: Prepare private key for backend autodetection test
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_backend_selection.pem'
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
- name: Run module with backend autodetection
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_backend_selection.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey_backend_selection.pem'
|
||||
subject:
|
||||
commonName: www.ansible.com
|
||||
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
|
||||
@@ -4,25 +4,25 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR (test - privatekey modulus)"
|
||||
command: '{{ openssl_binary }} rsa -noout -modulus -in {{ remote_tmp_dir }}/privatekey.pem'
|
||||
ansible.builtin.command: '{{ openssl_binary }} rsa -noout -modulus -in {{ remote_tmp_dir }}/privatekey.pem'
|
||||
register: privatekey_modulus
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR (test - Common Name)"
|
||||
command: "{{ openssl_binary }} req -noout -subject -in {{ remote_tmp_dir }}/csr.csr -nameopt oneline,-space_eq"
|
||||
ansible.builtin.command: "{{ openssl_binary }} req -noout -subject -in {{ remote_tmp_dir }}/csr.csr -nameopt oneline,-space_eq"
|
||||
register: csr_cn
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR (test - csr modulus)"
|
||||
command: '{{ openssl_binary }} req -noout -modulus -in {{ remote_tmp_dir }}/csr.csr'
|
||||
ansible.builtin.command: '{{ openssl_binary }} req -noout -modulus -in {{ remote_tmp_dir }}/csr.csr'
|
||||
register: csr_modulus
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR (assert)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- csr_cn.stdout.split('=')[-1] == 'www.ansible.com'
|
||||
- csr_modulus.stdout == privatekey_modulus.stdout
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR (check mode, idempotency)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- generate_csr_check is changed
|
||||
- generate_csr is changed
|
||||
@@ -30,12 +30,12 @@
|
||||
- generate_csr_idempotent_check is not changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read CSR"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/csr.csr'
|
||||
register: slurp
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR (data retrieval)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- generate_csr_check.csr is none
|
||||
- generate_csr.csr == (slurp.content | b64decode)
|
||||
@@ -43,7 +43,7 @@
|
||||
- generate_csr.csr == generate_csr_idempotent_check.csr
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR without SAN (check mode, idempotency)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- generate_csr_nosan_check is changed
|
||||
- generate_csr_nosan is changed
|
||||
@@ -51,76 +51,76 @@
|
||||
- generate_csr_nosan_check_idempotent_check is not changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR_KU_XKU (assert idempotency, change)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- csr_ku_xku is not changed
|
||||
- csr_ku_xku_change is changed
|
||||
- csr_ku_xku_change_2 is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate old_API CSR (test - Common Name)"
|
||||
command: "{{ openssl_binary }} req -noout -subject -in {{ remote_tmp_dir }}/csr_oldapi.csr -nameopt oneline,-space_eq"
|
||||
ansible.builtin.command: "{{ openssl_binary }} req -noout -subject -in {{ remote_tmp_dir }}/csr_oldapi.csr -nameopt oneline,-space_eq"
|
||||
register: csr_oldapi_cn
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate old_API CSR (test - csr modulus)"
|
||||
command: '{{ openssl_binary }} req -noout -modulus -in {{ remote_tmp_dir }}/csr_oldapi.csr'
|
||||
ansible.builtin.command: '{{ openssl_binary }} req -noout -modulus -in {{ remote_tmp_dir }}/csr_oldapi.csr'
|
||||
register: csr_oldapi_modulus
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate old_API CSR (assert)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- csr_oldapi_cn.stdout.split('=')[-1] == 'www.ansible.com'
|
||||
- csr_oldapi_modulus.stdout == privatekey_modulus.stdout
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate invalid SAN (1/2)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- generate_csr_invalid_san is failed
|
||||
- "'Subject Alternative Name' in generate_csr_invalid_san.msg"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate OCSP Must Staple CSR (test - everything)"
|
||||
command: "{{ openssl_binary }} req -noout -in {{ remote_tmp_dir }}/csr_ocsp.csr -text"
|
||||
ansible.builtin.command: "{{ openssl_binary }} req -noout -in {{ remote_tmp_dir }}/csr_ocsp.csr -text"
|
||||
register: csr_ocsp
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate OCSP Must Staple CSR (assert)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "(csr_ocsp.stdout is search('\\s+TLS Feature:\\s*\\n\\s+status_request\\s+')) or
|
||||
(csr_ocsp.stdout is search('\\s+1.3.6.1.5.5.7.1.24:\\s*\\n\\s+0\\.\\.\\.\\.\\s+'))"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate OCSP Must Staple CSR (assert idempotency)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- csr_ocsp_idempotency is not changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate ECC CSR (test - privatekey's public key)"
|
||||
command: '{{ openssl_binary }} ec -pubout -in {{ remote_tmp_dir }}/privatekey2.pem'
|
||||
ansible.builtin.command: '{{ openssl_binary }} ec -pubout -in {{ remote_tmp_dir }}/privatekey2.pem'
|
||||
register: privatekey_ecc_key
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate ECC CSR (test - Common Name)"
|
||||
command: "{{ openssl_binary }} req -noout -subject -in {{ remote_tmp_dir }}/csr2.csr -nameopt oneline,-space_eq"
|
||||
ansible.builtin.command: "{{ openssl_binary }} req -noout -subject -in {{ remote_tmp_dir }}/csr2.csr -nameopt oneline,-space_eq"
|
||||
register: csr_ecc_cn
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate ECC CSR (test - CSR pubkey)"
|
||||
command: '{{ openssl_binary }} req -noout -pubkey -in {{ remote_tmp_dir }}/csr2.csr'
|
||||
ansible.builtin.command: '{{ openssl_binary }} req -noout -pubkey -in {{ remote_tmp_dir }}/csr2.csr'
|
||||
register: csr_ecc_pubkey
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate ECC CSR (assert)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- csr_ecc_cn.stdout.split('=')[-1] == 'www.ansible.com'
|
||||
- csr_ecc_pubkey.stdout == privatekey_ecc_key.stdout
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR (text common name - Common Name)"
|
||||
command: "{{ openssl_binary }} req -noout -subject -in {{ remote_tmp_dir }}/csr3.csr -nameopt oneline,-space_eq"
|
||||
ansible.builtin.command: "{{ openssl_binary }} req -noout -subject -in {{ remote_tmp_dir }}/csr3.csr -nameopt oneline,-space_eq"
|
||||
register: csr3_cn
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR (assert)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- csr3_cn.stdout.split('=')[-1] == 'This is for Ansible'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate country name idempotency and validation"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- country_idempotent_1 is changed
|
||||
- country_idempotent_2 is not changed
|
||||
@@ -128,13 +128,13 @@
|
||||
- country_fail_4 is failed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate idempotency of privatekey_passphrase"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- passphrase_1 is changed
|
||||
- passphrase_1_content is not changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate private key passphrase errors"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- passphrase_error_1 is failed
|
||||
- "'assphrase' in passphrase_error_1.msg or 'assword' in passphrase_error_1.msg"
|
||||
@@ -144,12 +144,12 @@
|
||||
- "'assphrase' in passphrase_error_3.msg or 'assword' in passphrase_error_3.msg or 'serializ' in passphrase_error_3.msg"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Verify that broken CSR will be regenerated"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output_broken is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Verify that subject key identifier handling works"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- subject_key_identifier_1 is changed
|
||||
- subject_key_identifier_2 is not changed
|
||||
@@ -159,7 +159,7 @@
|
||||
- subject_key_identifier_6 is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Verify that authority key identifier handling works"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- authority_key_identifier_1 is changed
|
||||
- authority_key_identifier_2 is not changed
|
||||
@@ -167,7 +167,7 @@
|
||||
- authority_key_identifier_4 is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Verify that authority cert issuer / serial number handling works"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- authority_cert_issuer_sn_1 is changed
|
||||
- authority_cert_issuer_sn_2 is not changed
|
||||
@@ -176,7 +176,7 @@
|
||||
- authority_cert_issuer_sn_5 is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check backup"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- csr_backup_1 is changed
|
||||
- csr_backup_1.backup_file is undefined
|
||||
@@ -191,7 +191,7 @@
|
||||
- csr_backup_4.csr is none
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check CSR with everything"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- everything_1 is changed
|
||||
- everything_2 is not changed
|
||||
@@ -262,7 +262,7 @@
|
||||
- everything_info.name_constraints_critical == true
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check CSR with everything"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- everything_info.authority_cert_issuer == [
|
||||
"DNS:ca.example.org",
|
||||
@@ -305,7 +305,7 @@
|
||||
]
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Verify Ed25519 and Ed448 tests"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- generate_csr_ed25519_ed448 is succeeded
|
||||
- generate_csr_ed25519_ed448.results[0] is changed
|
||||
@@ -316,7 +316,7 @@
|
||||
when: select_crypto_backend == 'cryptography' and generate_csr_ed25519_ed448_privatekey is not failed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Verify CRL distribution endpoints"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- crl_distribution_endpoints_1 is changed
|
||||
- crl_distribution_endpoints_2 is not changed
|
||||
|
||||
@@ -3,31 +3,31 @@
|
||||
# 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
|
||||
|
||||
- debug:
|
||||
- ansible.builtin.debug:
|
||||
msg: "Executing tests with backend {{ select_crypto_backend }}"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get CSR info"
|
||||
openssl_csr_info:
|
||||
community.crypto.openssl_csr_info:
|
||||
path: '{{ remote_tmp_dir }}/csr_1.csr'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: result
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get CSR info (IDNA encoding)"
|
||||
openssl_csr_info:
|
||||
community.crypto.openssl_csr_info:
|
||||
path: '{{ remote_tmp_dir }}/csr_1.csr'
|
||||
name_encoding: idna
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: result_idna
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get CSR info (Unicode encoding)"
|
||||
openssl_csr_info:
|
||||
community.crypto.openssl_csr_info:
|
||||
path: '{{ remote_tmp_dir }}/csr_1.csr'
|
||||
name_encoding: unicode
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: result_unicode
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check whether subject and extensions behaves as expected"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.subject.organizationalUnitName == 'ACME Department'
|
||||
- "['organizationalUnitName', 'Crypto Department'] in result.subject_ordered"
|
||||
@@ -54,7 +54,7 @@
|
||||
- result.extensions_by_oid['2.5.29.37'].value == 'MHQGCCsGAQUFBwMBBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDBAYIKwYBBQUHAwgGCCsGAQUFBwMJBgRVHSUABggrBgEFBQcBAwYIKwYBBQUHAwoGCCsGAQUFBwMHBggrBgEFBQcBAg=='
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check SubjectKeyIdentifier and AuthorityKeyIdentifier"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.subject_key_identifier == "00:11:22:33"
|
||||
- result.authority_key_identifier == "44:55:66:77"
|
||||
@@ -70,18 +70,18 @@
|
||||
- "IP:1.2.3.4"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read CSR"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/csr_1.csr'
|
||||
register: slurp
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get CSR info directly"
|
||||
openssl_csr_info:
|
||||
community.crypto.openssl_csr_info:
|
||||
content: '{{ slurp.content | b64decode }}'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: result_direct
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Compare output of direct and loaded info"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- >-
|
||||
(result | dict2items | rejectattr("key", "equalto", "warnings") | list | items2dict)
|
||||
@@ -89,19 +89,19 @@
|
||||
(result_direct | dict2items | rejectattr("key", "equalto", "warnings") | list | items2dict)
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get CSR info"
|
||||
openssl_csr_info:
|
||||
community.crypto.openssl_csr_info:
|
||||
path: '{{ remote_tmp_dir }}/csr_2.csr'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: result
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get CSR info"
|
||||
openssl_csr_info:
|
||||
community.crypto.openssl_csr_info:
|
||||
path: '{{ remote_tmp_dir }}/csr_3.csr'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: result
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check AuthorityKeyIdentifier"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.authority_key_identifier is none
|
||||
- result.authority_cert_issuer == expected_authority_cert_issuer
|
||||
@@ -112,13 +112,13 @@
|
||||
- "IP:1.2.3.4"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Get CSR info"
|
||||
openssl_csr_info:
|
||||
community.crypto.openssl_csr_info:
|
||||
path: '{{ remote_tmp_dir }}/csr_4.csr'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: result
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Check AuthorityKeyIdentifier"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result.authority_key_identifier == "44:55:66:77"
|
||||
- result.authority_cert_issuer is none
|
||||
|
||||
@@ -9,24 +9,24 @@
|
||||
####################################################################
|
||||
|
||||
- name: Make sure the Python idna library is installed
|
||||
pip:
|
||||
ansible.builtin.pip:
|
||||
name: idna
|
||||
state: present
|
||||
|
||||
- name: Generate privatekey
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- name: Generate privatekey with password
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
passphrase: hunter2
|
||||
select_crypto_backend: cryptography
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- name: Generate CSR 1
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_1.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -95,7 +95,7 @@
|
||||
- "IP:1.2.3.4"
|
||||
|
||||
- name: Generate CSR 2
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_2.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
privatekey_passphrase: hunter2
|
||||
@@ -104,7 +104,7 @@
|
||||
- "CA:TRUE"
|
||||
|
||||
- name: Generate CSR 3
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_3.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
useCommonNameForSAN: false
|
||||
@@ -122,14 +122,14 @@
|
||||
- "IP:1.2.3.4"
|
||||
|
||||
- name: Generate CSR 4
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/csr_4.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
useCommonNameForSAN: false
|
||||
authority_key_identifier: "44:55:66:77"
|
||||
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (check mode)"
|
||||
openssl_csr_pipe:
|
||||
community.crypto.openssl_csr_pipe:
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
commonName: www.ansible.com
|
||||
@@ -18,7 +18,7 @@
|
||||
register: generate_csr_check
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR"
|
||||
openssl_csr_pipe:
|
||||
community.crypto.openssl_csr_pipe:
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
commonName: www.ansible.com
|
||||
@@ -26,7 +26,7 @@
|
||||
register: generate_csr
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (idempotent)"
|
||||
openssl_csr_pipe:
|
||||
community.crypto.openssl_csr_pipe:
|
||||
content: "{{ generate_csr.csr }}"
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -35,7 +35,7 @@
|
||||
register: generate_csr_idempotent
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (idempotent, check mode)"
|
||||
openssl_csr_pipe:
|
||||
community.crypto.openssl_csr_pipe:
|
||||
content: "{{ generate_csr.csr }}"
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -45,7 +45,7 @@
|
||||
register: generate_csr_idempotent_check
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (changed)"
|
||||
openssl_csr_pipe:
|
||||
community.crypto.openssl_csr_pipe:
|
||||
content: "{{ generate_csr.csr }}"
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -54,7 +54,7 @@
|
||||
register: generate_csr_changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate CSR (changed, check mode)"
|
||||
openssl_csr_pipe:
|
||||
community.crypto.openssl_csr_pipe:
|
||||
content: "{{ generate_csr.csr }}"
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey.pem'
|
||||
subject:
|
||||
@@ -64,29 +64,29 @@
|
||||
register: generate_csr_changed_check
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR (test - privatekey modulus)"
|
||||
command: '{{ openssl_binary }} rsa -noout -modulus -in {{ remote_tmp_dir }}/privatekey.pem'
|
||||
ansible.builtin.command: '{{ openssl_binary }} rsa -noout -modulus -in {{ remote_tmp_dir }}/privatekey.pem'
|
||||
register: privatekey_modulus
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR (test - Common Name)"
|
||||
command: "{{ openssl_binary }} req -noout -subject -in /dev/stdin -nameopt oneline,-space_eq"
|
||||
ansible.builtin.command: "{{ openssl_binary }} req -noout -subject -in /dev/stdin -nameopt oneline,-space_eq"
|
||||
args:
|
||||
stdin: "{{ generate_csr.csr }}"
|
||||
register: csr_cn
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR (test - csr modulus)"
|
||||
command: '{{ openssl_binary }} req -noout -modulus -in /dev/stdin'
|
||||
ansible.builtin.command: '{{ openssl_binary }} req -noout -modulus -in /dev/stdin'
|
||||
args:
|
||||
stdin: "{{ generate_csr.csr }}"
|
||||
register: csr_modulus
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR (assert)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- csr_cn.stdout.split('=')[-1] == 'www.ansible.com'
|
||||
- csr_modulus.stdout == privatekey_modulus.stdout
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate CSR (check mode, idempotency)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- generate_csr_check is changed
|
||||
- generate_csr is changed
|
||||
|
||||
@@ -9,18 +9,18 @@
|
||||
####################################################################
|
||||
|
||||
- name: Prepare private key for backend autodetection test
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_backend_selection.pem'
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
- name: Run module with backend autodetection
|
||||
openssl_csr_pipe:
|
||||
community.crypto.openssl_csr_pipe:
|
||||
privatekey_path: '{{ remote_tmp_dir }}/privatekey_backend_selection.pem'
|
||||
subject:
|
||||
commonName: www.ansible.com
|
||||
|
||||
- block:
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
# The tests for this module generate unsafe parameters for testing purposes;
|
||||
# otherwise tests would be too slow. Use sizes of at least 2048 in production!
|
||||
- name: "[{{ select_crypto_backend }}] Generate parameter (check mode)"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
size: 768
|
||||
path: '{{ remote_tmp_dir }}/dh768.pem'
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
@@ -15,7 +15,7 @@
|
||||
register: dhparam_check
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Generate parameter"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
size: 768
|
||||
path: '{{ remote_tmp_dir }}/dh768.pem'
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
@@ -23,7 +23,7 @@
|
||||
register: dhparam
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Don't regenerate parameters with no change (check mode)"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
size: 768
|
||||
path: '{{ remote_tmp_dir }}/dh768.pem'
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
@@ -32,7 +32,7 @@
|
||||
register: dhparam_changed_check
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Don't regenerate parameters with no change"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
size: 768
|
||||
path: '{{ remote_tmp_dir }}/dh768.pem'
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
@@ -40,32 +40,32 @@
|
||||
register: dhparam_changed
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Generate parameters with size option"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
path: '{{ remote_tmp_dir }}/dh512.pem'
|
||||
size: 512
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Don't regenerate parameters with size option and no change"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
path: '{{ remote_tmp_dir }}/dh512.pem'
|
||||
size: 512
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
register: dhparam_changed_512
|
||||
|
||||
- copy:
|
||||
- ansible.builtin.copy:
|
||||
src: '{{ remote_tmp_dir }}/dh768.pem'
|
||||
remote_src: true
|
||||
dest: '{{ remote_tmp_dir }}/dh512.pem'
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Re-generate if size is different"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
path: '{{ remote_tmp_dir }}/dh512.pem'
|
||||
size: 512
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
register: dhparam_changed_to_512
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Force re-generate parameters with size option"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
path: '{{ remote_tmp_dir }}/dh512.pem'
|
||||
size: 512
|
||||
force: true
|
||||
@@ -73,11 +73,11 @@
|
||||
register: dhparam_changed_force
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Create broken params"
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
dest: "{{ remote_tmp_dir }}/dhbroken.pem"
|
||||
content: "broken"
|
||||
- name: "[{{ select_crypto_backend }}] Regenerate broken params"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
path: '{{ remote_tmp_dir }}/dhbroken.pem'
|
||||
size: 512
|
||||
force: true
|
||||
@@ -85,21 +85,21 @@
|
||||
register: output_broken
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Generate params"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
path: '{{ remote_tmp_dir }}/dh_backup.pem'
|
||||
size: 512
|
||||
backup: true
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
register: dhparam_backup_1
|
||||
- name: "[{{ select_crypto_backend }}] Generate params (idempotent)"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
path: '{{ remote_tmp_dir }}/dh_backup.pem'
|
||||
size: 512
|
||||
backup: true
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
register: dhparam_backup_2
|
||||
- name: "[{{ select_crypto_backend }}] Generate params (change)"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
path: '{{ remote_tmp_dir }}/dh_backup.pem'
|
||||
size: 512
|
||||
force: true
|
||||
@@ -107,7 +107,7 @@
|
||||
select_crypto_backend: "{{ select_crypto_backend }}"
|
||||
register: dhparam_backup_3
|
||||
- name: "[{{ select_crypto_backend }}] Generate params (remove)"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
path: '{{ remote_tmp_dir }}/dh_backup.pem'
|
||||
state: absent
|
||||
backup: true
|
||||
@@ -115,7 +115,7 @@
|
||||
return_content: true
|
||||
register: dhparam_backup_4
|
||||
- name: "[{{ select_crypto_backend }}] Generate params (remove, idempotent)"
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
path: '{{ remote_tmp_dir }}/dh_backup.pem'
|
||||
state: absent
|
||||
backup: true
|
||||
|
||||
@@ -12,35 +12,35 @@
|
||||
# otherwise tests would be too slow. Use sizes of at least 2048 in production!
|
||||
|
||||
- name: Run module with backend autodetection
|
||||
openssl_dhparam:
|
||||
community.crypto.openssl_dhparam:
|
||||
path: '{{ remote_tmp_dir }}/dh_backend_selection.pem'
|
||||
size: 512
|
||||
|
||||
- block:
|
||||
- name: Running tests with OpenSSL backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
|
||||
- include_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.include_tasks: ../tests/validate.yml
|
||||
|
||||
vars:
|
||||
select_crypto_backend: openssl
|
||||
# when: openssl_version is version('1.0.0', '>=')
|
||||
|
||||
- name: Remove output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: absent
|
||||
|
||||
- name: Re-create output directory
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: directory
|
||||
|
||||
- block:
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
|
||||
- include_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.include_tasks: ../tests/validate.yml
|
||||
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
@@ -4,31 +4,31 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Validate generated params"
|
||||
command: '{{ openssl_binary }} dhparam -in {{ remote_tmp_dir }}/{{ item }}.pem -noout -check'
|
||||
ansible.builtin.command: '{{ openssl_binary }} dhparam -in {{ remote_tmp_dir }}/{{ item }}.pem -noout -check'
|
||||
with_items:
|
||||
- dh768
|
||||
- dh512
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Get bit size of 768"
|
||||
shell: '{{ openssl_binary }} dhparam -noout -in {{ remote_tmp_dir }}/dh768.pem -text | head -n1 | sed -ne "s@.*(\\([[:digit:]]\{1,\}\\) bit).*@\\1@p"'
|
||||
ansible.builtin.shell: '{{ openssl_binary }} dhparam -noout -in {{ remote_tmp_dir }}/dh768.pem -text | head -n1 | sed -ne "s@.*(\\([[:digit:]]\{1,\}\\) bit).*@\\1@p"'
|
||||
register: bit_size_dhparam
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Check bit size of default"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- bit_size_dhparam.stdout == "768"
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Get bit size of 512"
|
||||
shell: '{{ openssl_binary }} dhparam -noout -in {{ remote_tmp_dir }}/dh512.pem -text | head -n1 | sed -ne "s@.*(\\([[:digit:]]\{1,\}\\) bit).*@\\1@p"'
|
||||
ansible.builtin.shell: '{{ openssl_binary }} dhparam -noout -in {{ remote_tmp_dir }}/dh512.pem -text | head -n1 | sed -ne "s@.*(\\([[:digit:]]\{1,\}\\) bit).*@\\1@p"'
|
||||
register: bit_size_dhparam_512
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Check bit size of default"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- bit_size_dhparam_512.stdout == "512"
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Check if changed works correctly"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- dhparam_check is changed
|
||||
- dhparam is changed
|
||||
@@ -39,23 +39,23 @@
|
||||
- dhparam_changed_force is changed
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Read result"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/dh768.pem'
|
||||
register: slurp
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Make sure correct values are returned"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- dhparam.dhparams == (slurp.content | b64decode)
|
||||
- dhparam.dhparams == dhparam_changed.dhparams
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Verify that broken params will be regenerated"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output_broken is changed
|
||||
|
||||
- name: "[{{ select_crypto_backend }}] Check backup"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- dhparam_backup_1 is changed
|
||||
- dhparam_backup_1.backup_file is undefined
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
- block:
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file (check mode)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -17,7 +17,7 @@
|
||||
register: p12_standard_check
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -28,7 +28,7 @@
|
||||
register: p12_standard
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file again, idempotency (check mode)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -40,7 +40,7 @@
|
||||
register: p12_standard_idempotency_check
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file again, idempotency"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -51,7 +51,7 @@
|
||||
register: p12_standard_idempotency
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file again, idempotency (empty other_certificates)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -63,17 +63,17 @@
|
||||
register: p12_standard_idempotency_no_certs
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read ansible_pkey1.pem"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/ansible_pkey1.pem'
|
||||
register: ansible_pkey_content
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read ansible1.crt"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/ansible1.crt'
|
||||
register: ansible_crt_content
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file again, idempotency (private key from file)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -84,18 +84,18 @@
|
||||
register: p12_standard_idempotency_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read ansible.p12"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
register: ansible_p12_content
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate PKCS#12"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- p12_standard.pkcs12 == ansible_p12_content.content
|
||||
- p12_standard_idempotency.pkcs12 == p12_standard.pkcs12
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file (force)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -106,7 +106,7 @@
|
||||
register: p12_force
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file (force + change mode)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -118,7 +118,7 @@
|
||||
register: p12_force_and_mode
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Dump PKCS#12"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
src: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
path: '{{ remote_tmp_dir }}/ansible_parse.pem'
|
||||
@@ -127,7 +127,7 @@
|
||||
register: p12_dumped
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Dump PKCS#12 file again, idempotency"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
src: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
path: '{{ remote_tmp_dir }}/ansible_parse.pem'
|
||||
@@ -136,7 +136,7 @@
|
||||
register: p12_dumped_idempotency
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Dump PKCS#12, check mode"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
src: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
path: '{{ remote_tmp_dir }}/ansible_parse.pem'
|
||||
@@ -146,7 +146,7 @@
|
||||
register: p12_dumped_check_mode
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file with multiple certs and passphrase"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_multi_certs.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -160,7 +160,7 @@
|
||||
register: p12_multiple_certs
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read ansible2.crt / ansible3.crt.crt"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ item }}"
|
||||
loop:
|
||||
- "{{ remote_tmp_dir ~ '/ansible2.crt' }}"
|
||||
@@ -168,7 +168,7 @@
|
||||
register: ansible_other_content
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file with multiple certs and passphrase, again (idempotency)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_multi_certs.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -182,7 +182,7 @@
|
||||
register: p12_multiple_certs_idempotency
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Dump PKCS#12 with multiple certs and passphrase"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
src: '{{ remote_tmp_dir }}/ansible_multi_certs.p12'
|
||||
path: '{{ remote_tmp_dir }}/ansible_parse_multi_certs.pem'
|
||||
@@ -191,7 +191,7 @@
|
||||
state: present
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file (password fail 1)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_pw1.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -203,7 +203,7 @@
|
||||
register: passphrase_error_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file (password fail 2)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_pw2.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -215,7 +215,7 @@
|
||||
register: passphrase_error_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file (password fail 3)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_pw3.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -226,7 +226,7 @@
|
||||
register: passphrase_error_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file, no privatekey"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_no_pkey.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -235,12 +235,12 @@
|
||||
register: p12_no_pkey
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create broken PKCS#12"
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
dest: '{{ remote_tmp_dir }}/broken.p12'
|
||||
content: broken
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate broken PKCS#12"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/broken.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -252,7 +252,7 @@
|
||||
register: output_broken
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_backup.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -263,7 +263,7 @@
|
||||
register: p12_backup_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file (idempotent)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_backup.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -274,7 +274,7 @@
|
||||
register: p12_backup_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file (change)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_backup.p12'
|
||||
friendly_name: abra
|
||||
@@ -286,7 +286,7 @@
|
||||
register: p12_backup_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file (remove)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_backup.p12'
|
||||
state: absent
|
||||
@@ -295,7 +295,7 @@
|
||||
register: p12_backup_4
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file (remove, idempotent)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_backup.p12'
|
||||
state: absent
|
||||
@@ -303,7 +303,7 @@
|
||||
register: p12_backup_5
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate 'empty' PKCS#12 file"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_empty.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -315,7 +315,7 @@
|
||||
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate 'empty' PKCS#12 file (idempotent)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_empty.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -326,7 +326,7 @@
|
||||
register: p12_empty_idem
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate 'empty' PKCS#12 file (idempotent, concatenated other certificates)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_empty.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -337,12 +337,12 @@
|
||||
register: p12_empty_concat_idem
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read ansible23.crt"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ remote_tmp_dir ~ '/ansible23.crt' }}"
|
||||
register: ansible_other_content_concat
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate 'empty' PKCS#12 file (idempotent, concatenated other certificates)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_empty.p12'
|
||||
friendly_name: abracadabra
|
||||
@@ -353,14 +353,14 @@
|
||||
register: p12_empty_concat_content_idem
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate 'empty' PKCS#12 file (parse)"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
src: '{{ remote_tmp_dir }}/ansible_empty.p12'
|
||||
path: '{{ remote_tmp_dir }}/ansible_empty.pem'
|
||||
action: parse
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate PKCS#12 file passphrase and compatibility encryption"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
path: '{{ remote_tmp_dir }}/ansible_compatibility2022.p12'
|
||||
friendly_name: compat_fn
|
||||
@@ -378,11 +378,11 @@
|
||||
- select_crypto_backend == 'cryptography'
|
||||
- cryptography_version is version('38.0.0', '>=')
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
|
||||
always:
|
||||
- name: "({{ select_crypto_backend }}) Delete PKCS#12 file"
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
state: absent
|
||||
path: '{{ remote_tmp_dir }}/{{ item }}.p12'
|
||||
loop:
|
||||
|
||||
@@ -10,26 +10,26 @@
|
||||
|
||||
- block:
|
||||
- name: Generate private keys
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/ansible_pkey{{ item }}.pem'
|
||||
size: '{{ default_rsa_key_size_certificates }}'
|
||||
loop: "{{ range(1, 4) | list }}"
|
||||
|
||||
- name: Generate privatekey with password
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
passphrase: hunter2
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- name: Generate CSRs
|
||||
openssl_csr:
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ remote_tmp_dir }}/ansible{{ item }}.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/ansible_pkey{{ item }}.pem'
|
||||
commonName: www{{ item }}.ansible.com
|
||||
loop: "{{ range(1, 4) | list }}"
|
||||
|
||||
- name: Generate certificate
|
||||
x509_certificate:
|
||||
community.crypto.x509_certificate:
|
||||
path: '{{ remote_tmp_dir }}/ansible{{ item }}.crt'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/ansible_pkey{{ item }}.pem'
|
||||
csr_path: '{{ remote_tmp_dir }}/ansible{{ item }}.csr'
|
||||
@@ -37,7 +37,7 @@
|
||||
loop: "{{ range(1, 4) | list }}"
|
||||
|
||||
- name: Read files
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ item }}'
|
||||
loop:
|
||||
- "{{ remote_tmp_dir ~ '/ansible2.crt' }}"
|
||||
@@ -45,12 +45,12 @@
|
||||
register: slurp
|
||||
|
||||
- name: Generate concatenated PEM file
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
dest: '{{ remote_tmp_dir }}/ansible23.crt'
|
||||
content: '{{ slurp.results[0].content | b64decode }}{{ slurp.results[1].content | b64decode }}'
|
||||
|
||||
- name: Generate PKCS#12 file with backend autodetection
|
||||
openssl_pkcs12:
|
||||
community.crypto.openssl_pkcs12:
|
||||
path: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
friendly_name: abracadabra
|
||||
privatekey_path: '{{ remote_tmp_dir }}/ansible_pkey1.pem'
|
||||
@@ -58,12 +58,12 @@
|
||||
state: present
|
||||
|
||||
- name: Delete result
|
||||
file:
|
||||
ansible.builtin.file:
|
||||
path: '{{ remote_tmp_dir }}/ansible.p12'
|
||||
state: absent
|
||||
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
|
||||
@@ -4,19 +4,19 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: '({{ select_crypto_backend }}) Validate PKCS#12'
|
||||
command: "{{ openssl_binary }} pkcs12 -info -in {{ remote_tmp_dir }}/ansible.p12 -nodes -passin pass:''"
|
||||
ansible.builtin.command: "{{ openssl_binary }} pkcs12 -info -in {{ remote_tmp_dir }}/ansible.p12 -nodes -passin pass:''"
|
||||
register: p12
|
||||
|
||||
- name: '({{ select_crypto_backend }}) Validate PKCS#12 with no private key'
|
||||
command: "{{ openssl_binary }} pkcs12 -info -in {{ remote_tmp_dir }}/ansible_no_pkey.p12 -nodes -passin pass:''"
|
||||
ansible.builtin.command: "{{ openssl_binary }} pkcs12 -info -in {{ remote_tmp_dir }}/ansible_no_pkey.p12 -nodes -passin pass:''"
|
||||
register: p12_validate_no_pkey
|
||||
|
||||
- name: '({{ select_crypto_backend }}) Validate PKCS#12 with multiple certs'
|
||||
shell: "{{ openssl_binary }} pkcs12 -info -in {{ remote_tmp_dir }}/ansible_multi_certs.p12 -nodes -passin pass:'hunter3' | grep subject"
|
||||
ansible.builtin.shell: "{{ openssl_binary }} pkcs12 -info -in {{ remote_tmp_dir }}/ansible_multi_certs.p12 -nodes -passin pass:'hunter3' | grep subject"
|
||||
register: p12_validate_multi_certs
|
||||
|
||||
- name: '({{ select_crypto_backend }}) Validate PKCS#12 (assert)'
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- p12_standard_check is changed
|
||||
- p12_standard is changed
|
||||
@@ -40,7 +40,7 @@
|
||||
- "'www3.' in p12_validate_multi_certs.stdout"
|
||||
|
||||
- name: '({{ select_crypto_backend }}) Check passphrase on private key'
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- passphrase_error_1 is failed
|
||||
- "'assphrase' in passphrase_error_1.msg or 'assword' in passphrase_error_1.msg"
|
||||
@@ -50,12 +50,12 @@
|
||||
- "'assphrase' in passphrase_error_3.msg or 'assword' in passphrase_error_3.msg or 'serializ' in passphrase_error_3.msg"
|
||||
|
||||
- name: '({{ select_crypto_backend }}) Verify that broken PKCS#12 will be regenerated'
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output_broken is changed
|
||||
|
||||
- name: '({{ select_crypto_backend }}) Check backup'
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- p12_backup_1 is changed
|
||||
- p12_backup_1.backup_file is undefined
|
||||
@@ -70,7 +70,7 @@
|
||||
- p12_backup_4.pkcs12 is none
|
||||
|
||||
- name: '({{ select_crypto_backend }}) Read files'
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ item }}'
|
||||
loop:
|
||||
- "{{ remote_tmp_dir ~ '/ansible_empty.pem' }}"
|
||||
@@ -79,12 +79,12 @@
|
||||
register: slurp
|
||||
|
||||
- name: '({{ select_crypto_backend }}) Load "empty" file'
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
empty_contents: "{{ slurp.results[0].content | b64decode }}"
|
||||
empty_expected: "{{ (slurp.results[1].content | b64decode) ~ (slurp.results[2].content | b64decode) }}"
|
||||
|
||||
- name: '({{ select_crypto_backend }}) Check "empty" file'
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- p12_empty is changed
|
||||
- p12_empty_idem is not changed
|
||||
@@ -98,11 +98,11 @@
|
||||
- cryptography_version is version('38.0.0', '>=')
|
||||
block:
|
||||
- name: '({{ select_crypto_backend }}) Validate PKCS#12 with compatibility2022 settings'
|
||||
command: "{{ openssl_binary }} pkcs12 -info -in {{ remote_tmp_dir }}/ansible_compatibility2022.p12 -nodes -passin pass:'magicpassword'"
|
||||
ansible.builtin.command: "{{ openssl_binary }} pkcs12 -info -in {{ remote_tmp_dir }}/ansible_compatibility2022.p12 -nodes -passin pass:'magicpassword'"
|
||||
register: p12_validate_compatibility2022
|
||||
|
||||
- name: '({{ select_crypto_backend }}) Check PKCS#12 with compatibility2022 settings'
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- p12_compatibility2022 is changed
|
||||
- >-
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey1 - standard (check mode)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey1.pem'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
return_content: true
|
||||
@@ -12,14 +12,14 @@
|
||||
register: privatekey1_check
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey1 - standard"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey1.pem'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
return_content: true
|
||||
register: privatekey1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey1 - standard (idempotence, check mode)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey1.pem'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
return_content: true
|
||||
@@ -27,33 +27,33 @@
|
||||
register: privatekey1_idempotence_check
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey1 - standard (idempotence)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey1.pem'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
return_content: true
|
||||
register: privatekey1_idempotence
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey2 - size 2048"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey2.pem'
|
||||
size: 2048
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey3 - type DSA"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey3.pem'
|
||||
type: DSA
|
||||
size: 3072
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey4 - standard"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey4.pem'
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Delete privatekey4 - standard"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
state: absent
|
||||
path: '{{ remote_tmp_dir }}/privatekey4.pem'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
@@ -61,14 +61,14 @@
|
||||
register: privatekey4_delete
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Delete privatekey4 - standard (idempotence)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
state: absent
|
||||
path: '{{ remote_tmp_dir }}/privatekey4.pem'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: privatekey4_delete_idempotence
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey5 - standard - with passphrase"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey5.pem'
|
||||
passphrase: ansible
|
||||
cipher: auto
|
||||
@@ -76,7 +76,7 @@
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey5 - standard - idempotence"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey5.pem'
|
||||
passphrase: ansible
|
||||
cipher: auto
|
||||
@@ -85,13 +85,13 @@
|
||||
register: privatekey5_idempotence
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey6 - standard - with non-ASCII passphrase"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey6.pem'
|
||||
passphrase: ànsïblé
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
ecc_types:
|
||||
- curve: secp384r1
|
||||
openssl_name: secp384r1
|
||||
@@ -152,7 +152,7 @@
|
||||
min_cryptography_version: "0.5"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Test ECC key generation"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey-{{ item.curve }}.pem'
|
||||
type: ECC
|
||||
curve: "{{ item.curve }}"
|
||||
@@ -166,7 +166,7 @@
|
||||
register: privatekey_ecc_generate
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Test ECC key generation (idempotency)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey-{{ item.curve }}.pem'
|
||||
type: ECC
|
||||
curve: "{{ item.curve }}"
|
||||
@@ -181,7 +181,7 @@
|
||||
|
||||
- block:
|
||||
- name: "({{ select_crypto_backend }}) Test other type generation"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey-{{ item.type }}.pem'
|
||||
type: "{{ item.type }}"
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
@@ -193,7 +193,7 @@
|
||||
register: privatekey_t1_generate
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Test other type generation (idempotency)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey-{{ item.type }}.pem'
|
||||
type: "{{ item.type }}"
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
@@ -217,7 +217,7 @@
|
||||
min_version: '2.6'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey with passphrase"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
passphrase: hunter2
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -226,7 +226,7 @@
|
||||
register: passphrase_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey with passphrase (idempotent)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
passphrase: hunter2
|
||||
cipher: auto
|
||||
@@ -236,7 +236,7 @@
|
||||
register: passphrase_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate privatekey without passphrase"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
@@ -244,7 +244,7 @@
|
||||
register: passphrase_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate privatekey without passphrase (idempotent)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
@@ -252,7 +252,7 @@
|
||||
register: passphrase_4
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate privatekey with passphrase"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
passphrase: hunter2
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -261,18 +261,18 @@
|
||||
register: passphrase_5
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Create broken key"
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
dest: "{{ remote_tmp_dir }}/broken"
|
||||
content: "broken"
|
||||
- name: "({{ select_crypto_backend }}) Regenerate broken key"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/broken.pem'
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: output_broken
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Remove module"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
passphrase: hunter2
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -282,7 +282,7 @@
|
||||
register: remove_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Remove module (idempotent)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekeypw.pem'
|
||||
passphrase: hunter2
|
||||
cipher: auto
|
||||
@@ -293,7 +293,7 @@
|
||||
register: remove_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_mode (mode 0400)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_mode.pem'
|
||||
mode: '0400'
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -301,7 +301,7 @@
|
||||
register: privatekey_mode_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Stat for privatekey_mode"
|
||||
stat:
|
||||
ansible.builtin.stat:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_mode.pem'
|
||||
register: privatekey_mode_1_stat
|
||||
|
||||
@@ -312,7 +312,7 @@
|
||||
register: privatekey_mode_1_fileinfo
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_mode (mode 0400, idempotency)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_mode.pem'
|
||||
mode: '0400'
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -320,7 +320,7 @@
|
||||
register: privatekey_mode_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_mode (mode 0400, force)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_mode.pem'
|
||||
mode: '0400'
|
||||
force: true
|
||||
@@ -329,7 +329,7 @@
|
||||
register: privatekey_mode_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Stat for privatekey_mode"
|
||||
stat:
|
||||
ansible.builtin.stat:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_mode.pem'
|
||||
register: privatekey_mode_3_stat
|
||||
|
||||
@@ -340,7 +340,7 @@
|
||||
|
||||
- block:
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_1 - auto format"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_1.pem'
|
||||
format: auto
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -348,7 +348,7 @@
|
||||
register: privatekey_fmt_1_step_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_1 - auto format (idempotent)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_1.pem'
|
||||
format: auto
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -356,7 +356,7 @@
|
||||
register: privatekey_fmt_1_step_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_1 - PKCS1 format"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_1.pem'
|
||||
format: pkcs1
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -364,7 +364,7 @@
|
||||
register: privatekey_fmt_1_step_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_1 - PKCS8 format"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_1.pem'
|
||||
format: pkcs8
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -372,7 +372,7 @@
|
||||
register: privatekey_fmt_1_step_4
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_1 - PKCS8 format (idempotent)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_1.pem'
|
||||
format: pkcs8
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -380,7 +380,7 @@
|
||||
register: privatekey_fmt_1_step_5
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_1 - auto format (ignore)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_1.pem'
|
||||
format: auto_ignore
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -388,7 +388,7 @@
|
||||
register: privatekey_fmt_1_step_6
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_1 - auto format (no ignore)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_1.pem'
|
||||
format: auto
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -396,7 +396,7 @@
|
||||
register: privatekey_fmt_1_step_7
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_1 - raw format (fail)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_1.pem'
|
||||
format: raw
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -405,13 +405,13 @@
|
||||
register: privatekey_fmt_1_step_8
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_1 - PKCS8 format (convert)"
|
||||
openssl_privatekey_info:
|
||||
community.crypto.openssl_privatekey_info:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_1.pem'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: privatekey_fmt_1_step_9_before
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_1 - PKCS8 format (convert)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_1.pem'
|
||||
format: pkcs8
|
||||
format_mismatch: convert
|
||||
@@ -420,7 +420,7 @@
|
||||
register: privatekey_fmt_1_step_9
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_1 - PKCS8 format (convert)"
|
||||
openssl_privatekey_info:
|
||||
community.crypto.openssl_privatekey_info:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_1.pem'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: privatekey_fmt_1_step_9_after
|
||||
@@ -429,7 +429,7 @@
|
||||
|
||||
- block:
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_2 - PKCS8 format"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_2.pem'
|
||||
type: X448
|
||||
format: pkcs8
|
||||
@@ -438,7 +438,7 @@
|
||||
register: privatekey_fmt_2_step_1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_2 - PKCS8 format (idempotent)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_2.pem'
|
||||
type: X448
|
||||
format: pkcs8
|
||||
@@ -447,7 +447,7 @@
|
||||
register: privatekey_fmt_2_step_2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_2 - raw format"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_2.pem'
|
||||
type: X448
|
||||
format: raw
|
||||
@@ -457,19 +457,19 @@
|
||||
register: privatekey_fmt_2_step_3
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read privatekey_fmt_2.pem"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ remote_tmp_dir }}/privatekey_fmt_2.pem"
|
||||
ignore_errors: true
|
||||
register: content
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_2 - verify that returned content is base64 encoded"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey_fmt_2_step_3.privatekey == content.content
|
||||
when: privatekey_fmt_2_step_1 is not failed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_2 - raw format (idempotent)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_2.pem'
|
||||
type: X448
|
||||
format: raw
|
||||
@@ -479,19 +479,19 @@
|
||||
register: privatekey_fmt_2_step_4
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read privatekey_fmt_2.pem"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ remote_tmp_dir }}/privatekey_fmt_2.pem"
|
||||
ignore_errors: true
|
||||
register: content
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_2 - verify that returned content is base64 encoded"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey_fmt_2_step_4.privatekey == content.content
|
||||
when: privatekey_fmt_2_step_1 is not failed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_2 - auto format (ignore)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_2.pem'
|
||||
type: X448
|
||||
format: auto_ignore
|
||||
@@ -501,19 +501,19 @@
|
||||
register: privatekey_fmt_2_step_5
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read privatekey_fmt_2.pem"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: "{{ remote_tmp_dir }}/privatekey_fmt_2.pem"
|
||||
ignore_errors: true
|
||||
register: content
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_2 - verify that returned content is base64 encoded"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey_fmt_2_step_5.privatekey == content.content
|
||||
when: privatekey_fmt_2_step_1 is not failed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_2 - auto format (no ignore)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_fmt_2.pem'
|
||||
type: X448
|
||||
format: auto
|
||||
@@ -523,13 +523,13 @@
|
||||
register: privatekey_fmt_2_step_6
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read private key"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/privatekey_fmt_2.pem'
|
||||
register: slurp
|
||||
when: privatekey_fmt_2_step_1 is not failed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Generate privatekey_fmt_2 - verify that returned content is not base64 encoded"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey_fmt_2_step_6.privatekey == (slurp.content | b64decode)
|
||||
when: privatekey_fmt_2_step_1 is not failed
|
||||
@@ -540,14 +540,14 @@
|
||||
# Test regenerate option
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - setup simple keys"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
type: RSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
loop: "{{ regenerate_values }}"
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - setup password protected keys"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-b-{{ item }}.pem'
|
||||
type: RSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -556,14 +556,14 @@
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
loop: "{{ regenerate_values }}"
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - setup broken keys"
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
dest: '{{ remote_tmp_dir }}/regenerate-c-{{ item }}.pem'
|
||||
content: 'broken key'
|
||||
mode: '0700'
|
||||
loop: "{{ regenerate_values }}"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - modify broken keys (check mode)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-c-{{ item }}.pem'
|
||||
type: RSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -573,7 +573,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is failed
|
||||
- "'Unable to read the key. The key is protected with a another passphrase / no passphrase or broken. Will not proceed.' in result.results[0].msg or 'Cannot load raw key' in result.results[0].msg"
|
||||
@@ -585,7 +585,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - modify broken keys"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-c-{{ item }}.pem'
|
||||
type: RSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -594,7 +594,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is failed
|
||||
- "'Unable to read the key. The key is protected with a another passphrase / no passphrase or broken. Will not proceed.' in result.results[0].msg or 'Cannot load raw key' in result.results[0].msg"
|
||||
@@ -606,7 +606,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - modify password protected keys (check mode)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-b-{{ item }}.pem'
|
||||
type: RSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -616,7 +616,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is failed
|
||||
- "'Unable to read the key. The key is protected with a another passphrase / no passphrase or broken. Will not proceed.' in result.results[0].msg"
|
||||
@@ -628,7 +628,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - modify password protected keys"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-b-{{ item }}.pem'
|
||||
type: RSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -637,7 +637,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is failed
|
||||
- "'Unable to read the key. The key is protected with a another passphrase / no passphrase or broken. Will not proceed.' in result.results[0].msg"
|
||||
@@ -649,7 +649,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - not modify regular keys (check mode)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
type: RSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -658,7 +658,7 @@
|
||||
check_mode: true
|
||||
loop: "{{ regenerate_values }}"
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is not changed
|
||||
- result.results[1] is not changed
|
||||
@@ -667,7 +667,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - not modify regular keys"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
type: RSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -675,7 +675,7 @@
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
loop: "{{ regenerate_values }}"
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is not changed
|
||||
- result.results[1] is not changed
|
||||
@@ -684,7 +684,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - adjust key size (check mode)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
type: RSA
|
||||
size: '{{ default_rsa_key_size + 20 }}'
|
||||
@@ -694,7 +694,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is success and result.results[0] is not changed
|
||||
- result.results[1] is failed
|
||||
@@ -704,7 +704,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - adjust key size"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
type: RSA
|
||||
size: '{{ default_rsa_key_size + 20 }}'
|
||||
@@ -713,7 +713,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is success and result.results[0] is not changed
|
||||
- result.results[1] is failed
|
||||
@@ -723,7 +723,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - redistribute keys"
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
src: '{{ remote_tmp_dir }}/regenerate-a-always.pem'
|
||||
dest: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
remote_src: true
|
||||
@@ -731,7 +731,7 @@
|
||||
when: "item != 'always'"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - adjust key type (check mode)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
type: DSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -741,7 +741,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is success and result.results[0] is not changed
|
||||
- result.results[1] is failed
|
||||
@@ -751,7 +751,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - adjust key type"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
type: DSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -760,7 +760,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is success and result.results[0] is not changed
|
||||
- result.results[1] is failed
|
||||
@@ -771,7 +771,7 @@
|
||||
|
||||
- block:
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - redistribute keys"
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
src: '{{ remote_tmp_dir }}/regenerate-a-always.pem'
|
||||
dest: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
remote_src: true
|
||||
@@ -779,7 +779,7 @@
|
||||
when: "item != 'always'"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - format mismatch (check mode)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
type: DSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -790,7 +790,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is success and result.results[0] is not changed
|
||||
- result.results[1] is failed
|
||||
@@ -800,7 +800,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - format mismatch"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
type: DSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -810,7 +810,7 @@
|
||||
loop: "{{ regenerate_values }}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is success and result.results[0] is not changed
|
||||
- result.results[1] is failed
|
||||
@@ -820,7 +820,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - redistribute keys"
|
||||
copy:
|
||||
ansible.builtin.copy:
|
||||
src: '{{ remote_tmp_dir }}/regenerate-a-always.pem'
|
||||
dest: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
remote_src: true
|
||||
@@ -828,7 +828,7 @@
|
||||
when: "item != 'always'"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - convert format (check mode)"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
type: DSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -839,7 +839,7 @@
|
||||
check_mode: true
|
||||
loop: "{{ regenerate_values }}"
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is changed
|
||||
- result.results[1] is changed
|
||||
@@ -848,7 +848,7 @@
|
||||
- result.results[4] is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Regenerate - convert format"
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/regenerate-a-{{ item }}.pem'
|
||||
type: DSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
@@ -858,7 +858,7 @@
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
loop: "{{ regenerate_values }}"
|
||||
register: result
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- result.results[0] is changed
|
||||
- result.results[1] is changed
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
####################################################################
|
||||
|
||||
- name: Find out which elliptic curves are supported by installed OpenSSL
|
||||
command: "{{ openssl_binary }} ecparam -list_curves"
|
||||
ansible.builtin.command: "{{ openssl_binary }} ecparam -list_curves"
|
||||
register: openssl_ecc
|
||||
|
||||
- name: Compile list of elliptic curves supported by OpenSSL
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
openssl_ecc_list: |
|
||||
{{
|
||||
openssl_ecc.stdout_lines
|
||||
@@ -25,7 +25,7 @@
|
||||
when: ansible_distribution != 'CentOS' or ansible_distribution_major_version != '6'
|
||||
# CentOS comes with a very old jinja2 which does not include the map() filter...
|
||||
- name: Compile list of elliptic curves supported by OpenSSL (CentOS 6)
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
openssl_ecc_list:
|
||||
- secp384r1
|
||||
- secp521r1
|
||||
@@ -33,20 +33,20 @@
|
||||
when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == '6'
|
||||
|
||||
- name: List of elliptic curves supported by OpenSSL
|
||||
debug: var=openssl_ecc_list
|
||||
ansible.builtin.debug: var=openssl_ecc_list
|
||||
|
||||
- name: Run module with backend autodetection
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_backend_selection.pem'
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- block:
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
- import_tasks: ../tests/validate.yml
|
||||
- ansible.builtin.import_tasks: ../tests/validate.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
# 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
|
||||
|
||||
- set_fact:
|
||||
- ansible.builtin.set_fact:
|
||||
system_potentially_has_no_algorithm_support: "{{ ansible_os_family == 'FreeBSD' }}"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Read private key"
|
||||
slurp:
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/privatekey1.pem'
|
||||
register: slurp
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey1 idempotency and content returned"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey1_check is changed
|
||||
- privatekey1 is changed
|
||||
@@ -23,47 +23,47 @@
|
||||
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey1 (test - RSA key with size 4096 bits)"
|
||||
shell: "{{ openssl_binary }} rsa -noout -text -in {{ remote_tmp_dir }}/privatekey1.pem | grep Private | sed 's/\\(RSA *\\)*Private-Key: (\\(.*\\) bit.*)/\\2/'"
|
||||
ansible.builtin.shell: "{{ openssl_binary }} rsa -noout -text -in {{ remote_tmp_dir }}/privatekey1.pem | grep Private | sed 's/\\(RSA *\\)*Private-Key: (\\(.*\\) bit.*)/\\2/'"
|
||||
register: privatekey1
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey1 (assert - RSA key with size 4096 bits)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey1.stdout == '4096'
|
||||
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey2 (test - RSA key with size 2048 bits)"
|
||||
shell: "{{ openssl_binary }} rsa -noout -text -in {{ remote_tmp_dir }}/privatekey2.pem | grep Private | sed 's/\\(RSA *\\)*Private-Key: (\\(.*\\) bit.*)/\\2/'"
|
||||
ansible.builtin.shell: "{{ openssl_binary }} rsa -noout -text -in {{ remote_tmp_dir }}/privatekey2.pem | grep Private | sed 's/\\(RSA *\\)*Private-Key: (\\(.*\\) bit.*)/\\2/'"
|
||||
register: privatekey2
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey2 (assert - RSA key with size 2048 bits)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey2.stdout == '2048'
|
||||
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey3 (test - DSA key with size 3072 bits)"
|
||||
shell: "{{ openssl_binary }} dsa -noout -text -in {{ remote_tmp_dir }}/privatekey3.pem | grep Private | sed 's/\\(RSA *\\)*Private-Key: (\\(.*\\) bit.*)/\\2/'"
|
||||
ansible.builtin.shell: "{{ openssl_binary }} dsa -noout -text -in {{ remote_tmp_dir }}/privatekey3.pem | grep Private | sed 's/\\(RSA *\\)*Private-Key: (\\(.*\\) bit.*)/\\2/'"
|
||||
register: privatekey3
|
||||
|
||||
- name: Validate privatekey3 (assert - DSA key with size 3072 bits)
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey3.stdout == '3072'
|
||||
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey4 (test - Ensure key has been removed)"
|
||||
stat:
|
||||
ansible.builtin.stat:
|
||||
path: '{{ remote_tmp_dir }}/privatekey4.pem'
|
||||
register: privatekey4
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey4 (assert - Ensure key has been removed)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey4.stat.exists == False
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey4 removal behavior"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey4_delete is changed
|
||||
- privatekey4_delete.privatekey is none
|
||||
@@ -71,37 +71,37 @@
|
||||
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey5 (test - Passphrase protected key + idempotence)"
|
||||
shell: "{{ openssl_binary }} rsa -noout -text -in {{ remote_tmp_dir }}/privatekey5.pem -passin pass:ansible | grep Private | sed 's/\\(RSA *\\)*Private-Key: (\\(.*\\) bit.*)/\\2/'"
|
||||
ansible.builtin.shell: "{{ openssl_binary }} rsa -noout -text -in {{ remote_tmp_dir }}/privatekey5.pem -passin pass:ansible | grep Private | sed 's/\\(RSA *\\)*Private-Key: (\\(.*\\) bit.*)/\\2/'"
|
||||
register: privatekey5
|
||||
# Current version of OS/X that runs in the CI (10.11) does not have an up to date version of the OpenSSL library
|
||||
# leading to this test to fail when run in the CI. However, this test has been run for 10.12 and has returned successfully.
|
||||
when: openssl_version is version('0.9.8zh', '>=')
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey5 (assert - Passphrase protected key + idempotence)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey5.stdout == (default_rsa_key_size | string)
|
||||
when: openssl_version is version('0.9.8zh', '>=')
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey5 idempotence (assert - Passphrase protected key + idempotence)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey5_idempotence is not changed
|
||||
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey6 (test - Passphrase protected key with non ascii character)"
|
||||
shell: "{{ openssl_binary }} rsa -noout -text -in {{ remote_tmp_dir }}/privatekey6.pem -passin pass:ànsïblé | grep Private | sed 's/\\(RSA *\\)*Private-Key: (\\(.*\\) bit.*)/\\2/'"
|
||||
ansible.builtin.shell: "{{ openssl_binary }} rsa -noout -text -in {{ remote_tmp_dir }}/privatekey6.pem -passin pass:ànsïblé | grep Private | sed 's/\\(RSA *\\)*Private-Key: (\\(.*\\) bit.*)/\\2/'"
|
||||
register: privatekey6
|
||||
when: openssl_version is version('0.9.8zh', '>=')
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate privatekey6 (assert - Passphrase protected key with non ascii character)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey6.stdout == (default_rsa_key_size | string)
|
||||
when: openssl_version is version('0.9.8zh', '>=')
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate ECC generation (dump with OpenSSL)"
|
||||
shell: "{{ openssl_binary }} ec -in {{ remote_tmp_dir }}/privatekey-{{ item.item.curve }}.pem -noout -text | grep 'ASN1 OID: ' | sed 's/ASN1 OID: \\([^ ]*\\)/\\1/'"
|
||||
ansible.builtin.shell: "{{ openssl_binary }} ec -in {{ remote_tmp_dir }}/privatekey-{{ item.item.curve }}.pem -noout -text | grep 'ASN1 OID: ' | sed 's/ASN1 OID: \\([^ ]*\\)/\\1/'"
|
||||
loop: "{{ privatekey_ecc_generate.results }}"
|
||||
register: privatekey_ecc_dump
|
||||
when: openssl_version is version('0.9.8zh', '>=') and 'skip_reason' not in item
|
||||
@@ -109,7 +109,7 @@
|
||||
label: "{{ item.item.curve }}"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate ECC generation"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- item is changed
|
||||
loop: "{{ privatekey_ecc_generate.results }}"
|
||||
@@ -118,7 +118,7 @@
|
||||
label: "{{ item.item.curve }}"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate ECC generation (curve type)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'skip_reason' in item or item.item.item.openssl_name == item.stdout"
|
||||
loop: "{{ privatekey_ecc_dump.results }}"
|
||||
@@ -127,7 +127,7 @@
|
||||
label: "{{ item.item.item }} - {{ item.stdout if 'stdout' in item else '<unsupported>' }}"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate ECC generation idempotency"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- item is not changed
|
||||
loop: "{{ privatekey_ecc_idempotency.results }}"
|
||||
@@ -136,7 +136,7 @@
|
||||
label: "{{ item.item.curve }}"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate other type generation (just check changed)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- (item is succeeded and item is changed) or
|
||||
(item is failed and 'Cryptography backend does not support the algorithm required for ' in item.msg and system_potentially_has_no_algorithm_support)
|
||||
@@ -146,7 +146,7 @@
|
||||
label: "{{ item.item.type }}"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate other type generation idempotency"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- (item is succeeded and item is not changed) or
|
||||
(item is failed and 'Cryptography backend does not support the algorithm required for ' in item.msg and system_potentially_has_no_algorithm_support)
|
||||
@@ -156,7 +156,7 @@
|
||||
label: "{{ item.item.type }}"
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate passphrase changing"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- passphrase_1 is changed
|
||||
- passphrase_2 is not changed
|
||||
@@ -170,12 +170,12 @@
|
||||
- passphrase_5.backup_file is string
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Verify that broken key will be regenerated"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- output_broken is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate remove"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- remove_1 is changed
|
||||
- remove_2 is not changed
|
||||
@@ -183,7 +183,7 @@
|
||||
- remove_2.backup_file is undefined
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate mode"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey_mode_1 is changed
|
||||
- privatekey_mode_1_stat.stat.mode == '0400'
|
||||
@@ -193,7 +193,7 @@
|
||||
- privatekey_mode_3_file_change is changed
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate format 1"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey_fmt_1_step_1 is changed
|
||||
- privatekey_fmt_1_step_2 is not changed
|
||||
@@ -208,7 +208,7 @@
|
||||
when: 'select_crypto_backend == "cryptography"'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate format 2 (failed)"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- system_potentially_has_no_algorithm_support
|
||||
- privatekey_fmt_2_step_1 is failed
|
||||
@@ -216,7 +216,7 @@
|
||||
when: 'select_crypto_backend == "cryptography" and privatekey_fmt_2_step_1 is failed'
|
||||
|
||||
- name: "({{ select_crypto_backend }}) Validate format 2"
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- privatekey_fmt_2_step_1 is succeeded and privatekey_fmt_2_step_1 is changed
|
||||
- privatekey_fmt_2_step_2 is succeeded and privatekey_fmt_2_step_2 is not changed
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
- name: Convert (check mode)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -15,7 +15,7 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Convert
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -24,7 +24,7 @@
|
||||
# select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: convert
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- convert_check is changed
|
||||
- convert is changed
|
||||
@@ -36,7 +36,7 @@
|
||||
register: convert_file_info_data
|
||||
|
||||
- name: Convert (idempotent, check mode)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -47,7 +47,7 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Convert (idempotent)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -61,14 +61,14 @@
|
||||
state: '{{ convert_file_info_data }}'
|
||||
register: convert_file_info
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- convert_idem_check is not changed
|
||||
- convert_idem is not changed
|
||||
- convert_file_info is not changed
|
||||
|
||||
- name: Convert (change format, check mode)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -79,7 +79,7 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Convert (change format)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -93,7 +93,7 @@
|
||||
state: '{{ convert_file_info_data }}'
|
||||
register: convert_file_info
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- convert_not_idem_check is changed
|
||||
- convert_not_idem is changed
|
||||
@@ -106,7 +106,7 @@
|
||||
register: convert_file_info_data
|
||||
|
||||
- name: Convert (idempotent, check mode)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -117,7 +117,7 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Convert (idempotent)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -131,14 +131,14 @@
|
||||
state: '{{ convert_file_info_data }}'
|
||||
register: convert_file_info
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- convert_idem_check is not changed
|
||||
- convert_idem is not changed
|
||||
- convert_file_info is not changed
|
||||
|
||||
- name: Convert (change password, check mode)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -149,7 +149,7 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Convert (change password)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -163,7 +163,7 @@
|
||||
state: '{{ convert_file_info_data }}'
|
||||
register: convert_file_info
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- convert_not_idem_check is changed
|
||||
- convert_not_idem is changed
|
||||
@@ -176,7 +176,7 @@
|
||||
register: convert_file_info_data
|
||||
|
||||
- name: Convert (idempotent, check mode)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -187,7 +187,7 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Convert (idempotent)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -201,14 +201,14 @@
|
||||
state: '{{ convert_file_info_data }}'
|
||||
register: convert_file_info
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- convert_idem_check is not changed
|
||||
- convert_idem is not changed
|
||||
- convert_file_info is not changed
|
||||
|
||||
- name: Convert (remove password, check mode)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -218,7 +218,7 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Convert (remove password)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -231,7 +231,7 @@
|
||||
state: '{{ convert_file_info_data }}'
|
||||
register: convert_file_info
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- convert_not_idem_check is changed
|
||||
- convert_not_idem is changed
|
||||
@@ -244,7 +244,7 @@
|
||||
register: convert_file_info_data
|
||||
|
||||
- name: Convert (idempotent, check mode)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -254,7 +254,7 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Convert (idempotent)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_1.pem'
|
||||
@@ -267,7 +267,7 @@
|
||||
state: '{{ convert_file_info_data }}'
|
||||
register: convert_file_info
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- convert_idem_check is not changed
|
||||
- convert_idem is not changed
|
||||
@@ -276,7 +276,7 @@
|
||||
- when: supports_ed25519 | bool
|
||||
block:
|
||||
- name: Convert (change format to raw, check mode)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_ed25519.pem'
|
||||
dest_path: '{{ remote_tmp_dir }}/output_2.pem'
|
||||
format: raw
|
||||
@@ -285,14 +285,14 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Convert (change format to raw)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_ed25519.pem'
|
||||
dest_path: '{{ remote_tmp_dir }}/output_2.pem'
|
||||
format: raw
|
||||
# select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: convert_not_idem
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- convert_not_idem_check is changed
|
||||
- convert_not_idem is changed
|
||||
@@ -304,7 +304,7 @@
|
||||
register: convert_file_info_data
|
||||
|
||||
- name: Convert (idempotent, check mode)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_ed25519.pem'
|
||||
dest_path: '{{ remote_tmp_dir }}/output_2.pem'
|
||||
format: raw
|
||||
@@ -313,7 +313,7 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Convert (idempotent)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_ed25519.pem'
|
||||
dest_path: '{{ remote_tmp_dir }}/output_2.pem'
|
||||
format: raw
|
||||
@@ -325,14 +325,14 @@
|
||||
state: '{{ convert_file_info_data }}'
|
||||
register: convert_file_info
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- convert_idem_check is not changed
|
||||
- convert_idem is not changed
|
||||
- convert_file_info is not changed
|
||||
|
||||
- name: Convert (change format to raw, check mode)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_x25519.pem'
|
||||
dest_path: '{{ remote_tmp_dir }}/output_3.pem'
|
||||
format: raw
|
||||
@@ -341,14 +341,14 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Convert (change format to raw)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_x25519.pem'
|
||||
dest_path: '{{ remote_tmp_dir }}/output_3.pem'
|
||||
format: raw
|
||||
# select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: convert_not_idem
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- convert_not_idem_check is changed
|
||||
- convert_not_idem is changed
|
||||
@@ -360,7 +360,7 @@
|
||||
register: convert_file_info_data
|
||||
|
||||
- name: Convert (idempotent, check mode)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_x25519.pem'
|
||||
dest_path: '{{ remote_tmp_dir }}/output_3.pem'
|
||||
format: raw
|
||||
@@ -369,7 +369,7 @@
|
||||
check_mode: true
|
||||
|
||||
- name: Convert (idempotent)
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_x25519.pem'
|
||||
dest_path: '{{ remote_tmp_dir }}/output_3.pem'
|
||||
format: raw
|
||||
@@ -381,7 +381,7 @@
|
||||
state: '{{ convert_file_info_data }}'
|
||||
register: convert_file_info
|
||||
|
||||
- assert:
|
||||
- ansible.builtin.assert:
|
||||
that:
|
||||
- convert_idem_check is not changed
|
||||
- convert_idem is not changed
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
####################################################################
|
||||
|
||||
- name: Determine capabilities
|
||||
set_fact:
|
||||
ansible.builtin.set_fact:
|
||||
supports_ed25519: >-
|
||||
{{
|
||||
not (
|
||||
@@ -20,7 +20,7 @@
|
||||
}}
|
||||
|
||||
- name: Create keys
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
size: '{{ item.size | default(omit) }}'
|
||||
path: '{{ remote_tmp_dir }}/privatekey_{{ item.name }}.pem'
|
||||
type: '{{ item.type | default(omit) }}'
|
||||
@@ -45,7 +45,7 @@
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- name: Run module with backend autodetection
|
||||
openssl_privatekey_convert:
|
||||
community.crypto.openssl_privatekey_convert:
|
||||
src_path: '{{ remote_tmp_dir }}/privatekey_rsa_pass1.pem'
|
||||
src_passphrase: secret
|
||||
dest_path: '{{ remote_tmp_dir }}/output_backend_selection.pem'
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
- block:
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
|
||||
@@ -3,17 +3,17 @@
|
||||
# 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
|
||||
|
||||
- debug:
|
||||
- ansible.builtin.debug:
|
||||
msg: "Executing tests with backend {{ select_crypto_backend }}"
|
||||
|
||||
- name: ({{select_crypto_backend}}) Get key 1 info
|
||||
openssl_privatekey_info:
|
||||
- name: ({{ select_crypto_backend }}) Get key 1 info
|
||||
community.crypto.openssl_privatekey_info:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_1.pem'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: result
|
||||
|
||||
- name: Check that RSA key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'public_key' in result"
|
||||
- "'public_key_fingerprints' in result"
|
||||
@@ -24,34 +24,34 @@
|
||||
- "result.public_data.exponent > 5"
|
||||
- "'private_data' not in result"
|
||||
|
||||
- name: ({{select_crypto_backend}}) Read private key
|
||||
slurp:
|
||||
- name: ({{ select_crypto_backend }}) Read private key
|
||||
ansible.builtin.slurp:
|
||||
src: '{{ remote_tmp_dir }}/privatekey_1.pem'
|
||||
register: slurp
|
||||
|
||||
- name: ({{select_crypto_backend}}) Get key 1 info directly
|
||||
openssl_privatekey_info:
|
||||
- name: ({{ select_crypto_backend }}) Get key 1 info directly
|
||||
community.crypto.openssl_privatekey_info:
|
||||
content: '{{ slurp.content | b64decode }}'
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: result_direct
|
||||
|
||||
- name: ({{select_crypto_backend}}) Compare output of direct and loaded info
|
||||
assert:
|
||||
- name: ({{ select_crypto_backend }}) Compare output of direct and loaded info
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- >-
|
||||
(result | dict2items | rejectattr("key", "equalto", "warnings") | list | items2dict)
|
||||
==
|
||||
(result_direct | dict2items | rejectattr("key", "equalto", "warnings") | list | items2dict)
|
||||
|
||||
- name: ({{select_crypto_backend}}) Get key 2 info
|
||||
openssl_privatekey_info:
|
||||
- name: ({{ select_crypto_backend }}) Get key 2 info
|
||||
community.crypto.openssl_privatekey_info:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_2.pem'
|
||||
return_private_key_data: true
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: result
|
||||
|
||||
- name: Check that RSA key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'public_key' in result"
|
||||
- "'public_key_fingerprints' in result"
|
||||
@@ -65,8 +65,8 @@
|
||||
- "result.public_data.modulus == result.private_data.p * result.private_data.q"
|
||||
- "result.private_data.exponent > 5"
|
||||
|
||||
- name: ({{select_crypto_backend}}) Get key 3 info (without passphrase)
|
||||
openssl_privatekey_info:
|
||||
- name: ({{ select_crypto_backend }}) Get key 3 info (without passphrase)
|
||||
community.crypto.openssl_privatekey_info:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_3.pem'
|
||||
return_private_key_data: true
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
@@ -74,7 +74,7 @@
|
||||
register: result
|
||||
|
||||
- name: Check that loading passphrase protected key without passphrase failed
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- result is failed
|
||||
# Check that return values are there
|
||||
@@ -90,8 +90,8 @@
|
||||
- "'public_data' not in result"
|
||||
- "'private_data' not in result"
|
||||
|
||||
- name: ({{select_crypto_backend}}) Get key 3 info (with passphrase)
|
||||
openssl_privatekey_info:
|
||||
- name: ({{ select_crypto_backend }}) Get key 3 info (with passphrase)
|
||||
community.crypto.openssl_privatekey_info:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_3.pem'
|
||||
passphrase: hunter2
|
||||
return_private_key_data: true
|
||||
@@ -99,7 +99,7 @@
|
||||
register: result
|
||||
|
||||
- name: Check that RSA key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'public_key' in result"
|
||||
- "'public_key_fingerprints' in result"
|
||||
@@ -112,15 +112,15 @@
|
||||
- "result.public_data.modulus == result.private_data.p * result.private_data.q"
|
||||
- "result.private_data.exponent > 5"
|
||||
|
||||
- name: ({{select_crypto_backend}}) Get key 4 info
|
||||
openssl_privatekey_info:
|
||||
- name: ({{ select_crypto_backend }}) Get key 4 info
|
||||
community.crypto.openssl_privatekey_info:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_4.pem'
|
||||
return_private_key_data: true
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: result
|
||||
|
||||
- name: Check that ECC key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'public_key' in result"
|
||||
- "'public_key_fingerprints' in result"
|
||||
@@ -134,15 +134,15 @@
|
||||
- "'private_data' in result"
|
||||
- "result.private_data.multiplier > 1024"
|
||||
|
||||
- name: ({{select_crypto_backend}}) Get key 5 info
|
||||
openssl_privatekey_info:
|
||||
- name: ({{ select_crypto_backend }}) Get key 5 info
|
||||
community.crypto.openssl_privatekey_info:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_5.pem'
|
||||
return_private_key_data: true
|
||||
select_crypto_backend: '{{ select_crypto_backend }}'
|
||||
register: result
|
||||
|
||||
- name: Check that DSA key info is ok
|
||||
assert:
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "'public_key' in result"
|
||||
- "'public_key_fingerprints' in result"
|
||||
|
||||
@@ -9,24 +9,24 @@
|
||||
####################################################################
|
||||
|
||||
- name: Generate privatekey 1
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_1.pem'
|
||||
|
||||
- name: Generate privatekey 2 (less bits)
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_2.pem'
|
||||
type: RSA
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
|
||||
- name: Generate privatekey 3 (with password)
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_3.pem'
|
||||
passphrase: hunter2
|
||||
size: '{{ default_rsa_key_size }}'
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
- name: Generate privatekey 4 (ECC)
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_4.pem'
|
||||
type: ECC
|
||||
curve: "{{ (ansible_distribution == 'CentOS' and ansible_distribution_major_version == '6') | ternary('secp521r1', 'secp256k1') }}"
|
||||
@@ -34,13 +34,13 @@
|
||||
select_crypto_backend: cryptography
|
||||
|
||||
- name: Generate privatekey 5 (DSA)
|
||||
openssl_privatekey:
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ remote_tmp_dir }}/privatekey_5.pem'
|
||||
type: DSA
|
||||
size: 1024
|
||||
|
||||
- name: Running tests with cryptography backend
|
||||
include_tasks: impl.yml
|
||||
ansible.builtin.include_tasks: impl.yml
|
||||
vars:
|
||||
select_crypto_backend: cryptography
|
||||
when: cryptography_version is version('3.3', '>=')
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user