Přístup do LDAP SSL z PHP aplikace ve Windows

Před nějakou dobou jsem potřeboval odbavovat jednoduchý PHP skript, který pracoval s uživatelskými účty v Active Directory. Pokud ale takový skript pracuje s hesly, nebo parametry pro platnost účtu, systém požaduje připojení přes LDAP over SSL (ldaps).

PHP aplikace nám běží na Windows Serveru a Microsoft IIS. Průzkumem internetu se mi povedlo web server nakonfigurovat, takže se o výsledek podělím a hlavně si ho zaznamenám pro případ další potřeby Smile Předpokládám, že PHP už máte na Windows Serveru rozchozené. Pokud ne, použijte instalaci přes Web Platform Installer.

Konfigurace PHP

Otevřeme si php.ini pro editaci a povolíme (odkomentujeme):
extension=php_ldap.dll
extension=php_openssl.dll

Nahrání DLL knihoven do systému

Z adresáře instalace PHP překopírujeme knihovnu libeay32.dll do systémové složky operačního systému (nejčastěji c:\windows\system32). V případě, že z neznámých důvodů potřebujeme provozovat super-prehistorickou verzi PHP 4.2 a nižší, použijeme soubor libsasl.dll.

Konfigurační soubor k LDAP

Vytvořme adresář C:\openldap\sysconf, který bude obsahovat soubor ldap.conf. Jeho obsah by měl vypadat následovně:

TLS_REQCERT never
TLS_CACERT c:\openldap\sysconf\myserver.pem

Instalace certifikační autority

Active Directory by měla mít nainstalovanou certifikační autoritu. Pokud nemá, nainstalujete jí pomocí Server Manager – Add roles and features – Server Roles – Active Directory Certificate Services.

Po úspěšné instalaci začne Active Directory poslouchat na portu 636.

Získání Active Directory certfikátu

Na serveru s certifikační autoritou si otevřeme MMC konzoli a připojíme snap-in Certifikační autorita. Následně klikneme na jeho název pravým tlačítkem, zvolíme vlastnosti. Na kartě Obecné pak Zobrazit certifikát, karta Podrobnosti a Kopírovat do souboru.

Certifikát vyexportujeme do souboru *.cer, jako Base-64 Encoded X.509(.cer).

Konverze certifikátu

Pro běh PHP potřebujeme certifikát nikoliv ve formátu *.cer, ale *.pem. Konverzi můžeme provést například přes openSSL. Příklad příkazu pro konverzi:

C:\openssl\openssl x509 -in myserver.cer -out myserver.pem

Instalace certifikátu

Certifikát myserver.pem překopírujeme do cesty zadané v souboru ldap.conf.

Nyní restartujte IIS, aby se upravená konfigurace osvěžila na serveru a ldap_connect(‚ldaps://ldapserver.domana.ltd/‘); začne fungovat.

IIS + PHP – Instalace komponent

Pokud provozujete skriptovací jazyk PHP v prostředí Microsoft Internet Information Services (IIS), jistě jste provedli instalaci nejjednodušší a přitom správnou cestu – přes Microsoft Web Platform Installer.

Jak ovšem postupovat, když potřebujeme pro běh aplikace doinstalovat některou z dostupných PHP rozšíření (extension). Postup je velice snadný.

Spočívá ve vyhledání PHP v přidat/odebrat programy (nachází se v ovládacích panelech), a kliknutí na tlačítko “Změnit” (Change).

alt

Ve spuštěném průvodci vybereme změnu instalace, v následujícím kroku pak IIS FastCGI.

alt

Následně vybereme požadované komponenty a instalaci klasickým způsobem dokončíme.

alt