Project

General

Profile

Tâche #30893

Scénario #24151: Les certificats de Samba sont des certificats non géré

Étude des options de configuration de TLS pour Samba

Added by Benjamin Bohard 11 months ago. Updated 9 months ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Start date:
10/20/2020
Due date:
% Done:

100%

Remaining (hours):
0.0

History

#2 Updated by Benjamin Bohard 11 months ago

Le certificat est utilisé pour les contrôleurs de domaine uniquement, soit sur un Seth en mode contrôleur de domaine, le conteneur addc du Scribe (avec addc local) et le conteneur domaine de l’amonecole.

On peut utiliser les fragments de code placés dans /usr/share/eole/certs avec plus ou moins d’adaptation selon le contexte :
- si on déclare les conteneurs sur Seth, on peut mutualiser le code pour Seth et amonecole.
- il faut traiter le cas du Scribe à part parce que le conteneur n’est pas géré de la même manière et le paquet installé n’est pas le même.

#3 Updated by Benjamin Bohard 11 months ago

Points problématiques :
- dans la configuration samba, il faut fournir le chemin d’un fichier contenant les certificats intermédiaires si ils existent, ou une valeur vide ;
- la fonction InstallSSLFiles ne prévoit pas la gestion des certificats intermédiaires ;
- la fonction gen_certif ne prévoit pas la copie des certificats du système.

Le premier point nécessiterait une condition dans le template sur l’existence du fichier contenant les certificats intérmédiaires. Ce fichier ne sera jamais créé dans le cas d’un certificat auto-signé (pas d’intermédiaires). Ce fichier doit être créé avant la templatisation des smb-ad.conf dans le cas d’un certificat avec racine publique.

Scénarios possibles de mise en place des certificats :

Cas du certificat auto-signé

  1. templatisation de smb-ad.conf avec l’option tls cafile vide et les chemins de la clé et du certificat dans /var/lib/samba/private/tls/private et /var/lib/samba/private/tls/certs respectivement,
  2. génération des certificats et clé avant posttemplate,
  3. copie du certificat et de la clé dans les emplacements renseignés dans la configuration de samba à l’aide de la fonction InstallSSLFiles

Cas du certificat à racine publique

  1. copie du certificat sur le serveur,
  2. génération du fichier de certificats intermédaires si nécessaire, à l’aide des fonctions de creole/cert.py, avant la templatisation de smb-ad.conf,
  3. templatisation de smb-ad.conf avec l’option tls cafile adaptée selon la présence ou non du fichier de certificats intermédiaires,
  4. copie du certificat et de la clé dans les emplacements renseignés dans la configuration de samba à l’aide de la fonction InstallSSLFiles.

#4 Updated by Benjamin Bohard 11 months ago

  • Status changed from Nouveau to En cours

#5 Updated by Benjamin Bohard 11 months ago

Le certificat du serveur étant utilisé, il faut s’assurer qu’il est valide pour les différents noms de domaine.
Il faut ajouter le nom du contrôleur de domaine lorsque celui-ci est différent du nom de machine.
Il est possible d’utiliser la variable ssl_subjectaltname et de documenter ce nouvel usage.
Sinon, il faut modifier le template certif-eole.tmpl pour introduire le nom du contrôleur de domaine si besoin.

#6 Updated by Benjamin Bohard 11 months ago

Dans le cas du conteneur addc, la procédure ne peut pas être celle identifiée auparavant puisque les différents éléments nécessaires (certificats, chaîne de certification) ne sont pas forcément disponibles.

  1. création du conteneur addc en preservice avec les certificats créés par samba (le certificat de la machine n’est pas disponible dans le cas autosigné),
  2. procédure normale de création des certificats (avant run_parts posttemplate),
  3. copie des certificat et clé écrasant ceux créés par samba,
  4. génération du fichier des certificats intermédiaires si besoin,
  5. templatisation à nouveau du fichier de configuration smb.conf pour le conteneur addc pour tenir compte de ce fichier des certificats intermédiaires,
  6. redémarrage du service samba-ad-dc dans le conteneur.

#7 Updated by Benjamin Bohard 11 months ago

  • Status changed from En cours to Résolu

#8 Updated by Emmanuel GARETTE 11 months ago

  • Assigned To set to Benjamin Bohard
  • % Done changed from 0 to 100

#9 Updated by Daniel Dehennin 9 months ago

  • Status changed from Résolu to Fermé
  • Remaining (hours) set to 0.0

Also available in: Atom PDF