Open Directory:啟用 Open Directory 與複本的 SSL

可啟用安全編碼傳輸技術(SSL),在 Open Directory 主伺服器、複本和存取 LDAP 目錄網域的電腦之間提供加密通訊。SSL 使用數位憑證為伺服器提供已認證的身分。你可以使用自簽憑證或取自憑證授權的憑證。

讓 Open Directory 主伺服器和複本電腦準備就緒:

  1. 確認 Open Directory 主伺服器和複本電腦兩者都支援 SSL 連線。

  2. 使用自簽憑證在 Open Directory 主伺服器上啟用 SSL 加密,並將一般名稱設為主伺服器的主機名稱。

  3. 在所有複本電腦上啟用 SSL:使用 Server Admin 在複本電腦上建立自簽憑證,一般名稱與該電腦的主機名稱相同。

在「終端機」中執行以下指令:

Mac OS X Server 10.5:

sudo slapconfig -setldapconfig -ssl on -sslkey [SSL 金鑰路徑] -sslcert [SSL 憑證路徑] -ssldomain [憑證名稱]

Mac OS X Server 10.6:

sudo slapconfig -setldapconfig -ssl on -sslkey [SSL 金鑰路徑] -sslcert [SSL 憑證路徑]

(根據預設,Server Admin 會將憑證儲存在 /etc/certificates 底下。此外,也請務必在路徑中加入檔案名稱)

安裝來自 Open Directory 主伺服器和複本的憑證

為了讓用戶端電腦可以使用 SSL,必須將目錄叢集中每台伺服器的憑證拷貝到用戶端電腦。若要安裝來自 Open Directory 主伺服器和複本電腦的憑證:

1. 在每台用戶端電腦上,建立 /etc/openldap/certs 目錄。

2. 在用戶端電腦上開啟「終端機」並執行此指令,以便從伺服器取得憑證:

openssl s_client -connect [伺服器的主機名稱]:636

3. 將「---BEGIN CERTIFICATE---」和「---END CERTIFICATE---」之間的文字拷貝到名稱為「hostname」的檔案中。

4. 將新的 hostname 檔案放到這裡:/etc/openldap/certs/

5. 你可以使用此指令測試憑證:

openssl s_client -connect [伺服器的主機名稱]:636 -CAfile /etc/openldap/certs/hostname

顯示的輸出結果應與之前類似,但最後一行會有以下變化:verify return code:0(ok),而非之前收到的 18 或 19

6. 如果你只有一個憑證(例如,單一 LDAP 伺服器啟用 SSL),請將以下內容加入 /etc/openldap/ldap.conf 檔案

TLS_CACERT /etc/openldap/certs/[伺服器的主機名稱]

如果你有多台 LDAP 伺服器啟用 SSL

你將需要個別指定伺服器,或將它們全部放在相同目錄中,並採取以下步驟將 ldap.conf 指向這些伺服器:

1. 針對 LDAP 叢集中的每台伺服器,你必須像之前那樣使用 openssl s_client 指令取得憑證:

openssl s_client -connect [伺服器的主機名稱]:636

2. 取得憑證後,使用 c_hash(OpenSSL 工具程式)讓憑證變成雜湊的格式。c_hash 會針對每個憑證提供名稱,你要使用此名稱來重新命名位於 /etc/opoldap/certs 的憑證檔案:

/System/Library/OpenSSL/misc/c_hash /etc/openldap/certs/hostname

輸出應與以下內容類似:03be8eb2.0 => /etc/openldap/certs/hostname

3. 收到雜湊名稱後,請手動將現有的憑證檔案重新命名。

範例:

mv /etc/openldap/certs/hostname /etc/openldap/certs/03be8eb2.0

4. 將所有憑證都執行 c_hash 後,請編輯 /etc/openldap/ldap.conf 檔案,方式如下:

TLS_CACERTDIR /etc/openldap/certs/

5. 移除 ldap.conf 檔案中任何之前的 TLS_CACERTDIR 項目。

6. 使用 ldapsearch 指令進行驗證:

ldapsearch -v -x -H ldaps://[伺服器的主機名稱] -b [搜尋基準]

7. 如果你已嘗試設定 LDAP 伺服器,可能需要重新啟動「目錄服務」:

sudo killall DirectoryService

發佈日期: