Note

Ce plugin fait partie de la collection community.crypto (version 1.4.0).

Pour l'installer, utilisez : ansible-galaxy collection install community.crypto.

Pour l'utiliser dans un playbook, spécifiez : community.crypto.openssl_csr.

  • Synopsis
  • Exigences
  • Paramètres
  • Notes
  • Voir aussi
  • Exemples
  • Valeurs de retour

Synopsis

  • Veuillez noter que le module régénère un CSR existant s'il ne correspond pas aux options du module, ou s'il semble être corrompu. Si vous craignez que cela n'écrase votre CSR existant, envisagez d'utiliser l'option sauvegarde option.
  • Le module peut utiliser la bibliothèque Python de cryptographie, ou la bibliothèque Python pyOpenSSL. Par défaut, il essaie de détecter laquelle est disponible. Ceci peut être surchargé avec l'option select_crypto_backend option. Veuillez noter que le backend PyOpenSSL a été déprécié dans Ansible 2.9 et sera supprimé dans community.crypto 2.0.0.
  • Ce module permet de (re)générer des demandes de signature de certificats OpenSSL.
  • Ce module prend en charge les extensions subjectAltName, keyUsage, extendedKeyUsage, basicConstraints et OCSP Must Staple.

Exigences

Les exigences ci-dessous sont nécessaires sur l'hôte qui exécute ce module.

  • Soit cryptographie >= 1.3
  • Soit pyOpenSSL >= 0.15

Paramètres

Paramètre Choix/par défaut Commentaires
attributschaîne de caractères ajouté dans la version 2.3 de ansible.builtin Les attributs que le fichier ou le répertoire résultant devrait avoir.Pour obtenir les drapeaux supportés, regardez la page de manuel de chattr sur le système cible.Cette chaîne doit contenir les attributs dans le même ordre que celui affiché par lsattr.Le = est supposé par défaut, sinon + ou - doivent être inclus dans la chaîne.
alias : attr
autorité_cert_émetteurliste / elements=chaîne Noms qui seront présents dans le champ authority cert issuer de la demande de signature de certificat.Les valeurs doivent être préfixées par leurs options. (Par exemple, email, URI, DNS, RID, IP, dirName, otherName et celles spécifiques à votre CA)Exemple : DNS:ca.example.orgSi spécifié, identifiant_clé_autorité doit également être spécifié.Veuillez noter que les CA commerciales ignorent cette valeur, respectivement utilisent une valeur de leur propre choix. La spécification de cette option est surtout utile pour les certificats auto-signés ou pour les CA propres.Notez que cela n'est pris en charge que si l'option cryptography est utilisé!L'option AuthorityKeyIdentifier ne sera ajouté que si au moins un des éléments suivants est utilisé autorité_clé_identifiant, autorité_cert_émetteur et autorité_cert_numéro de série est spécifié.
numéro_sériel_cert d'autoriténombre entier Le numéro de série du cert d'autorité.Notez que cela n'est pris en charge que si le paramètre cryptography est utilisé!Veuillez noter que les CA commerciales ignorent cette valeur, respectivement utilisent une valeur de leur propre choix. La spécification de cette option est surtout utile pour les certificats auto-signés ou pour les propres CA.L'option AuthorityKeyIdentifier ne sera ajouté que si au moins un des éléments autorité_identifiant_clé, autorité_cert_émetteur et autorité_cert_numéro de série est spécifié.
identifiant_clé_de_l'autoritéchaîne de caractères L'identifiant de la clé d'autorité sous forme de chaîne hexadécimale, où deux octets sont séparés par des deux-points.Exemple : 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33Si spécifié, autorité_cert_issuer doit également être spécifié.Veuillez noter que les CA commerciales ignorent cette valeur, respectivement utilisent une valeur de leur propre choix. La spécification de cette option est surtout utile pour les certificats auto-signés ou pour les CA propres.Notez que cela n'est pris en charge que si l'option cryptography est utilisé!L'option AuthorityKeyIdentifier ne sera ajouté que si au moins un des éléments suivants est utilisé autorité_clé_identifiant, autorité_cert_émetteur et autorité_cert_numéro de série est spécifié.
sauvegardebooléen
    Choix :

  • pas de
  • oui
