Setup Certificate and enble SSL/TLS of OpenLDAP on Ubuntu 14.04

本篇告訴大家: 該如何啟用OpenLDAP的SSL與TLS功能?

mkdir /etc/ldap/ssl
cd /etc/ldap/ssl
執行產生certificate file的script:

vim /etc/default/slapd
找到SLAPD_SERVICES加入ldaps:
SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"

產生tls-config.ldif檔案,內容為:

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ldap/ssl/rootca.crt
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/ssl/tonylin.crt
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/ssl/tonylin.key
執行以下command將設定匯入:
ldapmodify -QY EXTERNAL -H ldapi:/// -f tls-config.ldif
正常會看到以下訊息:
modifying entry "cn=config"
最後重新啟動ldap service並檢查連線:
service slapd restart
# ldaps:///
netstat -na | grep ":636"
# ldap:///
netstat -na | grep ":369"

最後透過LDAP Admin做測試,會出現不被信任的certificate警告:

我目標是確定可以連線就好~

改用ApacheDirectoryStudio,使用StartTLS連線;可以發現它有做certifiacte與hostname驗證:

一開始我參考了此篇教學產生certification file與設定,結果一直無法正常連線。於是透過以下command打開debug mode:

/usr/sbin/slapd -d 1 -h "ldap:/// ldapi:/// ldaps:///" -g openldap -u openldap -F /etc/ldap/slapd.d
出現以下錯誤訊息:
56f10002 slap_listener_activate(10):
56f10002 >>> slap_listener(ldaps://)
56f10002 connection_get(19): got connid=1001
56f10002 connection_read(19): checking for input on id=1001
TLS: can't accept: Could not negotiate a supported cipher suite..
56f10002 connection_read(19): TLS accept failure error=-1 id=1001, closing
56f10002 connection_close: conn=1001 sd=19
最後才試出以上方法。