Nota

Questo plugin fa parte del pacchetto raccolta community.crypto (versione 1.4.0).

Per installarlo usare: ansible-galaxy collection install community.crypto.

Per usarlo in un playbook, specificare: community.crypto.openssl_csr.

  • Sinossi
  • Requisiti
  • Parametri
  • Note
  • Vedi anche
  • Esempi
  • Valori di ritorno

Sinossi

  • Si noti che il modulo rigenera un CSR esistente se non corrisponde alle opzioni del modulo o se sembra essere corrotto. Se si teme che questo possa sovrascrivere il CSR esistente, si può usare l'opzione backup opzione.
  • Il modulo può utilizzare la libreria Python cryptography o la libreria Python pyOpenSSL. Per impostazione predefinita, cerca di rilevare quale sia quella disponibile. Questo può essere sovrascritto con l'opzione select_crypto_backend . Si noti che il backend PyOpenSSL è stato deprecato in Ansible 2.9 e sarà rimosso in community.crypto 2.0.0.
  • Questo modulo consente di (ri)generare richieste di firma di certificati OpenSSL.
  • Questo modulo supporta le estensioni subjectAltName, keyUsage, extendedKeyUsage, basicConstraints e OCSP Must Staple.

Requisiti

I seguenti requisiti sono necessari sull'host che esegue questo modulo.

  • O crittografia >= 1.3
  • O pyOpenSSL >= 0.15

Parametri

Parametri Scelte/Defaults Commenti
attributistringa aggiunto nella versione 2.3 di ansible.builtin Gli attributi che il file o la directory risultante dovrebbe avere. Per ottenere i flag supportati, consultare la pagina man di chattr Questa stringa dovrebbe contenere gli attributi nello stesso ordine in cui sono visualizzati da lsattr Il = è assunto come predefinito, altrimenti + o - devono essere inclusi nella stringa.
alias: attr
autorità_emittente_certoelenco / elementi=stringa Nomi che saranno presenti nel campo authority cert issuer della richiesta di firma del certificato. I valori devono essere preceduti dalle loro opzioni. (ad esempio, email, URI, DNS, RID, IP, dirName, otherName e quelli specifici della propria CA)Esempio: DNS:ca.example.orgSe specificato, identificatore_chiave_autorità Si noti che le CA commerciali ignorano questo valore e utilizzano un valore a loro scelta. Specificare questa opzione è utile soprattutto per i certificati autofirmati o per le CA proprie.Si noti che questa opzione è supportata solo se l'opzione cryptography è utilizzato! L'opzione AuthorityKeyIdentifier sarà aggiunto solo se almeno uno degli elementi identificatore_chiave_autorità, emittente_autorità_cert e numero seriale_autorità_cert è specificato.
numero seriale_autorità_certintero Il numero di serie dell'authority cert. Si noti che questo è supportato solo se l'opzione cryptography Si noti che le CA commerciali ignorano questo valore e utilizzano un valore a loro scelta. Specificare questa opzione è utile soprattutto per i certificati autofirmati o per le CA proprie. AuthorityKeyIdentifier verrà aggiunto solo se almeno una delle opzioni identificatore_chiave_autorità, emittente_autorità_cert e numero seriale_autorità_cert è specificato.
identificatore_chiave_autoritàstringa L'identificatore della chiave di autorità come stringa esadecimale, dove due byte sono separati da due punti: 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33Se specificato, emittente_autorità_cert Si noti che le CA commerciali ignorano questo valore e utilizzano un valore a loro scelta. Specificare questa opzione è utile soprattutto per i certificati autofirmati o per le CA proprie.Si noti che è supportata solo se l'opzione cryptography è utilizzato! L'opzione AuthorityKeyIdentifier sarà aggiunto solo se almeno uno degli elementi identificatore_chiave_autorità, emittente_autorità_cert e numero seriale_autorità_cert è specificato.
backupbooleano
    Scelte:

  • no
Creare un file di backup che includa un timestamp, in modo da poter recuperare il CSR originale se lo si sovrascrive accidentalmente con uno nuovo.
vincoli_di_baseelenco / elementi=stringa Indica i vincoli di base, ad esempio se il certificato è una CA.
alias: basicConstraints
vincoli_di_base_criticibooleano
    Scelte:

  • no
L'estensione basicConstraints deve essere considerata critica.
alias: basicConstraints_critical
nome_comunestringa Il campo commonName dell'oggetto della richiesta di firma del certificato.
alias: CN, CommonName
nome_paesestringa Il campo countryName dell'oggetto della richiesta di firma del certificato.
alias: C, countryName
create_subject_key_identifierbooleano
    Scelte:

  • no
