Génération de certificats via l’intégration Cert-Manager

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 3 minutes de lecture
  • Demandez un certificat via Kubernetes cert-manager à l’aide de l’émetteur ServiceNow externe (sn-external-issuer) et enregistrez le certificat et ses informations connexes en toute sécurité dans le Kubernetes cluster en tant que secret. Dans Kubernetes, un secret est un objet qui vous permet de stocker et de gérer des informations sensibles, telles que des mots de passe, des clés API et des certificats.

    Besoins de déploiement

    • Déployez cert-manager dans votre Kubernetes environnement. Mettez à jour manager.yaml avec l’URL de l’instance, le groupe propriétaire du certificat, le propriétaire du certificat, l’environnement et le suivi du renouvellement.
    • Déployez l’émetteur ServiceNow externe (sn-external-issuer) dans votre Kubernetes environnement. Créez un Kubernetes secret clusterissuer-servicenow-credentials avec le nom d’utilisateur et le mot de passe de l’instance, en vous assurant que l’utilisateur dispose des rôles nécessaires pour demander un certificat.

    ServiceNow Émetteur externe (sn-external-issuer)

    • Les émetteurs externes étendent les fonctionnalités du gestionnaire de certificats pour émettre des certificats par le biais d’API et de services non essentiels.
    • L’émetteur ServiceNow externe est une implémentation spécifique à ServiceNow d’un émetteur externe.
    • Lorsqu’une nouvelle tâche de certificat est créée, son UID de demande de certificat et son ID système de tâche de certification sont stockés dans le cache JSON local et dans la table UID de demande de certificat vers la carte de tâche sur l’instance.
    • L’émetteur ServiceNow externe interroge l’instance pour surveiller l’état de la tâche de certificat.
    • Si la tâche de certification est à l’état Travail en cours , son UID de demande de certificat et son ID système de tâche de certification sont ajoutés à la table de carte d’UID d’émetteur externe sur l’instance et dans le cache JSON local. Pendant ce temps, Cert-manager tente automatiquement de demander le certificat.
    • À la réception d’une demande de certificat, le gestionnaire de certificat recherche une tâche correspondante dans le cache JSON local. S’il est trouvé, il interroge la même tâche ; Dans le cas contraire, il interroge l’instance pour les enregistrements à partir de la table Carte d’UID de l’émetteur externe et remplit le cache JSON local.
    • Une fois que la tâche est marquée comme terminée et que le certificat est généré, l’émetteur ServiceNow externe envoie une autre demande à l’instance, télécharge la pièce jointe du certificat et met à jour la ressource de certificat et le secret correspondant dans Kubernetes.

    Déploiement de l’émetteur externe ServiceNow dans Kubernetes

    Le déploiement de l’émetteur externe ServiceNow dans Kubernetes implique les étapes suivantes :
    1. Sur la page de téléchargement de l’instance ServiceNow, procurez-vous le package ZIP du graphique en barres ou du YAML.
    2. Personnalisez les fichiers manager.yaml ou values.yaml selon vos besoins pour votre cas d’utilisation spécifique. Ces fichiers peuvent inclure des informations essentielles telles que l’URL de l’instance et le groupe propriétaire du certificat.
    3. Créez un Kubernetes secret nommé clusterissuer-servicenow-credentials avec le nom d’utilisateur et le mot de passe de l’instance.
      Exemple de commande :
      • Créez un Kubernetes secret nommé clusterissuer-servicenow-credentials avec le nom d’utilisateur et le mot de passe de l’instance. Exemple de commande :
        kubectl create secret generic clusterissuer-servicenow-credentials
                      --from-literal=user=<user_name> --from-literal=password=<password> -n
                    system
      • Assurez-vous que l’utilisateur dispose des rôles nécessaires pour demander des certificats.
    4. Exécutez les commandes suivantes pour le déploiement.
      kubectl create ns system
      kubectl apply -f crd
      kubectl apply -f rbac
      kubectl apply -f issuers
      kubectl apply -f manager/manager.yaml
    5. (Facultatif) Personnalisez toutes les configurations supplémentaires dans les fichiers en fonction de vos besoins spécifiques.
    6. Assurez-vous que le déploiement est réussi et que l’émetteur externe ServiceNow est opérationnel.

    Demander un nouveau flux de certificats

    Après le déploiement, soumettez une ressource de certificat avec les informations suivantes dans un fichier nommé certificate_clusterissuer.yaml.

    • issuerRef : clusterissuer-servicenow
    • Émetteur : Issuer-ServiceNow
    • type : ClusterIssuer
    • issuerRef : servicenow-issuer.servicenow.com

    Voici un exemple de ressource de certificat :

    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
    name: certificate-by-clusterissuer
    spec:
    commonName: certificate-by-clusterissuer.servicenow.com
    secretName: certificate-by-clusterissuer
    dnsNames:
    - servicenow.com
    - foo.servicenow.com
    issuerRef:
    name: clusterissuer-servicenow
    group: servicenow-issuer.servicenow.com
    kind: ClusterIssuer

    Appliquer la ressource de certificat à l’aide de kubectl apply -f certificate_clusterissuer.yaml