Créez un fichier de sauvegarde incluant un horodatage afin de pouvoir récupérer le CSR d'origine si vous l'avez écrasé avec un nouveau par accident.
contraintes_de_baseliste / elements=chaîne Indique les contraintes de base, par exemple si le certificat est une autorité de certification.
alias : basicConstraints
contraintes_de_base_critiquesbooléen
    Choix :

  • pas de
  • oui
L'extension basicConstraints doit-elle être considérée comme critique.
alias : basicConstraints_critical
nom_communchaîne de caractères Le champ commonName du sujet de la demande de signature du certificat.
alias : CN, commonName
nom_du_payschaîne de caractères Le champ countryName du sujet de la demande de signature du certificat.
alias : C, countryName
create_subject_key_identifierbooléen
    Choix :

  • pas de
  • oui
Créez le Subject Key Identifier à partir de la clé publique.Veuillez noter que les CA commerciales peuvent ignorer la valeur, respectivement utiliser une valeur de leur propre choix à la place. La spécification de cette option est surtout utile pour les certificats auto-signés ou pour les CA propres.Notez que cela n'est pris en charge que si l'option cryptography est utilisé !
crl_distribution_pointsliste / elements=dictionnaire ajouté dans la version 1.4.0 de community.crypto Permet de spécifier un ou plusieurs points de distribution de CRL.Uniquement pris en charge par l'élément cryptography backend.
crl_issuerliste / elements=chaîne Informations sur l'émetteur de la CRL.
nom_completliste / elements=chaîne Décrit comment la CRL peut être récupérée.Mutuellement exclusif avec nom_relatif Exemple : URI:https://ca.example.com/revocations.crl.
raisonsliste / elements=chaîne
    Choix :

  • clé_compromis
  • ca_compromis
  • affiliation_changé
  • remplacé par
  • cessation_de_l'opération
  • certificat_hold
  • privilège_supprimé
  • aa_compromis
Liste des raisons pour lesquelles ce point de distribution peut être utilisé lors de l'exécution des contrôles de révocation.
nom_relatifliste / elements=string Décrit comment la LCR peut être récupérée par rapport à l'émetteur de la LCR.Mutuellement exclusif avec nom_complet Exemple : /CN=example.com.ne peut être utilisé que lorsque la cryptographie >= 1.6 est installée.
digestchaîne de caractères Par défaut :
"sha256"
Le condensé utilisé lors de la signature de la demande de signature de certificat avec la clé privée.
adresse_emailchaîne de caractères Le champ emailAddress du sujet de la demande de signature du certificat.
alias : E, emailAddress
utilisation_clé_étendueliste / elements=string Restrictions supplémentaires (par exemple, authentification du client, authentification du serveur) sur les fins autorisées pour lesquelles la clé publique peut être utilisée.
alias : extKeyUsage, extendedKeyUsage
utilisation_de_la_clé_étendue_critiquebooléen
    Choix :

  • pas de
  • oui
L'extension extkeyUsage doit-elle être considérée comme critique.
alias : extKeyUsage_critical, extendedKeyUsage_critical.
forcebooléen
    Choix :

  • pas de
  • oui
La demande de signature de certificat doit-elle être forcée à être régénérée par ce module ansible.
groupechaîne de caractères Nom du groupe qui devrait être propriétaire du fichier/répertoire, comme serait alimenté à... chown.
utilisation_cléliste / elements=string Définit l'objectif (par exemple, le chiffrement, la signature, la signature du certificat) de la clé contenue dans le certificat.
alias : keyUsage
key_usage_criticalbooléen
    Choix :

  • pas de
  • oui
