Rechercher

17.8. Utilisation de SCEP avec certmonger

download PDF

Le Simple Certificate Enrollment Protocol (SCEP) est un protocole de gestion des certificats que vous pouvez utiliser sur différents appareils et systèmes d'exploitation. Si vous utilisez un serveur SCEP en tant qu'autorité de certification (CA) externe dans votre environnement, vous pouvez utiliser certmonger pour obtenir un certificat pour un client Identity Management (IdM).

17.8.1. Vue d'ensemble de SCEP

Le Simple Certificate Enrollment Protocol (SCEP) est un protocole de gestion des certificats que vous pouvez utiliser sur différents appareils et systèmes d'exploitation. Vous pouvez utiliser un serveur SCEP comme autorité de certification (CA) externe.

Vous pouvez configurer un client de gestion d'identité (IdM) pour qu'il demande et récupère un certificat via HTTP directement auprès du service SCEP de l'autorité de certification. Ce processus est sécurisé par un secret partagé qui n'est généralement valable que pour une durée limitée.

Du côté client, SCEP exige que vous fournissiez les composants suivants :

  • URL SCEP : l'URL de l'interface SCEP de l'AC.
  • Secret partagé SCEP : un code PIN challengePassword partagé entre l'autorité de certification et le client SCEP, utilisé pour obtenir le certificat.

Le client récupère ensuite la chaîne de certificats de l'autorité de certification via SCEP et envoie une demande de signature de certificat à l'autorité de certification.

Lors de la configuration de SCEP avec certmonger, vous créez un nouveau profil de configuration de l'autorité de certification qui spécifie les paramètres du certificat émis.

17.8.2. Demande d'un certificat signé par l'AC IdM via SCEP

L'exemple suivant ajoute une configuration d'autorité de certification SCEP_example SCEP à certmonger et demande un nouveau certificat au client IdM client.idm.example.com. certmonger prend en charge à la fois le format de base de données de certificats NSS et les formats basés sur des fichiers (PEM), tels que OpenSSL.

Conditions préalables

  • Vous connaissez l'URL de SCEP.
  • Vous disposez du secret partagé challengePassword PIN.

