Aller au contenu principal
Version : 5.7

Gérer les autorités de certification (CA)

Les autorités de certifications permettent à BlueMind de se connecter en TLS à un service externe. Par exemple :

  • pour le stockage de fichiers : Nextcloud, serveur WebDav, Alfresco, ...
  • pour l'authentification externe : OpenID Connect, Keycloak, ...
  • pour le stockage objet : S3 interne (MinIO, Ceph, Scality, ...)
  • pour la visioconférence ou la téléphonie : Zoom, Temas, Pexip, Wazo, ...
  • pour l'import LDAP en LDAPS/StartTLS, si l'option «accepter tous les certificats » n'est pas cochée

Quand faut-il ajouter une CA ?​

Lorsque le certificat est signé par une CA non connue par Java, la CA doit être ajoutée au système. Il peut s'agir :

  • d'une PKI interne
  • d'une CA privée ou auto-signée
  • d'un proxy sortant qui fait de l'inspection TLS et re-signe tous les certificats avec la CA de l'entreprise

L'ajout d'une CA n'est pas nécessaire dans les cas suivants :

  • certificats publics (Let's Encrypt, CA commerciales…), déjà reconnus
  • import Active Directory, qui accepte tous les certificats
  • certificat du site web BlueMind lui-même, qui relève d'une autre procédure
  • CA S/MIME, gérées à part dans BlueMind
  • modules pour lesquels la vérification des certificats est désactivée (voir le paragraphe dédié)
symptôme typique

Une CA doit être ajoutée lorsque les logs (/var/log/bm/core.log …) indiquent :

javax.net.ssl.SSLHandshakeException: PKIX path building failed ...
unable to find valid certification path to requested target

Ajouter une CA au système​

Pour faire reconnaître une CA par BlueMind, celle-ci doit être ajoutée au magasin de confiance du système, avec les outils de l'OS.

bm-jdk

Depuis la version 25.0.4.1 de JDK, le paquet bm-jdk livré avec BlueMind n'a plus sa propre liste d'autorités de certification. Son fichier lib/security/cacerts pointe vers le magasin de confiance Java du système, généré par les outils de l'OS.
Les CA ne doivent donc plus être importées avec keytool dans le JDK (elles seraient perdues à la mise à jour suivante) mais ajoutées au système.

L'opération consiste à déposer le certificat de la CA dans le répertoire de l'OS, régénérer les magasins de confiance puis redémarrer BlueMind pour que Java lise le magasin de confiance.

  1. Préparer le certificat

    • Récupérer le certificat de la CA racine (et des intermédiaires si besoin) auprès de l'équipe PKI du client, puis contrôler le fichier :
    openssl x509 -in ma-ca.crt -noout -subject -issuer -enddate
    • Si le certificat est au format DER (binaire), le convertir en PEM :
    openssl x509 -inform der -in ma-ca.cer -out ma-ca.crt
  2. Régénérer le magasin de confiance

    • Debian/Ubuntu
    # Ajout : fichier PEM, extension .crt obligatoire
    cp ma-ca.crt /usr/local/share/ca-certificates/ma-ca.crt
    update-ca-certificates

    # Mise à jour : écraser le fichier puis régénérer complètement
    cp ma-ca-nouvelle.crt /usr/local/share/ca-certificates/ma-ca.crt
    update-ca-certificates --fresh

    # Suppression
    rm /usr/local/share/ca-certificates/ma-ca.crt
    update-ca-certificates --fresh
    • RHEL/Rocky/Alma.
    # Ajout ou mise à jour
    cp ma-ca.crt /etc/pki/ca-trust/source/anchors/ma-ca.crt
    update-ca-trust extract

    # Suppression
    rm /etc/pki/ca-trust/source/anchors/ma-ca.crt
    update-ca-trust extract
  3. Redémarrer BlueMind

    bmctl restart

    ❗ En installation multi-serveurs, faire l'opération sur chaque serveur qui utilisant des services BlueMind Java.

Vérifier les CA​

Le cacerts du JDK doit pointer vers le magasin système, et la CA doit y apparaître. Pour véririfer, rechercher le CN de la CA :

ls -l /usr/lib/jvm/bm-jdk/lib/security/cacerts
/usr/lib/jvm/bm-jdk/bin/keytool -list -v -cacerts -storepass changeit | grep -
i "CN=Ma CA Interne"

Désactiver la vérification des certificats (solution alternative)​

Dans le cas d'une plateforme de tests ou de pré-production, il est possible de désactiver la vérification par BlueMind des certificats de certains modules (mode « trust all »).

recommandation

La connexion n'est alors plus protégée contre une interception. Ce mode ne peut servir que de contournement temporaire.
L'ajout de la CA reste la solution recommandée.

Ce mode est configuré par la clé de configuration système tls_trust_allcertificates.

# Voir les modules actuellement en mode "trust all"
bm-cli sysconf list | grep tls_trust_allcertificates

# Désactiver la vérification pour un module
bm-cli security ssl-trust-mode --module webdav

# Réactiver la vérification pour ce module
bm-cli security ssl-trust-mode --module webdav --disable

# Désactiver la vérification pour tous les modules
bm-cli security ssl-trust-mode --module ALL
à savoir
  • Si un module est dans la liste, ajouter la CA ne change rien pour lui : aucun certificat n'est vérifié. Sur les installations mises à jour depuis une version antérieure à fin 2023, la liste contient par défaut setup-wizard , wazo , openid-connect , webdav et certificate_report.
  • Pour imposer la vérification après avoir ajouté la CA, retirer le module de la liste avec --disable.
  • --module ALL --disable vide toute la liste, pas seulement l'entrée ALL.
  • Ajouter un module alors que ALL est actif remplace ALL par ce seul module.
  • En cas de doute sur la prise en compte du changement, redémarrer BlueMind ( bmctl restart ).

Pour aller plus loin​

Consultez la documentation BlueMind en relation