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 :
| Variable | Description | Exemple |
|---|---|---|
| URL | L'adresse complète du serveur NDES. | http://{ndes-server}/certsrv/mscep/mscep.dll/pkiclient.exe |
| CACertFile | Le 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ébogage | La 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 fichier | Type de certificat |
|---|---|
| ca.crt-0 | Certificat NDES Enrollment Agent |
| ca.crt-1 | Certificat de cryptage NDES CEP |
| ca.crt-2 | Certificat CA de l'autorité de certification racine |
| ca.crt-3 | Certificat 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.
| Variable | Description | Exemple |
|---|---|---|
| CaCertFile | doit correspondre au certificat NDES Enrollment Agent | ca.crt-0 |
| EncCertFile | doit être conforme au certificat de cryptage NDES CEP | ca.crt-1 |
| LocalCertFile | doit correspondre au nom de fichier du certificat renvoyé | local.cer |
| CertReqFile | doit correspondre à la RSC générée précédemment | local.csr |
| PrivateKeyFile | doit correspondre à la clé privée de la RSC précédemment générée | local.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 :
- Mot de passe de défi incorrect ou déjà utilisé (serait Événement n° 29 sur le serveur NDES déclencher).
- Encodage du Challenge Password en UTF-8 au lieu de PrintableString (serait Événement n° 29 sur le serveur NDES déclencher).
- Taille de la clé trop petite (serait Événement n° 31 sur le serveur NDES déclencher).
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
- Demande de certificat pour les systèmes Windows via le service d'enregistrement des périphériques réseau (NDES) avec Windows PowerShell
- Demande manuelle d'un certificat Remote Desktop (RDP)
- Bases de la demande manuelle et automatique de certificats via Lightweight Directory Access Protocol (LDAP) et Remote Procedure Call / Distributed Common Object Model (RPC/DCOM)
Sources externes
- certnanny / sscep (GitHub)
- draft-nourse-scep-23 - Protocole simple d'inscription des certificats (Internet Engineering Task Force)
- Le système d'exploitation indépendant du matériel pour le cloud computing (Unicon GmbH)
- OpenSSL req (OpenSSL Software Foundation)
Les commentaires sont fermés.