LINUX.ORG.RU

Не подключается к LDAP через TLS/SSL


0

1

Делал как здесь написано здесь написано но при конекте выдает ошибку

conn=1248 fd=25 ACCEPT from IP=127.0.0.1:56120 (IP=0.0.0.0:636)
conn=1247 fd=23 closed (TLS negotiation failure)
сертификат самоподписаный конечно
# cat /etc/ldap/slapd.d/cn\=config.ldif
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/slapd/slapd.args
olcLogLevel: 256
olcPidFile: /var/run/slapd/slapd.pid
olcToolThreads: 1
structuralObjectClass: olcGlobal
entryUUID: 521b0220-94f5-1031-80a7-e30b635bb349
creatorsName: cn=config
createTimestamp: 20120917092509Z
olcAllows: bind_v2
olcTLSVerifyClient: never
olcTLSCACertificateFile: /etc/ssl/certs/cacert.pem
olcTLSCertificateFile: /etc/ssl/certs/ldap.pem
olcTLSCertificateKeyFile: /etc/ssl/private/ldap.pem
entryCSN: 20130318063205.138243Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20130318063205Z

★★★

если важно

# netstat -tlpn | grep slapd
tcp        0      0 0.0.0.0:636             0.0.0.0:*               LISTEN      30019/slapd
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      30019/slapd
tcp6       0      0 :::636                  :::*                    LISTEN      30019/slapd
tcp6       0      0 :::389                  :::*                    LISTEN      30019/slapd

# gnutls-cli-debug -p 636 localhost
Resolving 'localhost'...
Connecting to '127.0.0.1:636'...
Checking for TLS 1.1 support... yes
Checking fallback from TLS 1.1 to... N/A
Checking for TLS 1.0 support... yes
Checking for SSL 3.0 support... yes
Checking for HTTPS server name... not checked
Checking for version rollback bug in RSA PMS... no
Checking for version rollback bug in Client Hello... no
Checking whether we need to disable TLS 1.0... N/A
Checking whether the server ignores the RSA PMS version... no
Checking whether the server can accept Hello Extensions... yes
Checking whether the server can accept cipher suites not in SSL 3.0 spec... yes
Checking whether the server can accept a bogus TLS record version in the client hello... no
Checking for certificate information... N/A
Checking for trusted CAs... N/A
Checking whether the server understands TLS closure alerts... yes
Checking whether the server supports session resumption... no
Checking for export-grade ciphersuite support... no
Checking RSA-export ciphersuite info... N/A
Checking for anonymous authentication support... no
Checking anonymous Diffie-Hellman group info... N/A
Checking for ephemeral Diffie-Hellman support... no
Checking ephemeral Diffie-Hellman group info... N/A
Checking for AES cipher support (TLS extension)... yes
Checking for CAMELLIA cipher support (TLS extension)... yes
Checking for 3DES cipher support... yes
Checking for ARCFOUR 128 cipher support... yes
Checking for ARCFOUR 40 cipher support... no
Checking for MD5 MAC support... yes
Checking for SHA1 MAC support... yes
Checking for LZO compression support (GnuTLS extension)... no
Checking for max record size (TLS extension)... yes
Checking for SRP authentication support (TLS extension)... yes
Checking for OpenPGP authentication support (TLS extension)... no

wolverin ★★★
() автор топика

Самоподписаный сертификат это клиника. Сертификат должен быть подписан сертификатом CA, а вот уже он может быть самоподписан. В этом случае, ты мог бы поместить сертификат CA в тот каталог, который указан как каталог корневых сертификатов в ldap.conf, и всё бы заработало

no-dashi ★★★★★
()
Ответ на: комментарий от wolverin

а просто чтобы в туннели данные ходили.

Я тебе русским по серому объяснил, как положено делать. Не хочешь слушать доброго совета - крутись как знаешь.

no-dashi ★★★★★
()
Ответ на: комментарий от wolverin

а бесплатно создать себе сертификат уже не кошерно?

А что, самоподписаный сертификат CA уже не бесплатный????

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

no-dashi
самоподписаный сертификат CA уже не бесплатный

вот например у лисяры написано как я понимаю создание СА сертификата, ldap сертификата и его подписывание созданным CA

openssl genrsa -out ldap.key 1024
openssl req -new -key ldap.key -out ldap.csr
openssl genrsa -des3 -out ca.key 2048
openssl req -new -x509 -days 365 -key ca.key -out ca.cert
openssl x509 -req -in ldap.csr -out ldap.cert -CA ca.cert \
 -CAkey ca.key -CAcreateserial -days 365
ошибка таже самая.
и как я понимаю удостоверенный сертификат не бесплатен.

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

и как я понимаю

Плохо понимаешь. Ты сделал почти всё кроме самого важного: тебе надо твой ca.cert подложить в каталог корневых сертификатов и реиндекснуть каталог используя c_rehash.

http://dalth.livejournal.com/#post-dalth-66238 , пункт «8»

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

no-dashi

