SSL соединение при использовании LDAP-сервиса

Добавил Support
Для ITDoc

1 звезда2 звезд3 звезд4 звезд5 звезд (Еще не оценили)
Загрузка ... Загрузка ...
477 Просмотров!

Издано: апреля 23, 2009

StartTLS - безопасный LDAP

TLS  1.0 (Transport Layer Security) - это протокол безопасной передачи
данных,  основанный  на  SSL  3.0 (Secure Socket Layer), отличается от
него  незначительно,  поэтому термины SSL и TLS можно использовать как
синонимы.

StartTLS  - это механизм установления безопасного соединения на основе
TLS-протокола.  Данный механизм использует уже существующее соединение
-  для  LDAP-соединения  это 389-й порт (ldap://). Иногда его называют
TLS  upgrade  по той же самой причине - испольузется уже установленное
TCP-соединение.

LDAPS (ldaps://) - это тоже безопасное соединение, но оно инициируется
на альтернативном порту (636).

После  того  как  инициализация безопасного соединения прошла успешна,
разницы между StartTLS и LDAPS нет.

Для  того,  чтобы  LDAP-сервер умел формировать безопасное соединение,
необходимо иметь SSL-сертификат для используемого сервера, подписанный
Центром   Сертификации   (CA),  сертификат  которого  в  свою  очередь
находится  в root-списке (ca-bundle.crt). В основной файл конфигурации
как минимум должны быть добавлены следущие строки:

TLSCertificateFile /etc/ssl/public/server.crt  # сертификат ldap-сервера
TLSCertificateKeyFile /etc/ssl/private/server.key # ключ ldap-сервера
TLSCACertificateFile /etc/ssl/public/ca-bundle.crt # root-список

После  перезапуска  ldap-сервиса,  StartTLS механизм можно проверить с
помощью команды:

# ldapsearch -x -b "c=ru" -h slave_ldap.example.com -D "cn=admin,c=ru" -w password -d 1 -ZZ
...
TLS trace: SSL_connect:before/connect initialization
TLS trace: SSL_connect:SSLv2/v3 write client hello A
TLS trace: SSL_connect:SSLv3 read server hello A
TLS certificate verification: depth: 3, err: 0, subject: /O=EuroPKI/CN=EuroPKI
Root Certification Authority, issuer: /O=EuroPKI/CN=EuroPKI Root CertificationAuthority
TLS certificate verification: depth: 2, err: 0, subject: /C=LT/O=EuroPKI/CN=Eur
oPKI Lithuanian Certification Authority, issuer: /O=EuroPKI/CN=EuroPKI Root Certification Authority
TLS certificate verification: depth: 1, err: 0, subject: /C=LT/O=Skaitmeninio S
ertifikavimo Centras/CN=SSC Class 2 CA/serialNumber=3, issuer: /C=LT/O=EuroPKI/
CN=EuroPKI Lithuanian Certification Authority
TLS certificate verification: depth: 0, err: 0, subject: /C=LT/O=UAB Skaitmenin
io sertifikavimo centras/OU=Duomen\xC5\xB3 centras/CN=slave_ldap.example.com/se
rialNumber=33, issuer: /C=LT/O=Skaitmeninio Sertifikavimo Centras/CN=SSC Class
2 CA/serialNumber=3
TLS trace: SSL_connect:SSLv3 read server certificate A
TLS trace: SSL_connect:SSLv3 read server done A
TLS trace: SSL_connect:SSLv3 write client key exchange A
TLS trace: SSL_connect:SSLv3 write change cipher spec A
TLS trace: SSL_connect:SSLv3 write finished A
TLS trace: SSL_connect:SSLv3 flush data
TLS trace: SSL_connect:SSLv3 read finished A
...

Для  безопасной  (с  использованием  TLS)  репликации данных на другой
сервер    предпочтительно    использовать   механизм   StartTLS,   без
использования   дополнительного  ldaps-порта  (636).  Всё,  что  нужно
поправить  в  этом  случае  в конфигурационном файле /etc/slapd.conf -
добавить   строку   starttls=yes   в   настройку  необходимой  реплики
(replica). Например:

...
replica         uri=ldap://slave_ldap.example.com
starttls=critical
binddn="cn=admin,c=lt"
bindmethod=simple
credentials=password
...

Параметр  starttls может принимать значение “yes”, в этом случае, если
в  момент  инициализации  TLS-соединения  возникли  ошибки, соединение
будет установлено без использования TLS. Рекомендуется - critical.

Ссылки:
1. OpenLDAP Faq-O-Matic: How do I use TLS/SSL?
2. RFC2830 - Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security
3. RFC4513   -   Lightweight  Directory  Access  Protocol  (LDAP):
Authentication Methods and Security Mechanisms
4. SLAPD.CONF(5)

Часть 2. SSL соединение при использовании LDAP-сервиса

Данная  заметка вышла как дополнение к постам StartTLS - безопасный
LDAP и cvs->ldif.

При  использовании  общей  для всех сотрудников LDAP-адресной книги за
пределами  офиса,  условия  использования  безопасного LDAP-соединения
становятся  обязательными.  Но  существующие на данный момент почтовые
клиенты  не  умеют  использовать  функцию  StartTLS,  вместо этого они
требуют  отдельного  SSL-соединения  на отдельном порту (для ldaps это
порт 636).

В этом случае в дополнение к уже определенным в конфигурационном файле
опциям TLSCertificateFile, TLSCertificateKeyFile,
TLSCACertificateFile,   в   запускном   скрипте   необходимо   открыть
дополнительный безопасный порт - ldaps. В Debian это делается просто -
в начало скрипта /etc/init.d/slapd необходимо добавить строку:

SLAPD_SERVICES="ldap:/// ldaps:///"

После перезапуска сервиса, убедиться, что ldaps порт открыт:

# /etc/init.d/slapd restart
Stopping OpenLDAP: slapd.
Starting OpenLDAP: slapd.
# netstat -an | grep 636
tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN
tcp6 0 0 :::636 :::* LISTEN

Теперь   остается   только  протестировать  безопасное  соединение  из
почтовой  программы  (галочка  “secure  connection  (SSL)”, порт 636).
Thunderbird  и  Evolution прекрасно срабатывают сразу же. С Outlook’ом
придется  добавлять  сертификат  LDAP-сервера (или CA’я, который выдал
данный  сертификат)  в  Windows-хранилище сертификатов, иначе он будет
отказываться   работать,   говоря   при  этом  многозначительное  “The
specified directory service could not be reached”.

Популярность: 11% [!]

Tagged with: , , , , ,


Спонсор



 WPSN comments




Да человек я, человек! =)

ITDoc самый Последний