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 dans le détail 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 nous ne disposons pas d’une autorité de certification en ligne (accessible directement par les clients), il est nécessaire de générer un fichier CSR.
Et comme nous ne disposons pas également 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 ces articles :
- 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
<em>OID=1.3.6.1.5.5.7.3.1</em>
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 :
<em>OID=1.3.6.1.5.5.7.3.1 ; Server Authentication</em><br><em>OID=1.3.6.1.5.5.7.3.2 ;this is for Client Authentication</em><br><em>OID=1.3.6.1.4.1.311.20.2.2 ; this is for Smart Card Logon</em><br><em>OID=1.3.6.1.5.2.3.5) ; this is for KDC Authentication</em>
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 :
<em>[Extensions]</em><br><em>2.5.29.17 = "{text}"</em><br><em>_continue_ = "dns=nomcompletdnsducontroleurde.domaine&"</em>
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.
<em>----------------- request.inf -----------------<br></em><em style="font-size: revert;">[Version]<br></em><em>Signature="$Windows NT$"<br><br></em><em>[NewRequest]</em><em><br></em><em>Subject = "CN=msreport77dc1.msreport77.intra,OU=IT,O=Metsys,L=Boulogne,S=IDF,C=FR"</em><em><br></em><em>KeySpec = 1</em><em><br></em><em>KeyLength = 2048</em><em><br></em><em>Exportable = TRUE</em><em><br></em><em>MachineKeySet = TRUE</em><em><br></em><em>SMIME = FALSE</em><em><br></em><em>PrivateKeyArchive = FALSE</em><em><br></em><em>UserProtected = FALSE</em><em><br></em><em>FriendlyName = msreport77dc1.msreport77.intra</em><em><br></em><em>UseExistingKeySet = FALSE</em><em><br></em><em>ProviderName = "Microsoft RSA SChannel Cryptographic Provider"</em><em><br></em><em>ProviderType = 12</em><em><br></em><em>RequestType = PKCS10</em><em><br></em><em>KeyUsage = 0xa0<br><br></em><em>[EnhancedKeyUsageExtension]</em><em><br></em><em>OID=1.3.6.1.5.5.7.3.1 ; Server Authentication</em><em><br></em><em>OID=1.3.6.1.5.5.7.3.2 ;this is for Client Authentication</em><em><br></em><em>OID=1.3.6.1.4.1.311.20.2.2 ; this is for Smart Card Logon</em><em><br></em><em>OID=1.3.6.1.5.2.3.5 ; this is for KDC Authentication<br><br></em><em>[Extensions]</em><em><br></em><em>2.5.29.17 = "{text}"</em><em><br></em><em>_continue_ = "dns=msreport77DC1.msreport77.intra&"</em>
Pour rappel, un fichier CSR a cette forme.
Attention, il ne faut pas oublier de copier / coller la dernière ligne du fichier.
<em><span style="font-style: normal;">-----BEGIN NEW CERTIFICATE REQUEST-----</span></em><i><br></i><em><span style="font-style: normal;">MIIERTCCAy0CAQAwdTELMAkGA1UEBhMCRlIxDDAKBgNVBAgMA0lERjERMA8GA1UE</span></em><i><br></i><em><span style="font-style: normal;">BwwIQm91bG9nbmUxDzANBgNVBAoMBk1ldHN5czELMAkGA1UECwwCSVQxJzAlBgNV</span></em><i><br></i><em><span style="font-style: normal;">BAMMHm1zcmVwb3J0NzdkYzEubXNyZXBvcnQ3Ny5pbnRyYTCCASIwDQYJKoZIhvcN</span></em><i><br></i><em><span style="font-style: normal;">AQEBBQADggEPADCCAQoCggEBAMzHPzxOBGr00qjm1qMZLUv847ZAYsypPqCzhLwT</span></em><i><br></i><em><span style="font-style: normal;">iSZbUxV+3eAnMwQEXh1enaqp0Q1Kb4DqLf7JXako+aPTUezDlWl3JuZfYv5Rk6nj</span></em><i><br></i><em><span style="font-style: normal;">wXyhnZf20pSsUxIwPFczHtgjIJVy6Fk+pMBM/37FDeLjU4xdNcyXbboFFjiv6ZZX</span></em><i><br></i><em><span style="font-style: normal;">OndrfMV4iYsv2LvSrsZtmHxTJvQSzJxhzrUjnwCI+/ZObh4oKjZWjgx9uyKShcbE</span></em><i><br></i><em><span style="font-style: normal;">ReAUN4rEqz+vREDuISQj6zvFLjjwYsxsWS8ruj48TrBrmCEZC+Ym3wiYJAB7U/E+</span></em><i><br></i><em><span style="font-style: normal;">9N2JgJ1k7pT88OaI8uE4k4N+9SDSxJobhHlvKCNwaLKwwrMCAwEAAaCCAYkwGgYK</span></em><i><br></i><em><span style="font-style: normal;">KwYBBAGCNw0CAzEMFgo2LjEuNzYwMS4yMFUGCSsGAQQBgjcVFDFIMEYCAQkMHm1z</span></em><i><br></i><em><span style="font-style: normal;">cmVwb3J0NzdEQzEubXNyZXBvcnQ3Ny5pbnRyYQwYTVNSRVBPUlQ3N1xBZG1pbmlz</span></em><i><br></i><em><span style="font-style: normal;">dHJhdG9yDAdDZXJ0cmVxMHIGCisGAQQBgjcNAgIxZDBiAgEBHloATQBpAGMAcgBv</span></em><i><br></i><em><span style="font-style: normal;">AHMAbwBmAHQAIABSAFMAQQAgAFMAQwBoAGEAbgBuAGUAbAAgAEMAcgB5AHAAdABv</span></em><i><br></i><em><span style="font-style: normal;">AGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIDAQAwgZ8GCSqGSIb3DQEJ</span></em><i><br></i><em><span style="font-style: normal;">DjGBkTCBjjAOBgNVHQ8BAf8EBAMCBaAwMgYDVR0lBCswKQYIKwYBBQUHAwEGCCsG</span></em><i><br></i><em><span style="font-style: normal;">AQUFBwMCBgorBgEEAYI3FAICBgcrBgEFAgMFMCkGA1UdEQQiMCCCHm1zcmVwb3J0</span></em><i><br></i><em><span style="font-style: normal;">NzdEQzEubXNyZXBvcnQ3Ny5pbnRyYTAdBgNVHQ4EFgQUIayksvoeOJ6ezn2OYXnq</span></em><i><br></i><em><span style="font-style: normal;">xsIvTnswDQYJKoZIhvcNAQEFBQADggEBAIFStMeiSCKfAds3RAKIHVBO1CIof7Ai</span></em><i><br></i><em><span style="font-style: normal;">xQQwHmdYyyMuUYEEfVUPmwzioxaPH2us2esz6Hjp1JFISmxf91jZlDhkgG/9g//6</span></em><i><br></i><em><span style="font-style: normal;">UuP1mKVVtoTj3DnbrXrGMCPv29vX7o/1gv9/swBxqWT3F2sVdM1g6my/PM6IPavC</span></em><i><br></i><em><span style="font-style: normal;">X/Mk+DmgOlvS9S+PR/Fhxgl2rpXQnlUPVm2VqjhJR0EEfFxwjE5GYnG3IQnUmMI8</span></em><i><br></i><em><span style="font-style: normal;">7YYvzJMfi9sDGQfi1C9ccC4/beu6hWznVsjcWT4nDWa0iK51OSpiwaQHqimVTEoT</span></em><i><br></i><em><span style="font-style: normal;">jg/oY8/DL8s32eRxgOBG5WyltQzLh3STT7Inq8qEDbs9Im7szK/iswE=</span></em><i><br></i><em><span style="font-style: normal;">-----END NEW CERTIFICATE REQUEST-----</span></em><i> </i>
Une fois le fichier Request.inf obtenu, il faut taper la commande suivante :
<em><span style="font-style: normal;">Certreq -new chemindufichierrequest.inf chemindufichier.req</span></em>
Exemple :
<em><span style="font-style: normal;">Certreq -new c:\_adm\request.inf c:\_adm\msreport77dc1.req</span></em>
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.