скопировал, выполнил команду, рестартанул лдап

c_rehash /etc/ssl/certs/
ошибка таже TLS negotiation failure
а как проверить что добавился «в индекс» мой файл

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

а как проверить что добавился «в индекс» мой файл

ls -l. Там создастся симлинк на твой сертификат.

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

Свой ldap.conf покажи

он пустой и в комментариях, хотя добавление в него чего бы то ни было TLS_REQCERT и TLS_CRLCHECK ни какого влияния не оказывает, наверное потому что у меня конфигурация в дебиане в /etc/ldap/slapd.d/cn=config.ldif
нет, ссылка не создается, хотя создалось на другие мои сертификаты )) сейчас попробую еще их поприкручивать.

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin
[viking@work ~]$ cat /etc/openldap/ldap.conf 
#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

#BASE	dc=example,dc=com
#URI	ldap://ldap.example.com ldap://ldap-master.example.com:666

#SIZELIMIT	12
#TIMELIMIT	15
#DEREF		never
URI ldaps://localhost
BASE dc=virtual
TLS_CACERTDIR /etc/openldap/cacerts

Вот опция TLS_CACERTDIR и есть тот каталолг, в который надо засунуть сертификат и который надо c_rehash'нуть. На выходе должно получиться что-то подобное:

[viking@work ~]$ ls -l /etc/openldap/cacerts
total 8
lrwxrwxrwx. 1 root root   12 сент.  2  2011 23bcbcb2.0 -> myrootcert1.pem
lrwxrwxrwx. 1 root root    8 сент.  2  2011 f3deb654.0 -> myrootcert2.pem
-rw-r--r--. 1 root root 1229 сент.  2  2011 myrootcert1.pem
-rw-r--r--. 1 root root 1350 сент.  2  2011 myrootcert2.pem
no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

не, не помогает

# ls -l | grep ldap
lrwxrwxrwx 1 root root        13 Мар 18 17:07 02883b71.0 -> ldap_cert.pem
-rw-r--r-- 1 root root      1164 Мар 18 17:04 ldap_cert.pem

# ls -l | grep cacert.pem
lrwxrwxrwx 1 root root        10 Мар 18 17:07 b9cf35f6.0 -> cacert.pem
-rw-r--r-- 1 root root      1074 Мар 18 17:00 cacert.pem

# cat /etc/ldap/ldap.conf

URI ldaps://localhost
BASE dc=Домен,dc=ru
TLS_CACERTDIR /etc/ssl/certs

может cn для сертификата не тот задаю!? добавил из hostname -f один фиг TLS negotiation failure, да и ldapsearch не получается запустить для ldaps

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

1. cn сертификата должен в точности совпадать с именем сервера

2. проверь досягаемость (читабельность) сертификатов для юзера

3. сделай strace. Оно у тебя точно твой ldap.conf читает?

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

no-dashi

разобрался с ldapsearch - так все работает

ldapsearch -H ldaps://hostname/ -LLL -D cn=admin,dc=домен,dc=ru -W -b "ou=Город,dc=домен,dc=ru" "cn=Бокова*"
Enter LDAP Password:

TLS established tls_ssf=128 ssf=128

# cat ldap.conf
TLS_CACERT      /etc/ssl/certs/cacert.pem
с ошибкой TLS negotiation failure валится при поиске из МОЗИЛЫ при установке галки SSL, из аутлука вообще никаких ошибок, просто не ищет ((

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

и похоже проблема в том, что мозила просто не хочет работать с этим сертификатом

Установи ей этот сертификат (cacert.pem), и аутлуку тоже установи, после этого начнёт работать. Я это проходил.

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

Достаточно было корневого.

да чего то вроде не хотело с ним, теперь с мозилой мучаюсь, где то заработало, а где то нет, почему понять не могу, вроде тоже добавил корневой.

wolverin ★★★
() автор топика
17 июня 2013 г.
Ответ на: комментарий от wolverin

теперь с мозилой мучаюсь, где то заработало, а где то нет, почему понять не могу, вроде тоже добавил корневой.

оказывается был один серийный номер у корневого и у сервера, поэтому в скрипте нужно ставить паузу по времени при создании их.

wolverin ★★★
() автор топика
16 сентября 2014 г.

т.е. по-хорошему, чтоб лдап работал с ссл нужно нормальный несапоподписный сертификат?

ipeacocks ★★★★★
()
Ответ на: комментарий от ipeacocks

чтобы сертификаты свои не рассылать и не объяснять куда их грузить - потребуется несамоподписаный, других проблем нет.

wolverin ★★★
() автор топика
Ответ на: комментарий от no-dashi

Дополнение...

Плохо понимаешь. Ты сделал почти всё кроме самого важного: тебе надо твой ca.cert подложить в каталог корневых сертификатов и реиндекснуть каталог используя c_rehash.

В разных дистрибутивах могут быть разные средства для добавления корневых сертификатов system-wide. В fedora/centos/rhel/sl нужно прочитать

man update-ca-trust

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.