Creare il Subject Key Identifier dalla chiave pubblica. Si noti che le CA commerciali possono ignorare il valore e utilizzare un valore di loro scelta. Specificare questa opzione è utile soprattutto per i certificati autofirmati o per le CA proprie.Si noti che questa opzione è supportata solo se l'opzione cryptography è utilizzato!
punti_di_distribuzione_crlelenco / elementi=dizionario aggiunto in 1.4.0 di community.crypto Permette di specificare uno o più punti di distribuzione CRL.Supportato solo dall'opzione cryptography backend.
crl_issuerelenco / elementi=stringa Informazioni sull'emittente della CRL.
nome_completoelenco / elementi=stringa Descrive come può essere recuperato il CRL.Mutuamente esclusivo con nome_relativo Esempio: URI:https://ca.example.com/revocations.crl.
motivielenco / elementi=stringa
    Scelte:

  • chiave_compromessa
  • compromesso_ca
  • affiliazione_cambiata
  • sostituito
  • cessazione_di_operazione
  • mantenimento_del_certificato
  • privilegio_revocato
  • aa_compromesso
Elenco dei motivi per i quali questo punto di distribuzione può essere usato quando si eseguono i controlli di revoca.
nome_relativoelenco / elementi=stringa Descrive il modo in cui il CRL può essere recuperato rispetto all'emittente del CRL.Mutuamente esclusivo con nome_completo Esempio: /CN=example.com.può essere usato solo quando è installata la crittografia >= 1.6.
digeststringa Predefinito:
"sha256"
Il digest utilizzato per firmare la richiesta di firma del certificato con la chiave privata.
indirizzo_emailstringa Il campo emailAddress dell'oggetto della richiesta di firma del certificato.
alias: E, emailAddress
utilizzo_chiave_estesaelenco / elementi=stringa Ulteriori restrizioni (ad esempio, autenticazione del client, autenticazione del server) sugli scopi consentiti per i quali la chiave pubblica può essere utilizzata.
alias: extKeyUsage, extendedKeyUsage
uso_chiave_estesa_criticobooleano
    Scelte:

  • no
L'estensione extkeyUsage deve essere considerata critica.
alias: extKeyUsage_critical, extendedKeyUsage_critical
forzabooleano
    Scelte:

  • no
La richiesta di firma del certificato deve essere rigenerata forzatamente da questo modulo ansible.
gruppostringa Nome del gruppo che dovrebbe possedere il file/directory, come sarebbe alimentato da chown.
chiave_usoelenco / elementi=stringa Definisce lo scopo (ad es. cifratura, firma, firma del certificato) della chiave contenuta nel certificato.
alias: keyUsage
chiave_uso_criticobooleano
    Scelte:

  • no
L'estensione keyUsage deve essere considerata critica.
alias: keyUsage_critical
nome_localitàstringa Il campo localityName dell'oggetto della richiesta di firma del certificato.
alias: L, localityName
modalitàgrezzo I permessi che deve avere il file o la directory risultante. Per chi è abituato a /usr/bin/chmod ricordate che le modalità sono in realtà numeri ottali. È necessario aggiungere uno zero iniziale in modo che il parser YAML di Ansible sappia che si tratta di un numero ottale (come ad esempio 0644 oppure 01777) o citarlo (come '644' o '1777') in modo che Ansible riceva una stringa e possa effettuare la propria conversione da stringa a numero.Dando ad Ansible un numero senza seguire una di queste regole, si otterrà un numero decimale con risultati inaspettati.A partire da Ansible 1.8, la modalità può essere specificata come modalità simbolica (ad esempio, u+rwx o u=rw,g=r,o=r).Se mode non è specificato e il file di destinazione non esiste, il file predefinito umask del sistema verrà utilizzato quando si imposta la modalità per il file appena creato. mode non è specificato e il file di destinazione fa esiste, verrà utilizzata la modalità del file esistente.Specificando mode è il modo migliore per garantire che i file vengano creati con i permessi corretti. Per ulteriori dettagli, vedere CVE-2020-1736.
vincoli_nome_criticobooleano aggiunto in 1.1.0 di community.crypto
    Scelte:

  • no
