--- # https://jamielinux.com/docs/openssl-certificate-authority/create-the-root-pair.html - name: directory file: path: "{{ certificate_authority_directory }}" #mode: 0700 state: directory - name: subdirectories file: path: "{{ certificate_authority_directory }}/{{ item }}" #mode: 0700 state: directory with_items: - certs - crl - csr - newcerts - name: private directory file: path: "{{ certificate_authority_directory }}/private" mode: 0700 state: directory - name: private key command: openssl genrsa -out private/ca.key.pem {{ certificate_authority_private_key_size }} args: chdir: "{{ certificate_authority_directory }}" creates: "{{ certificate_authority_directory }}/private/ca.key.pem" - name: openssl config template: src: openssl.cnf.j2 dest: "{{ certificate_authority_directory }}/openssl.cnf" - name: extensions config template: src: extensions.cnf.j2 dest: "{{ certificate_authority_directory }}/extensions.cnf" - name: index config template: src: index.attr.j2 dest: "{{ certificate_authority_directory }}/index.attr" - name: index copy: content: "" dest: "{{ certificate_authority_directory }}/index" force: no - name: serial copy: content: "00\n" dest: "{{ certificate_authority_directory }}/serial" force: no - name: certificate signing request command: openssl req -new -config openssl.cnf -key private/ca.key.pem -days {{ certificate_authority_days }} -sha256 -out csr/ca.csr.pem -subj "{{ certificate_authority_subject }}" args: chdir: "{{ certificate_authority_directory }}" creates: "{{ certificate_authority_directory }}/csr/ca.csr.pem" #when: certificate_authority_type == "intermediate" - name: self sign certificate command: openssl ca -selfsign -batch -config openssl.cnf -days {{ certificate_authority_days }} -extensions certificate_authority -in csr/ca.csr.pem -out certs/ca.cert.pem -subj "{{ certificate_authority_subject }}" args: chdir: "{{ certificate_authority_directory }}" creates: "{{ certificate_authority_directory }}/certs/ca.cert.pem" when: certificate_authority_type == "root" - name: certificate info command: openssl x509 -text -noout -in certs/ca.cert.pem args: chdir: "{{ certificate_authority_directory }}" changed_when: false register: _certificate_authority_info - name: show certificate info debug: msg: "{{ _certificate_authority_info }}"