OpenLDAP

openldap + ssl

[華語, cmn-Hant-TW] 基本上有了 Let’s Encrypt 之後,合格的 SSL 認證取得算是方便非常多,有些之前跳過檢查或是設定自簽 root 的處理方式都可以省掉了,不過有些東西還是要設定加上定時更新才會用的順暢 在 FreeBSD 上 security/ca_root_nss 這個 port 要先裝好,然後 /etc/ssl/cert.pem 就可以拿來用了,如果安裝時沒開啟這個連結的話,直接用 /usr/local/share/certs/ca-root-nss.crt 也是可以的,然後常用的一些套件就可以用這個 cert 了,例如帳號認證用的 net/nss-pam-ldapd,在 /usr/local/etc/nslcd.conf 裡面加上一行 tls_cacertfile /etc/ssl/cert.pem 的設定後就不會抱怨 ssl 是自簽的 (也就是 tls_reqcert allow 用不到了),其他的軟體,像是 php 之類直接吃 /usr/local/etc/openldap/ldap.conf 設定的也不難處理,直接加一行 TLS_CACERT /etc/ssl/cert.pem 就可以搞定,其他的設定也是類似這樣處理即可 當然了,因為 Let’s Encrypt 的認證時間只有幾個月,定期更新憑證是需要的,不然過期的話還是會吃一堆錯誤訊息的

OSX Open Directory 修復

[華語, cmn-Hant-TW] 有一台 Mac 跑 Server.app 提供一些簡單的服務,主要是 LDAP 帳號權限管理,某次升級之後就突然沒辦法登入了,不過因為網頁認證郵件之類的都還會動,所以也沒有特別在意,然後終於在 SSL 到期之後整個炸掉,所以只好開始找問題在哪,一開始以為是 SSL 的問題,想辦法簽一個新的結果發現 Open Directory 居然不吃新的 SSL,有人說是 SSL 需要 code signing 才吃,不過重點是關掉 SSL 應該還是要會動才是,因為其他用到的伺服器配合關 TLS 照樣可以連,看了好幾篇討論後來在這篇看到有人說要照這個說明跑一次 Rekerberize,試過之後果然可以,原來是之前的更新沒跑完整啊,難怪帳號明明就存在,但是 ssh 跟桌面就是不給登入,因為 OSX 的登入有用到 kerberos 啊! 是說後來完整修復也不是用這招,因為修修改改弄一弄就炸掉了,還好試之前有先封存 Open Directory 伺服器,就放心的整個砍掉 (連 /var/db/openldap 都砍了) 再從封存檔回復,結果這樣居然就一切正常,連本來不吃的…

OpenLDAP 搭配 mdb backend

[華語, cmn-Hant-TW] 在設定 openldap 的時候,通常會用 bdb 這個 backend,不過既然官方都說這個要退休了那當然得改用別的方案,雖然說是建議用 mdb,不過因為偷懶就用 ldif  試看看,一開始用覺得還 OK,結果發現權限上面居然有神奇的狀況,大部份的權限都沒問題,但是 add 跟 delete 似乎只要 auth 過就能執行,完全無視權限設定,查了一堆資料試了半天改了一堆設定都還是能執行,唯一擋得住的方式就是讓人不能登入,啊不能登入就跟不能用是一樣的意思了,所以這條路卡關,就改來試 mdb 看情況如何。 結果還不錯,其實直接跳 mdb 還算蠻無痛的,資料庫檔案也只剩 data.mdb 跟 lock.mdb 兩個,看起來很清爽,至於效能部份因為這台的資料量還沒多到需要擔心的程度,就沒特別去比較了。 mdb 沒遇到 add 跟 delete 權限問題,但是遇到一個奇怪的狀況,在 LDAP Admin 這套軟體下會看到不斷跳針的無窮迴圈項目,而且一按刪除,程式就當掉,不過在 LAM 下倒是沒啥問題,找了一下 LDAP Admin…