L'extension keyUsage doit-elle être considérée comme critique.
alias : keyUsage_critical
nom_localitéchaîne de caractères Le champ localityName du sujet de la demande de signature du certificat.
alias : L, localityName
modebrut Les permissions que le fichier ou le répertoire résultant doit avoir.Pour ceux qui ont l'habitude de /usr/bin/chmod rappelez-vous que les modes sont en fait des nombres octaux. Vous devez soit ajouter un zéro de tête pour que l'analyseur YAML d'Ansible sache qu'il s'agit d'un nombre octal (comme 0644 ou 01777) ou le citer (comme '644' ou '1777') afin qu'Ansible reçoive une chaîne de caractères et puisse effectuer sa propre conversion de chaîne en nombre.Donner à Ansible un nombre sans suivre l'une de ces règles aboutira à un nombre décimal qui aura des résultats inattendus.À partir d'Ansible 1.8, le mode peut être spécifié comme un mode symbolique (par exemple, u+rwx ou u=rw,g=r,o=r).si mode n'est pas spécifié et que le fichier de destination n'est pas existe pas, la valeur par défaut umask sur le système sera utilisé lors de la définition du mode pour le fichier nouvellement créé.Si mode n'est pas spécifié et que le fichier de destination fait existe, le mode du fichier existant sera utilisé.En spécifiant mode est le meilleur moyen de s'assurer que les fichiers sont créés avec les bonnes permissions. Voir CVE-2020-1736 pour plus de détails.
nom_constraintes_critiquesbooléen ajouté dans la version 1.1.0 de community.crypto
    Choix :

  • pas de
  • oui
