Comment générer des certificats LDAPS avec une autorité de certification tierce

Bonjour à tous,

Cet article porte sur les certificats LDAPS et la sécurité des contrôleurs de domaine Active Directory. Nous verrons :
– Pourquoi il est recommandé de générer des certificats LDAPS et de déployer ce type de certificat sur les contrôleurs de domaine Active Directory ?
– Quels sont les spécificités d’un certificat LDAPs (extension requise, entrée(s) DNS dans le champ SAN) ?
– Comment générer un certificat LDAPS quand on ne dispose pas de sa propre autorité de certification ou que cette autorité de certification n’est pas interfacée avec l’annuaire Active Directory ? On verra que cela passe obligatoirement par la génération d’un CSR.

Pourquoi générer des certificats LDAPS ?
Les articles Microsoft suivants expliquent pourquoi générer un certificat LDAPs :
https://support.microsoft.com/en-us/kb/321051
http://social.technet.microsoft.com/wiki/contents/articles/2980.ldap-over-ssl-ldaps-certificate.aspx

Il y a principalement 3 raisons :
– Permettre aux utilisateurs de s’authentifier au niveau des applications avec leur compte Active Directory en Ldaps.
– Sécuriser les applications qui s’authentifient sur l’annuaire Active Directory avec un BIND Ldap Simple. En effet, par défaut avec ce mode d’authentification le login / mot de passe circule en clair par le réseau.
– Permettre le changement du mot de passe d’une application tierce (comme un site SharePoint). Cela nécessite en effet une connexion LDAPs.

Comment générer un certificat LDAPS pour les contrôleurs de domaine avec une autorité de certification tierce ?
Comme on ne dispose pas d’une autorité de certification en ligne (accessible directement par les clients), il est nécessaire de générer un fichier CSR.
Comme on ne dispose pas d’une autorité de certification Microsoft, ni d’une autorité de certification comme Open Trust que l’on peut interfacer avec l’Active Directory, il n’est pas possible d’utiliser les modèles de certificats comme Domain Controller ou Domain Controller Authentication.
Il faut donc utiliser l’outil Certreq pour générer notre fichier CSR à l’aide d’un fichier request.inf.

Les paramètres du fichier request.inf sont présentés dans l’article :
https://technet.microsoft.com/en-us/library/dn296456(v=ws.11).aspx
https://technet.microsoft.com/en-us/library/ff625722(v=WS.10).aspx

On notera qu’il faut respecter les règles suivantes :
– Le CN dans le champ Subject doit contenir le nom complet DNS du contrôleur de domaine.
– Le champ MachineKeySet doit être à True pour indiquer qu’il s’agit d’un certificat ordinateur.
– Le ProviderName doit être à Microsoft RSA SChannel Cryptographic Provider
– Le FriendlyName est facultatif. Il est recommandé de mettre le nom complet DNS du contrôleur de domaine.
Le paramètre KeyLength doit être à 2048 bits. Les clés avec une taille de 1024 bits ne sont plus assez sécurisées.
Le paramètre exportable doit être à True pour pouvoir sauvegarder / exporter le certificat (en cas de remplacement du contrôleur de domaine)
La section EnhancedKeyUsageExtension du fichier Request.inf doit contenir la valeur
OID=1.3.6.1.5.5.7.3.1
Pour permettre au certificat de faire aussi de l’authentification par cartes à puce, de l’authentification cliente et de l’authentification pour le service Kerberos, on configurera 4 extensions dans la section EnhancedKeyUsageExtension.
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication
OID=1.3.6.1.5.5.7.3.2 ;this is for Client Authentication
OID=1.3.6.1.4.1.311.20.2.2 ; this is for Smart Card Logon
OID=1.3.6.1.5.2.3.5) ; this is for KDC Authentication

Le champ San (Subject Alternative Name) doit contenir une entrée avec le nom complet DNS du serveur. Pour cela (fonctionne uniquement pour les contrôleurs de domaine Windows 2008 et versions ultérieures), il faut ajouter dans le fichier Request.inf l’entrée suivante :
[Extensions]
2.5.29.17 = “{text}”
_continue_ = “dns=nomcompletdnsducontroleurde.domaine&”

Si vous souhaitez déployer le service NPS / IAS (Radius) sur vos contrôleurs de domaine et utiliser le certificat LDAPS pour faire cette tâche, il faut que le certificat ait une valeur non vide pour le champ Subject (ce qui est notre cas).

Si plusieurs certificats sont installés sur un contrôleur de domaine avec l’option OID=1.3.6.1.5.5.7.3.1, le contrôleur de domaine utilise le premier certificat qui est valide et qui a cette extension. Pour cette raison, il est recommandé de ne disposer que d’un seul certificat avec cette extension sur les contrôleurs de domaine.
Il existe cependant depuis Windows 2008 R2 un nouveau conteneur appelé NTDS\Personal certificate. Je vous invite à lire ce document qui décrit ce point le fichier Request.inf suivant pour un contrôleur de domaine appelé msreport77.msreport77.intra.

;—————– request.inf —————–

[Version]

Signature=”$Windows NT$”

[NewRequest]
Subject = “CN=msreport77dc1.msreport77.intra,OU=IT,O=Metsys,L=Boulogne,S=IDF,C=FR”
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
FriendlyName = msreport77dc1.msreport77.intra
UseExistingKeySet = FALSE
ProviderName = “Microsoft RSA SChannel Cryptographic Provider”
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0

