openssl_pkcs12: Add a check for parsed pkcs12 files (#145)
* openssl_pkcs12: Add a check for parsed pkcs12 files Signed-off-by: Norman Ziegner <norman.ziegner@ufz.de> * Add changelog fragment Signed-off-by: Norman Ziegner <norman.ziegner@ufz.de> * openssl_pkcs12: Report changed state when a pkcs12 file is dumped Signed-off-by: Norman Ziegner <norman.ziegner@ufz.de> * Add a basic test for dumping a pkcs12 file Signed-off-by: Norman Ziegner <norman.ziegner@ufz.de> * Update changelog fragment Signed-off-by: Norman Ziegner <norman.ziegner@ufz.de> * Add test for dumped pkcs12 file in check mode Signed-off-by: Norman Ziegner <norman.ziegner@ufz.de>pull/154/head
parent
94b23d62db
commit
86b39733e1
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- openssl_pkcs12 - report the correct state when ``action`` is ``parse`` (https://github.com/ansible-collections/community.crypto/issues/143).
|
|
@ -302,6 +302,17 @@ class Pkcs(OpenSSLObject):
|
||||||
return False
|
return False
|
||||||
elif bool(self.pkcs12.get_friendlyname()) != bool(pkcs12_friendly_name):
|
elif bool(self.pkcs12.get_friendlyname()) != bool(pkcs12_friendly_name):
|
||||||
return False
|
return False
|
||||||
|
elif module.params['action'] == 'parse' and os.path.exists(self.src) and os.path.exists(self.path):
|
||||||
|
try:
|
||||||
|
pkey, cert, other_certs, friendly_name = self.parse()
|
||||||
|
except crypto.Error:
|
||||||
|
return False
|
||||||
|
expected_content = to_bytes(
|
||||||
|
''.join([to_native(pem) for pem in [pkey, cert] + other_certs if pem is not None])
|
||||||
|
)
|
||||||
|
dumped_content = load_file_if_exists(self.path, ignore_errors=True)
|
||||||
|
if expected_content != dumped_content:
|
||||||
|
return False
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -448,6 +459,7 @@ def main():
|
||||||
pkey, cert, other_certs, friendly_name = pkcs12.parse()
|
pkey, cert, other_certs, friendly_name = pkcs12.parse()
|
||||||
dump_content = ''.join([to_native(pem) for pem in [pkey, cert] + other_certs if pem is not None])
|
dump_content = ''.join([to_native(pem) for pem in [pkey, cert] + other_certs if pem is not None])
|
||||||
pkcs12.write(module, to_bytes(dump_content))
|
pkcs12.write(module, to_bytes(dump_content))
|
||||||
|
changed = True
|
||||||
|
|
||||||
file_args = module.load_file_common_arguments(module.params)
|
file_args = module.load_file_common_arguments(module.params)
|
||||||
if module.set_fs_attributes_if_different(file_args, changed):
|
if module.set_fs_attributes_if_different(file_args, changed):
|
||||||
|
|
|
@ -88,6 +88,22 @@
|
||||||
path: '{{ output_dir }}/ansible_parse.pem'
|
path: '{{ output_dir }}/ansible_parse.pem'
|
||||||
action: parse
|
action: parse
|
||||||
state: present
|
state: present
|
||||||
|
register: p12_dumped
|
||||||
|
- name: Dump PKCS#12 file again, idempotency
|
||||||
|
openssl_pkcs12:
|
||||||
|
src: '{{ output_dir }}/ansible.p12'
|
||||||
|
path: '{{ output_dir }}/ansible_parse.pem'
|
||||||
|
action: parse
|
||||||
|
state: present
|
||||||
|
register: p12_dumped_idempotency
|
||||||
|
- name: Dump PKCS#12, check mode
|
||||||
|
openssl_pkcs12:
|
||||||
|
src: '{{ output_dir }}/ansible.p12'
|
||||||
|
path: '{{ output_dir }}/ansible_parse.pem'
|
||||||
|
action: parse
|
||||||
|
state: present
|
||||||
|
check_mode: true
|
||||||
|
register: p12_dumped_check_mode
|
||||||
- name: Generate PKCS#12 file with multiple certs
|
- name: Generate PKCS#12 file with multiple certs
|
||||||
openssl_pkcs12:
|
openssl_pkcs12:
|
||||||
path: '{{ output_dir }}/ansible_multi_certs.p12'
|
path: '{{ output_dir }}/ansible_multi_certs.p12'
|
||||||
|
|
|
@ -20,8 +20,11 @@
|
||||||
- p12_validate_no_pkey.stdout_lines[-1] == '-----END CERTIFICATE-----'
|
- p12_validate_no_pkey.stdout_lines[-1] == '-----END CERTIFICATE-----'
|
||||||
- p12_force.changed
|
- p12_force.changed
|
||||||
- p12_force_and_mode.mode == '0644' and p12_force_and_mode.changed
|
- p12_force_and_mode.mode == '0644' and p12_force_and_mode.changed
|
||||||
|
- p12_dumped.changed
|
||||||
- not p12_standard_idempotency.changed
|
- not p12_standard_idempotency.changed
|
||||||
- not p12_multiple_certs_idempotency.changed
|
- not p12_multiple_certs_idempotency.changed
|
||||||
|
- not p12_dumped_idempotency.changed
|
||||||
|
- not p12_dumped_check_mode.changed
|
||||||
- "'www.' in p12_validate_multi_certs.stdout"
|
- "'www.' in p12_validate_multi_certs.stdout"
|
||||||
- "'www2.' in p12_validate_multi_certs.stdout"
|
- "'www2.' in p12_validate_multi_certs.stdout"
|
||||||
- "'www3.' in p12_validate_multi_certs.stdout"
|
- "'www3.' in p12_validate_multi_certs.stdout"
|
||||||
|
|
Loading…
Reference in New Issue