Я посмотрел вокруг и нашел в Интернете много о том, как настроить TLS для OpenLDAP. Основная идея заключается в добавлении элементов olcTLS для включения cert, key, cacert в cn=config
.
Однако при использовании FusionDirectory попытка использовать ldapmodify
говорит мне, что cn=config
не существует, и когда я пытаюсь создать cn=config
, он говорит мне (вошел в систему как администратор LDAP), что у меня нет прав на создание Это. Я следовал этим инструкциям.
Поэтому я прибег к редактированию файла /etc/ldap/slapd.d/cn=config.ldif
чтобы добавить следующие элементы:
olcTLSCACertificate: /etc/ssl/certs/ca.cert
olcTLSCertificateFile: /etc/ssl/certs/fd.cert
olcTLSCertificateKeyFile: /etc/ssl/private/fd.key
olcTLSCipherSuite: SECURE256
olcTLSVerifyClient: try
Я также отредактировал /etc/default/slapd
чтобы включить SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
- Я добавил пользователя openldap в группу ssl-cert.
- Я перезапустил slapd.
- Используя ldapvi,
cn=config
не может быть найден. - Но
slapcat -n0 | grep -i tls
показывает записи olcTLS *, которые я принудительно добавил в файл. - Используя Wireshark, я вижу, что когда клиент запрашивает START_TLS, сервер говорит «хорошо» и показывает поддерживаемые шифры. Клиент начинает SSL Hello, а сервер отвечает TCP FIN.
nmap
показывает, что порты 389 и 636 открыты, а также показывает информацию о сертификате (эмитент: commonName = MyServer/organizationName = Testing), тип открытого ключа: rsa, биты открытого ключа: 4096 и хэши сертификата MD5 и SHA1. Так что он может прочитать сертификат и ключ, разрешения в порядке.
Однако соединения SSL (636) и TLS (389) не работают. Незашифрованные соединения 389 работают просто отлично, за исключением того, что в Wireshark я вижу слишком много информации, и это доставляет мне неудобства.
Так в чем здесь дело?
- ОС Debian Jessie 8.7
- FusionDirectory 1.0.20
- OpenLDAP 2.4.40
- Сертификаты, созданные с помощью gnomint с расширениями TLS.
Изменить 15 мая 2017 года:
Я запустил openssl s_client -connect host.local -showcerts
и он показал сертификат, согласованные шифры и т.д.
Client Certificate Types: RSA sign, DSA sign, ECDSA sign
Requested Signature Algorithms:
RSA+SHA384:ECDSA+SHA384:RSA+SHA512:ECDSA+SHA512
Shared Requested Signature Algorithms:
RSA+SHA384:ECDSA+SHA384:RSA+SHA512:ECDSA+SHA512
Peer signing digest: SHA512
Server Temp Key: ECDH, P-521, 521 bits
---
SSL handshake has read 4512 bytes and written 511 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 5120 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: 37EAADA00459F296BE972FB57B4A5....
Session-ID-ctx:
Master-Key: 0F865CBEDA755F84E783.....
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1494883911
Timeout : 300 (sec)
Verify return code: 19 (self signed certificate in certificate chain)
---
Однако ldapsearch
не работает:
# ldapsearch -H ldaps://host.local:636 -xLL -v
ldap_initialize( ldaps://host.local:636/??base )
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
Так что часть SSL работает, но не все остальное.