Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ipacert: Revoking with removeFromCRL should be handled as cert release #1323

Merged
merged 1 commit into from
Dec 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions plugins/modules/ipacert.py
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,8 @@ def main():

# revoked
reason = ansible_module.params_get("revocation_reason")
if reason is not None:
reason = get_revocation_reason(ansible_module, reason)

# general
serial_number = ansible_module.params.get("serial_number")
Expand Down Expand Up @@ -521,6 +523,9 @@ def main():
invalid.append("revocation_reason")
if state == "revoked":
invalid.extend(["certificate_out", "chain"])
# Reason 8 (revomeFromCRL) is the same as release hold
if reason == 8:
state = "released"
elif state == "held":
reason = 6 # certificateHold

Expand Down
65 changes: 65 additions & 0 deletions tests/cert/test_cert_remove_hold_with_removeFromCRL.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
- name: Test remove certificate hold by removing it from CRL.
hosts: ipaserver
become: false
gather_facts: false
module_defaults:
ipauser:
ipaadmin_password: SomeADMINpassword
ipacert:
ipaadmin_password: SomeADMINpassword

tasks:
- name: Ensure test users are present
ipauser:
name: testuser
first: test
last: user

- name: Create user certificae CSR
ansible.builtin.shell:
cmd: |-
openssl req -newkey rsa:2048 -keyout /dev/null -nodes \
-subj /CN=testuser -reqexts IECUserRoles -config \
<(cat /etc/pki/tls/openssl.cnf; \
printf "[IECUserRoles]\n1.2.3.10.9.8=ASN1:UTF8String:Testing Cert")
args:
executable: /bin/bash
register: user_csr

- name: Request certificate with ipacert
ipacert:
csr: '{{ user_csr.stdout }}'
principal: testuser
state: requested
register: user_csr
failed_when: not user_csr.changed or user_csr.failed

- name: Revoke certifice with reason 6 (certificateHold)
ipacert:
serial_number: "{{ user_csr.certificate.serial_number }}"
revocation_reason: certificateHold
state: revoked
register: result
failed_when: not result.changed or result.failed

- name: Revoke certificate with reason 8 (removeFromCRL)
ipacert:
serial_number: "{{ user_csr.certificate.serial_number }}"
revocation_reason: removeFromCRL
state: revoked
register: result
failed_when: not result.changed or result.failed

- name: Revoke certificate with reason 8 (removeFromCRL), again
ipacert:
serial_number: "{{ user_csr.certificate.serial_number }}"
revocation_reason: removeFromCRL
state: revoked
register: result
failed_when: result.changed or result.failed

- name: Ensure test users are absent
ipauser:
name: testuser
state: absent
Loading