L'estensione Name Constraints deve essere considerata critica.
vincoli_del_nome_esclusilista / elementi=stringa aggiunto in 1.1.0 di community.crypto Per i certificati CA, specifica un elenco di identificatori che descrivono sottoalberi di nomi per i quali questa CA non è autorizzata a emettere certificati. (ad esempio, email, URI, DNS, RID, IP, dirName, otherName e quelli specifici della vostra CA).
vincoli_del_nome_permessielenco / elementi=stringa aggiunto in 1.1.0 di community.crypto Per i certificati CA, specifica un elenco di identificatori che descrivono sottoalberi di nomi per i quali questa CA è autorizzata a emettere certificati. (ad esempio, email, URI, DNS, RID, IP, dirName, otherName e quelli specifici della vostra CA).
ocsp_must_staplebooleano
    Scelte:

  • no
Indica che il certificato deve contenere l'estensione OCSP Must Staple (https://tools.ietf.org/html/rfc7633).
alias: ocspMustStaple
ocsp_must_staple_criticalbooleano
    Scelte:

  • no
L'estensione OCSP Must Staple deve essere considerata critica.Si noti che, secondo l'RFC, questa estensione non dovrebbe essere contrassegnata come critica, poiché i vecchi client che non conoscono OCSP Must Staple sono tenuti a rifiutare tali certificati (vedere https://tools.ietf.org/html/rfc7633#section-4).
alias: ocspMustStaple_critical
nome_organizzazionestringa Il campo organizationName dell'oggetto della richiesta di firma del certificato.
alias: O, organizationName
nome_unità_organizzativastringa Il campo organizationalUnitName dell'oggetto della richiesta di firma del certificato.
alias: OU, organizationalUnitName
proprietariostringa Nome dell'utente che dovrebbe essere il proprietario del file/directory, come sarebbe alimentato da chown.
percorsopercorso / richiesto Il nome del file in cui verrà scritta la richiesta di firma del certificato OpenSSL generato.
contenuto_chiave_privatastringa aggiunto nella versione 1.0.0 di community.crypto Il contenuto della chiave privata da utilizzare per la firma della richiesta di firma del certificato.Either percorso_chiave_privata oppure contenuto_chiave_privata deve essere specificato se stato è presentma non entrambi.
chiave_privata_passphrasestringa La passphrase per la chiave privata è necessaria se la chiave privata è protetta da password.
percorso_chiave_privatapercorso Il percorso della chiave privata da utilizzare per la firma della richiesta di firma del certificato.Either percorso_chiave_privata oppure contenuto_chiave_privata deve essere specificato se stato è presentma non entrambi.
contenuto_di_ritornobooleano aggiunto in 1.0.0 di community.crypto
    Scelte:

  • no
Se impostato su yesrestituisce il contenuto del CSR (corrente o generato) come csr.
selezionare_crypto_backendstringa
    Scelte:

  • auto
  • crittografia
  • pyopenssl
Determina quale backend di crittografia utilizzare. La scelta predefinita è autoche cerca di utilizzare cryptography se disponibile, e ricade su pyopensslSe impostato su pyopenssl, cercherà di utilizzare l'opzione pyOpenSSL Se impostato su cryptographycercherà di utilizzare la libreria crittografia Si noti che la libreria pyopenssl è stato deprecato in Ansible 2.9 e sarà rimosso in community.crypto 2.0.0. Da quel momento in poi, solo le librerie di crittografia saranno in grado di funzionare. Da quel momento in poi, solo il backend cryptography sarà disponibile.
livello selestringa La parte del livello del contesto del file SELinux. Si tratta dell'attributo MLS/MCS, talvolta noto come attributo rangeQuando è impostato su _default, utilizzerà l'attributo level della politica, se disponibile.
servostringa La parte del ruolo del contesto del file SELinux.Quando è impostato a _default, utilizzerà il ruolo role della politica, se disponibile.
setypestringa La parte del tipo del contesto del file SELinux.Quando è impostato su _default, utilizzerà il tipo type della politica, se disponibile.
seuserstringa La parte utente del contesto del file SELinux. Per impostazione predefinita utilizza l'opzione system se applicabile. Quando è impostata su _defaultutilizzerà il criterio user del criterio, se disponibile.
statostringa
    Scelte:

  • assente
  • presente
Se la richiesta di firma del certificato deve esistere o meno, agendo se lo stato è diverso da quello dichiarato.
nome_stato_o_provinciastringa Il campo stateOrProvinceName dell'oggetto della richiesta di firma del certificato.
alias: ST, stateOrProvinceName
oggettodizionario Coppie chiave/valore che saranno presenti nel campo del nome del soggetto della richiesta di firma del certificato. Se è necessario specificare più di un valore con la stessa chiave, utilizzare un elenco come valore.
nome_oggetto_altelenco / elementi=stringa Estensione del nome alternativo del soggetto (SAN) da allegare alla richiesta di firma del certificato. Può essere una "stringa separata da virgole" o un elenco YAML. I valori devono essere preceduti dalle loro opzioni. (ad esempio, email, URI, DNS, RID, IP, dirName, otherName e quelli specifici della propria CA).Si noti che se non viene specificata alcuna SAN, ma un nome comune, il nome comune verrà aggiunto come SAN, tranne nel caso in cui useCommonNameForSAN è impostato su falso Più a https://tools.ietf.org/html/rfc5280#section-4.2.1.6.
alias: subjectAltName
nome_alt_critico_del_soggettobooleano
    Scelte:

  • no
L'estensione subjectAltName deve essere considerata critica.
alias: subjectAltName_critical
identificatore_chiave_oggettostringa L'identificatore della chiave dell'oggetto come stringa esadecimale, dove due byte sono separati da due punti: 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33Si noti che le CA commerciali ignorano questo valore e utilizzano un valore di loro scelta. Specificare questa opzione è utile soprattutto per i certificati autofirmati o per le CA proprie.Si noti che questa opzione può essere utilizzata solo se crea_identificatore_chiave_soggetto è noSi noti che questo è supportato solo se il parametro cryptography è utilizzato!
scritture_non_sicurebooleano aggiunto nella versione 2.2 di ansible.builtin
    Scelte:

  • no
Influenza quando usare le operazioni atomiche per prevenire la corruzione dei dati o la lettura incoerente del file di destinazione. Per impostazione predefinita, questo modulo usa le operazioni atomiche per prevenire la corruzione dei dati o la lettura incoerente dei file di destinazione, ma a volte i sistemi sono configurati o semplicemente rotti in modo da impedirlo. Questa opzione consente ad Ansible di ricorrere a metodi non sicuri di aggiornamento dei file quando le operazioni atomiche falliscono (tuttavia, non costringe Ansible a eseguire scritture non sicure).IMPORTANTE! Le scritture non sicure sono soggette a condizioni di gara e possono causare la corruzione dei dati.
nome_comune_per_sanbooleano
    Scelte:

  • no
Se impostato su yesil modulo inserisce il nome comune di subject_alt_name con DNS: se non viene specificato alcun SAN.
alias: useCommonNameForSAN
versioneintero Predefinito:
1
La versione della richiesta di firma del certificato. L'unico valore consentito in base a RFC 2986 è 1. Questa opzione non accetterà più valori non supportati da community.crypto 2.0.0 in poi.

Note

Nota

  • Se la richiesta di firma del certificato esiste già, verrà controllato se subjectAltName, keyUsage, extendedKeyUsage e basicConstraints contengono solo i valori richiesti, se OCSP Must Staple è come richiesto e se la richiesta è stata firmata dalla chiave privata indicata.

Vedere anche

Vedere anche

community.crypto.openssl_csr_pipe

La documentazione ufficiale sul sistema community.crypto.openssl_csr_pipe modulo.

community.crypto.x509_certificate

La documentazione ufficiale sul modulo community.crypto.x509_certificate del modulo.

community.crypto.x509_certificate_pipe

La documentazione ufficiale sul modulo community.crypto.x509_certificate_pipe modulo.

community.crypto.openssl_dhparam

La documentazione ufficiale sul modulo community.crypto.openssl_dhparam del modulo.

community.crypto.openssl_pkcs12

La documentazione ufficiale sul modulo community.crypto.openssl_pkcs12 modulo.

community.crypto.openssl_privatekey

La documentazione ufficiale sul modulo community.crypto.openssl_privatekey del modulo.

community.crypto.openssl_privatekey_pipe

La documentazione ufficiale sul modulo community.crypto.openssl_privatekey_pipe modulo.

community.crypto.openssl_publickey

La documentazione ufficiale sul modulo community.crypto.openssl_publickey modulo.

community.crypto.openssl_csr_info

La documentazione ufficiale sul modulo community.crypto.openssl_csr_info modulo.

Esempi

- name: Generate an OpenSSL Certificate Signing Request
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    common_name: www.ansible.com

- name: Generate an OpenSSL Certificate Signing Request with an inline key
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_content: "{{ private_key_content }}"
    common_name: www.ansible.com

- name: Generate an OpenSSL Certificate Signing Request with a passphrase protected private key
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    privatekey_passphrase: ansible
    common_name: www.ansible.com

- name: Generate an OpenSSL Certificate Signing Request with Subject information
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    country_name: FR
    organization_name: Ansible
    email_address: [email protected]
    common_name: www.ansible.com

- name: Generate an OpenSSL Certificate Signing Request with subjectAltName extension
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    subject_alt_name: 'DNS:www.ansible.com,DNS:m.ansible.com'

- name: Generate an OpenSSL CSR with subjectAltName extension with dynamic list
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    subject_alt_name: "{{ item.value | map('regex_replace', '^', 'DNS:') | list }}"
  with_dict:
    dns_server:
    - www.ansible.com
    - m.ansible.com

- name: Force regenerate an OpenSSL Certificate Signing Request
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    force: yes
    common_name: www.ansible.com

- name: Generate an OpenSSL Certificate Signing Request with special key usages
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    common_name: www.ansible.com
    key_usage:
      - digitalSignature
      - keyAgreement
    extended_key_usage:
      - clientAuth

- name: Generate an OpenSSL Certificate Signing Request with OCSP Must Staple
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    common_name: www.ansible.com
    ocsp_must_staple: yes

- name: Generate an OpenSSL Certificate Signing Request for WinRM Certificate authentication
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/winrm.auth.csr
    privatekey_path: /etc/ssl/private/winrm.auth.pem
    common_name: username
    extended_key_usage:
    - clientAuth
    subject_alt_name: otherName:1.3.6.1.4.1.311.20.2.3;UTF8:[email protected]

- name: Generate an OpenSSL Certificate Signing Request with a CRL distribution point
  community.crypto.openssl_csr:
    path: /etc/ssl/csr/www.ansible.com.csr
    privatekey_path: /etc/ssl/private/ansible.com.pem
    common_name: www.ansible.com
    crl_distribution_points:
      - full_name:
          - "URI:https://ca.example.com/revocations.crl"
        crl_issuer:
          - "URI:https://ca.example.com/"
        reasons:
          - key_compromise
          - ca_compromise
          - cessation_of_operation

Valori di ritorno

I valori di ritorno più comuni sono documentati qui, i seguenti sono i campi esclusivi di questo modulo:

Chiave Restituito Descrizione
file_di_backupstringa modificato e se backup è yes Nome del file di backup creato.
Esempio:/percorso/to/[email protected]:22~
vincoli di baselista / elementi=stringa cambiato o successo Indica se il certificato appartiene a una CA
Esempio:['CA:TRUE', 'pathLenConstraint:0']
csrstringa aggiunto in 1.0.0 di community.crypto se stato è present e contenuto_di_ritorno è yes Il contenuto del CSR (corrente o generato).
chiaveUtilizzo estesoelenco / elementi=stringa cambiato o successo Restrizione aggiuntiva sugli scopi della chiave pubblica
Esempio:['clientAuth']
nome del filestringa modificato o successo Percorso della richiesta di firma del certificato generata
Esempio:/etc/ssl/csr/www.ansible.com.csr
keyUsagelista / elementi=stringa cambiato o successo Scopo per cui la chiave pubblica può essere utilizzata
Esempio:['digitalSignature', 'keyAgreement']
vincoli_del_nome_esclusielenco / elementi=stringa aggiunto in 1.1.0 di community.crypto cambiato o successo Elenco dei sottoalberi esclusi per i quali la CA non può firmare i certificati.
Esempio:['email:.com']
vincoli_nome_permessielenco / elementi=stringa aggiunto in 1.1.0 di community.crypto cambiato o successo Elenco dei sottoalberi consentiti per i quali firmare i certificati.
Esempio:['email:.somedomain.com']
ocsp_must_staplebooleano cambiato o successo Indica se il certificato ha la funzione OCSP Must Staple abilitata.
chiave privatastringa cambiato o successo Percorso della chiave privata TLS/SSL per la quale è stato generato il CSRSarà none se la chiave privata è stata fornita in contenuto_chiave_privata.
Esempio:/etc/ssl/private/ansible.com.pem
Oggettolista / elementi=elenco cambiato o successo Un elenco delle tuple oggetto allegate al CSR
Esempio:[('CN', 'www.ansible.com'), ('O', 'Ansible')]
subjectAltNameelenco / elementi=stringa cambiato o successo I nomi alternativi per cui questo CSR è valido
Esempio:['DNS:www.ansible.com', 'DNS:m.ansible.com']

Autori

  • Yanis Guenane (@Spredzy)
  • Felix Fontein (@felixfontein)