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 ldapmodifymemberi tahu saya bahwa cn=configitu 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.ldifuntuk 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/slapduntuk memasukkanSLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"

  • Saya menambahkan pengguna openldap ke grup ssl-cert.
  • Saya memulai kembali slapd.
  • Menggunakan ldapvi, cn=configtidak dapat ditemukan.
  • Tetapi slapcat -n0 | grep -i tlsmenunjukkan 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.
  • nmapmenunjukkan 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 -showcertsdan 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, ldapsearchtidak 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.

Richard Żak
sumber