Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Connexion LDAPS sur Windows server via une application PHP

Par Pierre MORIN Publié le 23/10/2017 à 15:48:58 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Le but de cet article est de montrer comment mettre en place une connexion LDAP sécurisée sur un AD Windows server pour pouvoir communiquer avec grâce à une application PHP, qui est, elle, hébergée sur une machine linux. Nous allons donc voir en détails, par la suite, toutes les étapes de cette mise en place, mais d'abord commençons par le commencement, qu'est-ce que LDAP ? et pourquoi utiliser une connexion LDAPS ?

Qu'est-ce que LDAP ?

LDAP, qui signifie Lightweight Directory Access Protocol, est un protocol qui permet, en interrogeant des annuaires, d'accéder à des bases d'informations sur les utilisateurs d'un réseau. Le protocole LDAP repose sur un autre protocole, TCP/IP. Par défaut, le port utilisé par LDAP est le 389.

Pourquoi LDAPS plutôt que LDAP ?

LDAPS a la même utilité et utilise le même protocole (TCP/IP) que LDAP, la seule différence, c'est que là où LDAP transmet ses informations et communique avec le server en clair, LDAPS, lui, crypte et sécurise ses données grâce au protocole SSL. Ce qui, vous en conviendrez, est mieux lorsqu'il s'agit de faire transiter des données confidentielles comme des mots de passe, des données bancaires, la recette secrète du soufflé aux pommes transmise de génération en génération dans votre famille, ou encore les codes de l'arme nucléaire si jamais vous devenez un jour président (ce qui, sans vouloir vous vexez, me paraît peu probable).

Nous allons donc voir maintenant comment mettre en place cette connexion, en partant du principe que vous possédez déjà certains pré-requis.

Pré-requis