L'extension des contraintes de nom doit-elle être considérée comme critique.
contraintes_nominales_excluesliste / elements=chaîne ajouté dans la version 1.1.0 de community.crypto Pour les certificats CA, ceci spécifie une liste d'identifiants qui décrivent des sous-arbres de noms pour lesquels cette CA n'est *pas* autorisée à émettre des certificats.Les valeurs doivent être préfixées par leurs options. (i.e., email, URI, DNS, RID, IP, dirName, otherName et celles spécifiques à votre AC).
nom_constraintes_permisliste / elements=string ajouté dans la version 1.1.0 de community.crypto Pour les certificats d'AC, ceci spécifie une liste d'identifiants qui décrivent des sous-arbres de noms pour lesquels cette AC est autorisée à émettre des certificats.Les valeurs doivent être préfixées par leurs options. (c'est-à-dire , email, URI, DNS, RID, IP, dirName, otherName et celles spécifiques à votre AC).
ocsp_must_staple (agrafe)boolean
    Choix :

  • pas de
  • oui
Indique que le certificat doit contenir l'extension OCSP Must Staple (https://tools.ietf.org/html/rfc7633).
alias : ocspMustStaple
ocsp_must_staple_criticalbooléen
    Choix :

  • pas de
  • oui
L'extension OCSP Must Staple doit-elle être considérée comme critique.Notez que selon le RFC, cette extension ne doit pas être marquée comme critique, car les anciens clients ne connaissant pas l'OCSP Must Staple sont tenus de rejeter de tels certificats (cf. https://tools.ietf.org/html/rfc7633#section-4).
alias : ocspMustStaple_critical
nom_de_l'organisationchaîne de caractères Le champ organizationName du sujet de la demande de signature du certificat.
alias : O, organizationName
nom_de_l'unité_organisationnellechaîne de caractères Le champ organizationalUnitName du sujet de la demande de signature du certificat.
alias : OU, organizationalUnitName
propriétairechaîne de caractères Nom de l'utilisateur qui devrait être le propriétaire du fichier/répertoire, comme cela serait alimenté par. chown.
cheminchemin / requis Le nom du fichier dans lequel la demande de signature de certificat OpenSSL générée sera écrite.
privatekey_contentchaîne de caractères ajouté dans la version 1.0.0 de community.crypto Le contenu de la clé privée à utiliser lors de la signature de la demande de signature de certificat.Either chemin_de_la_clef_privée ou privatekey_content doit être spécifié si état est presentmais pas les deux.
clé privée_passphrasechaîne de caractères La passphrase pour la clé privée.Ceci est requis si la clé privée est protégée par un mot de passe.
chemin_de_la_clé_privéechemin d'accès Le chemin d'accès à la clé privée à utiliser lors de la signature de la demande de signature de certificat.Either chemin_de_la_clef_privée ou privatekey_content doit être spécifié si état est presentmais pas les deux.
retour_contenubooléen ajouté dans la version 1.0.0 de community.crypto
    Choix :

  • pas de
  • oui
Si la valeur est fixée à yesle contenu du CSR (actuel ou généré) sera retourné sous la forme suivante csr.
select_crypto_backendchaîne de caractères
    Choix :

  • auto
  • cryptographie
  • pyopenssl
Détermine le backend de cryptographie à utiliser.Le choix par défaut est auto, qui essaie d'utiliser cryptography si elle est disponible, et se rabat sur pyopensslSi l'on choisit pyopensslil essaiera d'utiliser l'option pyOpenSSL Si elle est définie sur cryptography, essaiera d'utiliser la bibliothèque cryptographie Veuillez noter que la bibliothèque pyopenssl a été déprécié dans Ansible 2.9, et sera supprimé dans community.crypto 2.0.0. À partir de ce moment-là, seule la bibliothèque cryptography backend sera disponible.
selevelchaîne de caractères La partie niveau du contexte de fichier SELinux.Il s'agit de l'attribut MLS/MCS, parfois connu sous le nom de rangeLorsqu'il est défini à _defaultil utilisera l'attribut level de la politique si elle est disponible.
serolechaîne de caractères La partie rôle du contexte de fichier SELinux.Lorsqu'elle est définie sur _defaultil utilisera l'option role de la politique si elle est disponible.
setypechaîne de caractères La partie type du contexte de fichier SELinux.Lorsqu'elle est définie sur _defaultil utilisera le type type de la politique si elle est disponible.
seuserchaîne de caractères La partie utilisateur du contexte de fichier SELinux.Par défaut, il utilise la partie system lorsqu'elle est applicable. _defaultil utilisera la politique user de la politique si elle est disponible.
étatchaîne de caractères
    Choix :

  • absent
  • présent
Indique si la demande de signature de certificat doit exister ou non, en prenant des mesures si l'état est différent de ce qui est indiqué.
nom_de_l'état_ou_de_la_provincechaîne de caractères Le champ stateOrProvinceName du sujet de la demande de signature du certificat.
alias : ST, stateOrProvinceName
sujetdictionnaire Paires de clés/valeurs qui seront présentes dans le champ du nom du sujet de la demande de signature du certificat.Si vous devez spécifier plus d'une valeur avec la même clé, utilisez une liste comme valeur.
nom_sujet_altliste / elements=string Extension du nom alternatif du sujet (SAN) à joindre à la demande de signature du certificat.Il peut s'agir d'une 'chaîne séparée par des virgules' ou d'une liste YAML.Les valeurs doivent être préfixées par leurs options. (i.e., email, URI, DNS, RID, IP, dirName, otherName Notez que si aucun SAN n'est spécifié, mais un nom commun, le nom commun sera ajouté en tant que SAN, à l'exception des cas suivants useCommonNameForSAN est défini sur false.plus à https://tools.ietf.org/html/rfc5280#section-4.2.1.6.
alias : subjectAltName
nom_alt_sujet_critiquebooléen
    Choix :

  • pas de
  • oui
L'extension subjectAltName doit-elle être considérée comme critique.
alias : subjectAltName_critical
subject_key_identifierchaîne de caractères L'identifiant de la clé du sujet sous forme de chaîne hexadécimale, où deux octets sont séparés par des deux points.Exemple : 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:22:33Veuillez noter que les CA commerciales ignorent cette valeur, respectivement utilisent une valeur de leur propre choix. La spécification de cette option est surtout utile pour les certificats auto-signés ou pour les propres CA.Notez que cette option peut seulement être utilisée si create_subject_key_identifier est noNotez que ceci n'est pris en charge que si le paramètre cryptography est utilisé !
unsafe_writesboolean ajouté dans la version 2.2 de ansible.builtin
    Choix :

  • pas de
  • oui
Influence quand utiliser l'opération atomique pour empêcher la corruption des données ou les lectures incohérentes du fichier cible.Par défaut, ce module utilise des opérations atomiques pour empêcher la corruption des données ou les lectures incohérentes des fichiers cibles, mais parfois les systèmes sont configurés ou simplement cassés de manière à empêcher cela. Cette option permet à Ansible de se rabattre sur des méthodes non sécurisées de mise à jour des fichiers lorsque les opérations atomiques échouent (cependant, elle ne force pas Ansible à effectuer des écritures non sécurisées).IMPORTANT ! Les écritures non sécurisées sont sujettes à des conditions de course et peuvent entraîner une corruption des données.
utiliser_le_nom_common_pour_sanboolean
    Choix :

  • pas de
  • oui
Si réglé sur yes, le module remplira le nom commun pour subject_alt_name avec DNS: préfixe si aucun SAN n'est spécifié.
alias : useCommonNameForSAN
versionnombre entier Par défaut :
1
La version de la demande de signature de certificat.La seule valeur autorisée selon la norme RFC 2986 est 1.Cette option n'acceptera plus les valeurs non prises en charge à partir de community.crypto 2.0.0.

Notes

Note

  • Si la demande de signature de certificat existe déjà, il sera vérifié si subjectAltName, keyUsage, extendedKeyUsage et basicConstraints contiennent uniquement les valeurs demandées, si OCSP Must Staple est conforme à la demande et si la demande a été signée par la clé privée donnée.

Voir aussi

Voir aussi

community.crypto.openssl_csr_pipe

La documentation officielle sur le communauté.crypto.openssl_csr_pipe module.

communauté.crypto.x509_certificat

La documentation officielle sur le module communauté.crypto.x509_certificat module.

community.crypto.x509_certificate_pipe

La documentation officielle sur le module communauté.crypto.x509_certificate_pipe module.

communauté.crypto.openssl_dhparam

La documentation officielle sur le module communauté.crypto.openssl_dhparam module.

communauté.crypto.openssl_pkcs12

La documentation officielle sur le module communauté.crypto.openssl_pkcs12 module.

communauté.crypto.openssl_privatekey

La documentation officielle sur le module communauté.crypto.openssl_privatekey module.

communauté.crypto.openssl_privatekey_pipe

La documentation officielle sur le module communauté.crypto.openssl_privatekey_pipe module.

communauté.crypto.openssl_publickey

La documentation officielle sur le module communauté.crypto.openssl_publickey module.

community.crypto.openssl_csr_info

La documentation officielle sur le module community.crypto.openssl_csr_info module.

Exemples

- 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

Valeurs de retour

Les valeurs de retour courantes sont documentées ici, les champs suivants sont propres à ce module :

Clé Retourné Description
fichier_de_sauvegardechaîne de caractères modifié et si sauvegarde est yes Nom du fichier de sauvegarde créé.
Echantillon :/chemin/vers/[email protected]:22~
Contraintes de baseliste / elements=chaîne modifié ou succès Indique si le certificat appartient à une autorité de certification
Exemple :['CA:TRUE', 'pathLenConstraint:0']
csrchaîne de caractères ajouté dans la version 1.0.0 de community.crypto si état est present et retour_contenu est yes Le contenu du CSR (actuel ou généré).
extendedKeyUsageliste / elements=chaîne modifié ou succès Restriction supplémentaire sur les objectifs de la clé publique
Exemple :['clientAuth']
nom de fichierchaîne de caractères modifié ou succès Chemin d'accès à la demande de signature de certificat générée
Exemple :/etc/ssl/csr/www.ansible.com.csr
cléUsageliste / elements=chaîne modifié ou succès Objet pour lequel la clé publique peut être utilisée
Exemple :['digitalSignature', 'keyAgreement']
nom_constraintes_excluesliste / elements=string ajouté dans la version 1.1.0 de community.crypto modifié ou succès Liste des sous-arbres exclus pour lesquels l'AC ne peut pas signer de certificats.
Exemple :['email:.com']
nom_constraintes_permisliste / elements=string ajouté dans la version 1.1.0 de community.crypto modifié ou succès Liste des sous-arbres autorisés pour lesquels signer des certificats.
Exemple :['email:.somedomain.com']
ocsp_must_staplebooléen modifié ou réussi Indique si le certificat a la fonctionnalité OCSP Must Staple activée.
clé privéechaîne de caractères modifié ou réussi Chemin d'accès à la clé privée TLS/SSL pour laquelle la RSC a été généréeSera none si la clé privée a été fournie dans privatekey_content.
Exemple :/etc/ssl/private/ansible.com.pem
sujetliste / elements=list modifié ou réussi Une liste des tuples de sujets attachés au CSR.
Exemple :[('CN', 'www.ansible.com'), ('O', 'Ansible')]
subjectAltNameliste / elements=string modifié ou succès Les noms alternatifs pour lesquels ce CSR est valable
Exemple :['DNS:www.ansible.com', 'DNS:m.ansible.com']

Auteurs

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