[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication
OID=1.3.6.1.5.5.7.3.2 ;this is for Client Authentication
OID=1.3.6.1.4.1.311.20.2.2 ; this is for Smart Card Logon
OID=1.3.6.1.5.2.3.5 ; this is for KDC Authentication

[Extensions]
2.5.29.17 = “{text}”
_continue_ = “dns=msreport77DC1.msreport77.intra&”

Pour rappel, un fichier CSR a cette forme. Il ne faut pas oublier de copier / coller la dernière ligne du fichier.

—–BEGIN NEW CERTIFICATE REQUEST—–
MIIERTCCAy0CAQAwdTELMAkGA1UEBhMCRlIxDDAKBgNVBAgMA0lERjERMA8GA1UE
BwwIQm91bG9nbmUxDzANBgNVBAoMBk1ldHN5czELMAkGA1UECwwCSVQxJzAlBgNV
BAMMHm1zcmVwb3J0NzdkYzEubXNyZXBvcnQ3Ny5pbnRyYTCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAMzHPzxOBGr00qjm1qMZLUv847ZAYsypPqCzhLwT
iSZbUxV+3eAnMwQEXh1enaqp0Q1Kb4DqLf7JXako+aPTUezDlWl3JuZfYv5Rk6nj
wXyhnZf20pSsUxIwPFczHtgjIJVy6Fk+pMBM/37FDeLjU4xdNcyXbboFFjiv6ZZX
OndrfMV4iYsv2LvSrsZtmHxTJvQSzJxhzrUjnwCI+/ZObh4oKjZWjgx9uyKShcbE
ReAUN4rEqz+vREDuISQj6zvFLjjwYsxsWS8ruj48TrBrmCEZC+Ym3wiYJAB7U/E+
9N2JgJ1k7pT88OaI8uE4k4N+9SDSxJobhHlvKCNwaLKwwrMCAwEAAaCCAYkwGgYK
KwYBBAGCNw0CAzEMFgo2LjEuNzYwMS4yMFUGCSsGAQQBgjcVFDFIMEYCAQkMHm1z
cmVwb3J0NzdEQzEubXNyZXBvcnQ3Ny5pbnRyYQwYTVNSRVBPUlQ3N1xBZG1pbmlz
dHJhdG9yDAdDZXJ0cmVxMHIGCisGAQQBgjcNAgIxZDBiAgEBHloATQBpAGMAcgBv
AHMAbwBmAHQAIABSAFMAQQAgAFMAQwBoAGEAbgBuAGUAbAAgAEMAcgB5AHAAdABv
AGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIDAQAwgZ8GCSqGSIb3DQEJ
DjGBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwMgYDVR0lBCswKQYIKwYBBQUHAwEGCCsG
AQUFBwMCBgorBgEEAYI3FAICBgcrBgEFAgMFMCkGA1UdEQQiMCCCHm1zcmVwb3J0
NzdEQzEubXNyZXBvcnQ3Ny5pbnRyYTAdBgNVHQ4EFgQUIayksvoeOJ6ezn2OYXnq
xsIvTnswDQYJKoZIhvcNAQEFBQADggEBAIFStMeiSCKfAds3RAKIHVBO1CIof7Ai
xQQwHmdYyyMuUYEEfVUPmwzioxaPH2us2esz6Hjp1JFISmxf91jZlDhkgG/9g//6
UuP1mKVVtoTj3DnbrXrGMCPv29vX7o/1gv9/swBxqWT3F2sVdM1g6my/PM6IPavC
X/Mk+DmgOlvS9S+PR/Fhxgl2rpXQnlUPVm2VqjhJR0EEfFxwjE5GYnG3IQnUmMI8
7YYvzJMfi9sDGQfi1C9ccC4/beu6hWznVsjcWT4nDWa0iK51OSpiwaQHqimVTEoT
jg/oY8/DL8s32eRxgOBG5WyltQzLh3STT7Inq8qEDbs9Im7szK/iswE=
—–END NEW CERTIFICATE REQUEST—–

Une fois le fichier Request.inf obtenu, il faut taper la commande suivante :
Certreq -new chemindufichierrequest.inf chemindufichier.req

Exemple :
Certreq -new c:\_adm\request.inf c:\_adm\msreport77dc1.req

Cela génère une nouvelle paire de clés (publique / privée) sur le contrôleur de domaine. On peut voir la demande de certificat en exécutant MMC.EXE.
Ajouter le composant logiciel enfichable Certificats.
Se connecter au magasin Computer.
Aller dans Certificates (Local Computer) | Certificates Enrollments Requests | Certificates.
La nouvelle demande de certificat est disponible à cet emplacement.
On voit qu’on dispose d’une paire de clés (publique / privée).

On notera qu’il est possible de vérifier notre fichier CSR avec des interpréteurs de fichier CSR en ligne :
http://www.entrust.net/ssl-technical/csr-viewer.cfm

Générer le certificat (fichier CER obtenu) et installer le certificat :
Se connecter sur le site de l’autorité de certification tierce et coller le CSR.
Télécharger le fichier CER (ou CRT) obtenu.
Pour installer le certificat obtenu, taper la commande MMC.EXE.
Ajouter le composant logiciel enfichable Certificats.
Se connecter au magasin Computer.
Faire un clic droit sur Certificates (Local Computer) | Certificates Enrollments Requests | Certificates puis sélectionner All Tasks | Imports.
Aller chercher le certificat (fichier CER ou CRT) obtenu.
Déplacer ensuite le certificat dans le magasin Personnal (manuellement).
Attention, si on le fait par l’assistant, le certificat est déplacé vers le conteneur Personnal du magasin de l’utilisateur qui a lancé la console MMC.

Cordialement

Guillaume MATHIEU
Directeur Technique
http://www.metsys.fr

About the Author

Guillaume MATHIEU

No Comments

Laisser un commentaire

This blog is kept spam free by WP-SpamFree.