Je pars du principe pour la suite qu'ont déjà été créées :

  • Une machine Linux (pour ma part j'ai fait avec une debian)

  • Une machine Windows server 2008, 2012 ou 2016 avec le rôle ADDS installé

    Nous allons maintenant configurer ces 2 machines, en commençant par la Windows server

Configurer la machine Windows server

Pour celle-ci vous n'allez pas avoir à faire grand chose car c'est la Debian qui va prendre les rôles de serveur Azure et LDAP.

Donc pas de AD LDS à installer, seulement le rôle ADCS, qui va nous sevir pour obtenir un certificat signé.

Vous allez donc aller dans le Server Manager puis faire "Add Roles and Features" ("Ajouter des rôles et des fonctionnalités" pour ceux qui dormaient cours d'anglais) puis :

cliquez sur Next.

choisissez Role-based or feature-based installation puis cliquez sur Next.

Laissez comme c'est par défaut et cliquez sur next.

Là il faut choisir le rôle que l'on veut installer, c'est-à-dire Active Directory Certificate Services puis cliquer sur Next

ensuite cliquez sur next jusqu'à arriver à cette étape.

Ici vous choisissez les services dont vous avez besoin. Pour cet article nous n'aurons besoin que du premier, l'autorité de certification, mais rien ne vous empêche d'installer les autres également.

Pour finir cliquez sur "Next" puis sur "Install".

Maintenant le rôle ADCS installé, nous allons créer un certificat puis l'exporter. Tout d'abord cliquez sur l'assistant de configuration pour commencer la création du certificat.

Vous devriez avoir cette fenêtre qui s'ouvre. Cliquez sur "next".

là vous aurez les services que vous avez précédemment installés.

Choisissez Standalone CA puis cliquez sur "next".

Choisissez Root CA pour que votre certificat ait les droits d'administrateur.

Pour la suite choisissez :

  • "Create a new private key" → "next"

  • A l'étape "Cryptography" vous devez choisir quel cryptage vous voulez utiliser (personnelement j'ai pris SHA1) ainsi que la longueur de la clé privée.

  • Ensuite vous n'avez plus qu'à choisir le nom de votre certificat ainsi que sa période de validité, ensuite cliquez sur next jusqu'à arriver à cette page.

    Et cliquez sur "configure".

Maintenant que nous avons créé notre certificat, nous allons l'exporter. Tout d'abord ouvrez le répertoire des certificats en tapant "mmc" dans la barre de recherche, vous devriez avoir ceci qui s'ouvre :

Avec le certificat que vous venez de créer qui est placé dans le dossier "Personal → Certificates".

Vous allez faire un clique droit dessus, allez dans "all tasks" et "export".

Ceci va ouvrir l'outil d'exportation de certificat. Ensuite les étapes sont simples :

  • choisissez de ne pas exporter la clé privée,

  • et choisissez de l'encoder en base-64 (.CER),

  • puis choisissez l'endroit où vous voulez l'exporter (le bureau par exemple) et cliquez sur "next" puis "finish".

Ca sera tout pour la machine Windows server, nous allons maintenant configurer la machine linux !

Configurer la machine Linux

Pour rappel, la machine linux est, dans notre cas, celle qui est à la fois serveur Apache et machine LDAP. On va alors commencer par installer les packages nécessaire à grands coups d'apt-get install !

Vous allez donc ouvrir le terminal, vous mettre en root puis lancer les commandes suivantes :

  • Pour ldap : "apt-get install ldap-server ldap-client" et "apt-get install slapd ldap-utils" au cas où

  • Pour Apache : "apt-get install apache" ou "apt-get install apache2"

Maintenant que nous avons installé les packages, nous allons procéder à quelques modifications dans les fichiers de configuration de ceux-ci. Mais d'abord vous devez placer le certificat (celui exporté précédemment dans la machine Windows server), dans le dossier /etc/ldap/ssl/ .

Une fois cela fait, ouvrez le fichier /etc/ldap/ldap.conf et rajoutez des lignes :

1. TLS_CACERT /etc/ldap/ssl/nom_du_certificat.cer

2. TLS_REQCERT never

Une fois ces lignes écrites vous pouvez enregistrer votre fichier et redémarrer votre machine.

Maintenant il ne vous reste plus que votre code en PHP à faire.

Le code PHP

Les fichiers de code PHP doivent être enregistrés sur votre machine linux (car c'est le serveur apache) dans le dossier /var/www/html.

Maintenant vous n'avez plus qu'à mettre le code suivant dans votre fichier .php

$server = "ldaps://10.44.230.12/"; // l'adresse IP du serveur AD (le windows server)

$user="Administrator"; //le nom d'utilisateur du compte avec lequel on va se connecter sur la machine Windows server, ici l'administrateur

$pwd="Mon_Mot_de_passe"; // le mot de passe du compte

$domaine = "@TestLdap.test"; //le nom de domaine

$username=$user."".$domaine;

$basedn = "ou=Utilisateurs test,dc=TestLdap, dc=test"; //le chemin de la base dans laquelle sont stockés les utilisateurs et les groupes

$ds = ldap_connect($serve) or die("Impossible de se connecter au serveur LDAP $ds"); //ldap_connect permet de se connecter au serveur AD

$r=ldap_bind($ds,$username,$pwd); // ldap_bind permet de se connecter à l'AD en tant que "username" avec le mot de passe "pwd"

Voilà, maintenant vous pouvez vous connecter en LDAPS à votre AD et faire circuler vos données, encryptées.

Conclusion

Dans cet article je vous ai montré comment mettre en place une connection LDAPS entre une machine Debian 8 et une machine Windows server. Il est cependant possible, si vous utilisez des versions antérieures à celles-ci, que certains éléments diffèrent, comme l'emplacement de certains fichiers ou le nombre de fichier à modifier. Par exemple pour les anciennes versions de ldap vous aurez le fichier slapd.conf à modifier.

Merci d'avoir lu cet article et j'espère qu'il vous aura été utile.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels