G Suite 推出 LDAPS 認證,但是 Business 版本不支援...

公司裡面有人提到去年的這個消息,說 G Suite 可以直接提供 LDAPS 認證:「Secure LDAP now generally available to simplify the management of traditional applications」,在裡面提到了另外一篇講的比較詳細的文章也可以參考:「Cloud Identity now provides access to traditional apps with secure LDAP」。

這個功能等於是把傳統的應用程式直接掛上去,瞬間搞定一堆應用,不用再自己透過 SAML 或是各種 API 接半天...

不過看了一下提供服務的對象,發現 G Suite 的 Business 版本不支援,只有 Enterprise 與教育版本有支援,或是買 Cloud Identity 的 Premium 版本:

Editions:
Available to G Suite Enterprise, G Suite Enterprise for Education, G Suite for Education, and Cloud Identity Premium editions only

這樣就苦了點... 目前遇到的人大多數都是買 Business 而非 Enterprise。

讓 OpenLDAP 伺服器使用 Let's Encrypt 簽的憑證

OpenLDAP 伺服器可以吃 Let's Encrypt 發的憑證以提供 LDAPS 服務,只是 SSL 設定方法跟其他軟體不太一樣,第一次設會花不少時間...

這邊的檔案目錄是以 Dehydrated 申請 Let's Encrypt 的憑證來設定。官方推薦的 Certbot 應該也有類似的檔案:

TLSCACertificateFile /etc/dehydrated/certs/x.y.z/chain.pem
TLSCertificateFile /etc/dehydrated/certs/x.y.z/cert.pem
TLSCertificateKeyFile /etc/dehydrated/certs/x.y.z/privkey.pem

這樣不管 Let's Encrypt 拿 Let’s Encrypt Authority X3 (目前的主力憑證) 還是 Let’s Encrypt Authority X4 (備用的憑證) 簽,OpenLDAP 這邊才會串出正確的 certficiate chain。(用 OpenSSLs_client -connect x.y.z:636 與 ldapsearch 測過)

要找問題的話,ldapsearch 有 -v (verbose) 與 -d 9 (debug) 可以看連線過程的細節,拿著錯誤訊息去餵搜尋引擎會有不少幫助...

在找資料時發現網路上有不少文件教大家直接在 client 端的 /etc/ldap/ldap.conf 修改 TLS_REQCERT 的值,從預設的 demand 改成 allow (或是 never),但這樣將強制檢查的條件改弱,安全性反而降低了。比較好的方式還是修正 server 端的錯誤設定。