Installer SSCEP pour Linux (Debian Buster) et demander des certificats via le service d'enregistrement des périphériques réseau (NDES)

Si l'on souhaite équiper une grande quantité de systèmes avec des certificats, il faut une demande manuelle et le renouvellement des certificats ne sont pas une option. La seule voie possible est l'automatisation.

Pour les systèmes qui ne sont pas membres de la structure globale d'Active Directory, une demande automatique de certificat via RPC/DCOM pas une option.

Pour certains cas d'application, le Simple Certificate Enrollment Protocol (SCEP) est une alternative intéressante. Pour ce protocole, il n'existe pas seulement des clients pour Windows, mais aussi pour Linux avec SSCEP. SSCEP est notamment utilisé par les clients légers avec le protocole Système d'exploitation eLux est utilisé.

Voici comment configurer le client SSCEP sur un système Debian Buster Linux, soit pour administrer des serveurs, soit pour tester le comportement côté client.

Le service d'enregistrement des périphériques réseau (Network Device Enrollment Service, NDES) offre la possibilité de demander des certificats auprès d'une autorité de certification pour les périphériques qui ne disposent pas d'un identifiant dans Active Directory (par exemple les périphériques réseau tels que les routeurs, les commutateurs, les imprimantes, les clients légers ou les smartphones et tablettes). Pour une description plus détaillée, voir l'article "Principes de base du service d'enregistrement des périphériques réseau (Network Device Enrollment Service, NDES)„ .

Traduction et installation du client SSCEP

Malheureusement, SSCEP n'est pas encore disponible sous forme de paquet pour Debian. Il faut donc le traduire soi-même à partir du code source.

Pour cela, les dépendances suivantes doivent être installées :

apt install git build-essential automake libtool pkg-config libssl-dev

Ensuite, le code source peut être téléchargé depuis le dépôt Git.

git clone https://github.com/certnanny/sscep.git
cd sscep

Comme SSCEP a été développé dans l'optique d'un support multi-plateforme, les fichiers nécessaires à la traduction du code source pour Linux doivent d'abord être créés.

autoheader
libtoolize
automake -a -c -f
automake --add-missing
autoreconf

Ensuite, le code source peut être traduit et le programme traduit peut être installé.

./configure
make
make install

Configurer le client SSCEP

Connaissez-vous TameMyCerts? TameMyCerts est un add-on pour l'autorité de certification Microsoft (Active Directory Certificate Services). Il étend la fonction de l'autorité de certification et permet de Application de la réglementationIl s'agit d'un logiciel de gestion des certificats qui permet d'automatiser l'émission de certificats en toute sécurité. TameMyCerts est unique dans l'écosystème Microsoft, a déjà fait ses preuves dans d'innombrables entreprises du monde entier et est disponible sous une licence libre. Il peut téléchargé via GitHub et être utilisé gratuitement. Une maintenance professionnelle est également proposée.

Pour générer une demande de certificat, le code source est accompagné d'un script shell appelé mkrequest, qui doit être rendu exécutable et adapté.

chmod +x mkrequest
nano mkrequest

Le fichier de configuration permet de configurer les noms de fichier pour la demande de certificat et la clé, les champs généraux du Subject ainsi que la longueur de la clé.

Veuillez noter que l'autorité de certification derrière NDES refusera la demande de certificat si la longueur de clé configurée ici est trop petite.

Le script doit également être adapté pour que (si cela est utilisé) le mot de passe à usage unique soit dans le bon codage. La ligne suivante doit être ajoutée dans la zone „[ req ]“ :

string_mask = nombstr

Cette étape est nécessaire car OpenSSL, dans sa configuration par défaut, encode les attributs des certificats en UTF-8, y compris le mot de passe à usage unique qui est stocké comme attribut dans la demande de certificat. NDES ne peut pas interpréter un mot de passe à usage unique codé en UTF-8, de sorte que la demande de certificat échouerait.

Pour SSCEP, le code source est également accompagné d'un fichier de configuration qui doit être adapté.

nano sscep.cnf

Il convient ici de procéder aux réglages suivants :

VariableDescriptionExemple
URLL'adresse complète du serveur NDES.http://{ndes-server}/certsrv/mscep/mscep.dll/pkiclient.exe
CACertFileLe nom de fichier du certificat d'autorité de certification (il sera chargé par le serveur NDES à l'étape suivante et écrit dans ce fichier).ca.crt
DébogageLa journalisation du débogage. Celle-ci est activée par défaut, mais génère beaucoup de sorties de ligne de commande.false

L'étape suivante consiste à déclencher l'opération GetCACert.

sscep getca -f sscep.cnf

NDES renvoie plus d'un certificat. Ceux-ci sont dotés d'un suffixe (0...n) de la même manière que les noms de fichiers configurés dans la variable URL.

Dans le cas d'une hiérarchie d'autorités de certification à deux niveaux, il y a en tout quatre certificats :

Nom de fichierType de certificat
ca.crt-0Certificat NDES Enrollment Agent
ca.crt-1Certificat de cryptage NDES CEP
ca.crt-2Certificat CA de l'autorité de certification racine
ca.crt-3Certificat CA de l'autorité de certification émettrice

Le certificat CA de l'autorité de certification racine peut (et devrait) être vérifié à l'aide de la commande suivante pour s'assurer qu'il s'agit de la bonne autorité de certification (l'empreinte MD5 est affichée dans la page web d'administration NDES, le RFC exige qu'on lui fasse explicitement confiance) :

openssl x509 -in ./ca.crt-2 -noout -fingerprint -md5

Ensuite, le fichier sscep.cnf doit être à nouveau édité.

nano sscep.cnf

Les variables suivantes doivent être définies.

VariableDescriptionExemple
CaCertFiledoit correspondre au certificat NDES Enrollment Agentca.crt-0
EncCertFiledoit être conforme au certificat de cryptage NDES CEPca.crt-1
LocalCertFiledoit correspondre au nom de fichier du certificat renvoyélocal.cer
CertReqFiledoit correspondre à la RSC générée précédemmentlocal.csr
PrivateKeyFiledoit correspondre à la clé privée de la RSC précédemment généréelocal.key

Demander un certificat avec SSCEP

Une fois la configuration terminée, la création de la demande de certificat et la demande d'un certificat peuvent être effectuées. Si le serveur NDES exige un mot de passe à usage unique, celui-ci doit bien sûr être demandé au préalable via la page web d'administration NDES.

./mkrequest -dns 'testsceprequest' {Einmalkennwort}
sscep enroll -f ./sscep.cnf

Dépannage

Malheureusement, SSCEP affichera dans presque tous les cas le même message d'erreur si le serveur NDES a refusé la demande de certificat :

sscep: reason: Transaction not permitted or supported
sscep: illegal size of payload

Voici quelques causes possibles qui peuvent déclencher ce message d'erreur :

Dans le fichier sscep.cnf, la directive de débogage peut être définie sur true afin d'afficher des messages plus détaillés ainsi que les messages SCEP sur la ligne de commande. Dans la réponse PKCS#7 du serveur NDES, il y a généralement un attribut Code d'erreur SCEP selon RFC comprend.

Liens complémentaires

Sources externes

Les commentaires sont fermés.

fr_FRFrançais