Procédure

  1. Ajouter la configuration de l'autorité de certification à certmonger:

    [root@client.idm.example.com ~]# getcert add-scep-ca -c SCEP_example -u SCEP_URL
    • -c: Pseudonyme obligatoire pour la configuration de l'autorité de certification. La même valeur peut être utilisée ultérieurement avec d'autres commandes getcert.
    • -u: URL de l'interface SCEP du serveur.

      Important

      Lorsque vous utilisez une URL HTTPS, vous devez également spécifier l'emplacement de la copie formatée PEM du certificat CA du serveur SCEP à l'aide de l'option -R.

  2. Vérifiez que la configuration de l'autorité de certification a été ajoutée avec succès :

    [root@client.idm.example.com ~]# getcert list-cas -c SCEP_example
    CA 'SCEP_example':
           is-default: no
           ca-type: EXTERNAL
           helper-location: /usr/libexec/certmonger/scep-submit -u http://SCEP_server_enrollment_interface_URL
           SCEP CA certificate thumbprint (MD5): A67C2D4B 771AC186 FCCA654A 5E55AAF7
           SCEP CA certificate thumbprint (SHA1): FBFF096C 6455E8E9 BD55F4A5 5787C43F 1F512279

    Si la configuration a été ajoutée avec succès, certmonger récupère la chaîne d'autorité de certification de l'autorité de certification distante. La chaîne d'autorité de certification apparaît alors sous forme d'empreintes dans la sortie de la commande. Lors de l'accès au serveur via HTTP non chiffré, comparez manuellement les empreintes avec celles affichées sur le serveur SCEP afin d'éviter une attaque de type "man-in-the-middle".

  3. Demander un certificat à l'autorité de certification :

    • Si vous utilisez NSS :

      [root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -d /etc/pki/nssdb -n ExampleCert -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.com

      Les options permettent de spécifier les paramètres suivants de la demande de certificat :

      • -I: (Optional) Nom de la tâche : l'ID de suivi de la demande. La même valeur peut être utilisée ultérieurement avec la commande getcert list.
      • -c: Configuration de l'autorité de certification à laquelle soumettre la demande.
      • -d: Répertoire avec la base de données NSS pour stocker le certificat et la clé.
      • -n: Pseudonyme du certificat, utilisé dans la base de données du SSN.
      • -N: Nom du sujet dans le CSR.
      • -L: Code PIN challengePassword à usage unique et limité dans le temps, délivré par l'AC.
      • -D: Nom alternatif du sujet pour le certificat, généralement le même que le nom d'hôte.
    • Si vous utilisez OpenSSL :

      [root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -f /etc/pki/tls/certs/server.crt -k /etc/pki/tls/private/private.key -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.com

      Les options permettent de spécifier les paramètres suivants de la demande de certificat :

      • -I: (Optional) Nom de la tâche : l'ID de suivi de la demande. La même valeur peut être utilisée ultérieurement avec la commande getcert list.
      • -c: Configuration de l'autorité de certification à laquelle soumettre la demande.
      • -f: Chemin d'accès au certificat.
      • -k: Chemin d'accès à la clé.
      • -N: Nom du sujet dans le CSR.
      • -L: Code PIN challengePassword à usage unique et limité dans le temps, délivré par l'AC.
      • -D: Nom alternatif du sujet pour le certificat, généralement le même que le nom d'hôte.

Vérification

  1. Vérifiez qu'un certificat a été émis et correctement stocké dans la base de données locale :

    • Si vous avez utilisé NSS, entrez :

      [root@client.idm.example.com ~]# getcert list -I Example_Task
      	Request ID 'Example_Task':
              status: MONITORING
              stuck: no
              key pair storage: type=NSSDB,location='/etc/pki/nssdb',nickname='ExampleCert',token='NSS Certificate DB'
              certificate: type=NSSDB,location='/etc/pki/nssdb',nickname='ExampleCert',token='NSS Certificate DB'
              signing request thumbprint (MD5): 503A8EDD DE2BE17E 5BAA3A57 D68C9C1B
              signing request thumbprint (SHA1): B411ECE4 D45B883A 75A6F14D 7E3037F1 D53625F4
              CA: IPA
              issuer: CN=Certificate Authority,O=EXAMPLE.COM
              subject: CN=client.idm.example.com,O=EXAMPLE.COM
              expires: 2018-05-06 10:28:06 UTC
              key usage: digitalSignature,keyEncipherment
              eku: iso.org.dod.internet.security.mechanisms.8.2.2
              certificate template/profile: IPSECIntermediateOffline
              pre-save command:
              post-save command:
              track: yes
      	auto-renew: yes
    • Si vous avez utilisé OpenSSL, entrez :

      [root@client.idm.example.com ~]# getcert list -I Example_Task
      Request ID 'Example_Task':
             status: MONITORING
             stuck: no
             key pair storage: type=FILE,location='/etc/pki/tls/private/private.key'
             certificate: type=FILE,location='/etc/pki/tls/certs/server.crt'
             CA: IPA
             issuer: CN=Certificate Authority,O=EXAMPLE.COM
             subject: CN=client.idm.example.com,O=EXAMPLE.COM
             expires: 2018-05-06 10:28:06 UTC
             eku: id-kp-serverAuth,id-kp-clientAuth
             pre-save command:
             post-save command:
             track: yes
             auto-renew: yes

      L'état MONITORING signifie que le certificat délivré a été récupéré avec succès. La page de manuel getcert-list(1) répertorie les autres états possibles et leur signification.

Ressources supplémentaires

  • Pour plus d'options lors de la demande d'un certificat, voir la page de manuel getcert-request(1).

17.8.3. Renouvellement automatique des certificats AD SCEP avec certmonger

Lorsque certmonger envoie une demande de renouvellement de certificat SCEP, cette demande est signée à l'aide de la clé privée du certificat existant. Cependant, les demandes de renouvellement envoyées par certmonger incluent par défaut le PIN challengePassword qui a été utilisé pour obtenir les certificats à l'origine.

Un serveur Active Directory (AD) Network Device Enrollment Service (NDES) qui fonctionne comme serveur SCEP rejette automatiquement toutes les demandes de renouvellement qui contiennent le PIN original challengePassword. Par conséquent, le renouvellement échoue.

Pour que le renouvellement avec AD fonctionne, vous devez configurer certmonger pour qu'il envoie les demandes de renouvellement signées sans le code PIN de challengePassword. Vous devez également configurer le serveur AD de manière à ce qu'il ne compare pas le nom du sujet lors du renouvellement.

Note

Il se peut que des serveurs SCEP autres qu'AD refusent également les demandes contenant l'adresse challengePassword. Dans ce cas, il se peut que vous deviez également modifier la configuration de certmonger de cette manière.

Conditions préalables

  • Le serveur RHEL doit être équipé de RHEL 8.6 ou d'une version plus récente.

Procédure

  1. Ouvrez regedit sur le serveur AD.
  2. Dans la sous-clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MSCEP, ajoutez une nouvelle entrée REG_DWORD de 32 bits DisableRenewalSubjectNameMatch et définissez sa valeur à 1.
  3. Sur le serveur où certmonger est exécuté, ouvrez le fichier /etc/certmonger/certmonger.conf et ajoutez la section suivante :

    [scep]
    challenge_password_otp = yes
  4. Redémarrer certmonger :

    # systemctl restart certmonger
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.