Прочитав пост Создаем пользователя AD через веб-интерфейс, вспомнил, что около года назад занимался с аналогичной задачей. Проблема была в том, что не удавалось создать пользователя при соединении по протоколу LDAP, а получилось только по протоколу LDAPS. Выкладываю свои записи, вдруг кому пригодится.
Все действия проделывались в RHEL 5.5 и Windows Server 2003 R2 EE.
Потребуется пакет OpenSSL
Файл /etc/pki/tls/openssl.cnf
Файл /root/sslCA/gencert.sh
При запросе **Common Name (eg, your name or your server's hostname) []:** нужно обязательно ввести FQDN DC для которого создаем сертификат.
PHP должен быть с поддержкой ldap
Файл /etc/openldap/ldap.conf
1. Копируем на сервер файлы
* cert.p12 — The certificate
* cacert.pem — The Root Certificate
2 .Start, Run, MMC, File, Add/Remove Snap-in, Add, Certificates, Computer Account, Local Computer, My User Account, Next, Finish, Close, Ok
3. Разворачиваем Certificates
4. Импортируем cacert.pem в Trusted Root Certificates Authorities (правой кнопкой на Trusted Root Certificates Authorities, All Tasks, Import, Next, Browse, All files, выбираем наш cacert.pem ...)
5. Импортируем cert.p12 в Personal (правой кнопкой на Personal, All Tasks, Import, Next, Browse, All files, находим наш cert.p12, если нужно вводим пароль ...)
6. Проверяем сертифика на DC
* Разворачиваем папки Personal и Certificates
* Двойной щклчок по установленному сертификару
* Убеждаемся, что есть строка «You have a private key that corresponds to this certificate»
Файл /var/www/html/test.php
www.digitalissues.co.uk/html/os/ms/ldaps.html
Все действия проделывались в RHEL 5.5 и Windows Server 2003 R2 EE.
Сертификаты
Потребуется пакет OpenSSL
rpm -ivh openssl-0.9.8e-12.el5_4.6.i686.rpm rpm -ivh openssl-perl-0.9.8e-12.el5_4.6.i386.rpm
Файл /etc/pki/tls/openssl.cnf
dir = /root/sslCA default_days = 3650 countryName_default = UA stateOrProvinceName_default = Lugansk localityName_default = Lugansk 0.organizationName_default = CompanyName organizationalUnitName_default = IT ... # в конце файла [ sign_ias_csr ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = clientAuth,serverAuth
cd /root/ mkdir sslCA chmod 700 sslCA cd /root/sslCA mkdir certs private newcerts echo 1000 > serial touch index.txt openssl req -new -x509 -days 3650 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -config /etc/pki/tls/openssl.cnf
Сертификаты для контроллеров домена
Файл /root/sslCA/gencert.sh
#!/bin/sh NAME=$1 BITS=1024 CONFIG=/etc/pki/tls/openssl.cnf # Generating the Certificate Request # Create server key echo ""; echo "Creating server key"; echo "" openssl genrsa -des3 -out server${NAME}.key.pass -passout pass:1234 ${BITS} || exit # Remove passphrase echo ""; echo "Removing passphrase"; echo "" openssl rsa -in server${NAME}.key.pass -out server${NAME}.key -passin pass:1234 || exit # Generate certificate request echo ""; echo "Generating certificate request"; echo "" openssl req -config ${CONFIG} -new -days 3650 -key server${NAME}.key -out csr${NAME}.pem || exit # Signing the Certificate echo ""; echo "Signing the Certificate"; echo "" openssl ca -config ${CONFIG} -days 3650 -extensions sign_ias_csr -out new${NAME}.pem -in csr${NAME}.pem || exit # Generate a Public/Private key file cp server${NAME}.key cert${NAME}.pem openssl x509 -in new${NAME}.pem >> cert${NAME}.pem || exit # Generate the PKCS12 file echo ""; echo "Generating PKCS12"; echo "" openssl pkcs12 -name "Test Cert" -export -in cert${NAME}.pem -out cert${NAME}.p12 || exit
chmod +x /root/sslCA/gencert.sh /root/sslCA/gencert.sh 01
При запросе **Common Name (eg, your name or your server's hostname) []:** нужно обязательно ввести FQDN DC для которого создаем сертификат.
cp /root/sslCA/cacert.pem /etc/pki/tls/certs/ c_rehash rpm -ivh openldap-clients-2.3.43-12.el5.i386.rpm
PHP должен быть с поддержкой ldap
Файл /etc/openldap/ldap.conf
# Instruct client to NOT request a server's cert. TLS_REQCERT never # Define location of CA Cert TLS_CACERT /etc/pki/tls/certs/cacert.pem TLS_CACERTDIR /etc/pki/tls/certs
cp /etc/openldap/ldap.conf /var/www/.ldaprc
Установка сертификатов на DC
1. Копируем на сервер файлы
* cert.p12 — The certificate
* cacert.pem — The Root Certificate
2 .Start, Run, MMC, File, Add/Remove Snap-in, Add, Certificates, Computer Account, Local Computer, My User Account, Next, Finish, Close, Ok
3. Разворачиваем Certificates
4. Импортируем cacert.pem в Trusted Root Certificates Authorities (правой кнопкой на Trusted Root Certificates Authorities, All Tasks, Import, Next, Browse, All files, выбираем наш cacert.pem ...)
5. Импортируем cert.p12 в Personal (правой кнопкой на Personal, All Tasks, Import, Next, Browse, All files, находим наш cert.p12, если нужно вводим пароль ...)
6. Проверяем сертифика на DC
* Разворачиваем папки Personal и Certificates
* Двойной щклчок по установленному сертификару
* Убеждаемся, что есть строка «You have a private key that corresponds to this certificate»
Проверка сзязи
Файл /var/www/html/test.php
<?php $ldapuser = "administrator@testlab.local"; $ldappass = "superpass"; $ldapserver = "192.168.0.1"; $ad = ldap_connect("ldaps://".$ldapserver) or die("Cant connect to LDAP Server"); ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3); $adbind = ldap_bind($ad, $ldapuser, $ldappass); if ($adbind) { echo "LDAP bind successful..."; } else { echo "LDAP bind failed..."; } ?>
www.digitalissues.co.uk/html/os/ms/ldaps.html
