Saya telah melihat-lihat dan menemukan banyak online tentang cara mengatur TLS untuk OpenLDAP. Ide dasarnya adalah menambahkan item olcTLS untuk memasukkan cert, key, cacert in cn=config
.
Namun, dengan FusionDirectory , mencoba menggunakan ldapmodify
memberi tahu saya bahwa cn=config
itu tidak ada, dan ketika saya mencoba membuat cn=config
, ia memberi tahu saya (masuk sebagai admin LDAP) bahwa saya tidak memiliki hak untuk membuatnya. Saya mengikuti instruksi ini .
Jadi saya terpaksa mengedit file /etc/ldap/slapd.d/cn=config.ldif
untuk menambahkan item berikut:
olcTLSCACertificate: /etc/ssl/certs/ca.cert
olcTLSCertificateFile: /etc/ssl/certs/fd.cert
olcTLSCertificateKeyFile: /etc/ssl/private/fd.key
olcTLSCipherSuite: SECURE256
olcTLSVerifyClient: try
Saya juga diedit /etc/default/slapd
untuk memasukkanSLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
- Saya menambahkan pengguna openldap ke grup ssl-cert.
- Saya memulai kembali slapd.
- Menggunakan ldapvi,
cn=config
tidak dapat ditemukan. - Tetapi
slapcat -n0 | grep -i tls
menunjukkan entri olcTLS * yang saya tambahkan secara paksa ke file. - Dengan menggunakan Wireshark, saya dapat melihat bahwa ketika klien meminta START_TLS, server mengatakan tidak apa-apa, dan menampilkan sandi yang didukung. Klien memulai SSL Hello, dan server merespons dengan TCP FIN.
nmap
menunjukkan bahwa port 389 & 636 terbuka, dan juga menunjukkan informasi sertifikat (Penerbit: commonName = MyServer / organizationName = Pengujian), jenis kunci publik: rsa, bit kunci publik: 4096, dan hash MD5 dan SHA1 dari sertifikat. Jadi itu bisa membaca sertifikat & kunci, izin baik-baik saja.
Namun, koneksi SSL (636) dan TLS (389) gagal. Koneksi 389 yang tidak terenkripsi bekerja dengan baik, kecuali bahwa di Wireshark saya melihat terlalu banyak informasi dan itu membuat saya tidak nyaman.
Jadi apa masalahnya di sini?
- OS adalah Debian Jessie 8.7
- FusionDirectory 1.0.20
- OpenLDAP 2.4.40
- Sertifikat dibuat dengan gnomint dengan ekstensi TLS.
Edit 15 Mei 2017:
Saya berlari openssl s_client -connect host.local -showcerts
dan itu menunjukkan sertifikat, kode yang dinegosiasikan, dll.
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)
---
Namun, ldapsearch
tidak berfungsi:
# 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)
Jadi bagian SSL berfungsi, tetapi tidak sisanya.