支援這項功能的版本:Frontline Standard 和 Frontline Plus;Business Plus;Enterprise Standard 和 Enterprise Plus;Education Fundamentals、Education Standard 和 Education Plus;Enterprise Essentials Plus。版本比較
嘗試將 LDAP 用戶端連線至安全 LDAP 服務前,建議使用 ldapsearch、ADSI 或 ldp.exe 等簡單工具,快速測試連線。如果在嘗試將 LDAP 用戶端連線至服務時發生錯誤,您也可以使用這些工具排解問題。
透過以下各節所述的測試,您可以瞭解自己是否遇到設定問題、常見錯誤訊息,以及修正這些問題的建議做法。
本文包含下列各節:
- 驗證連線並執行 LDAP 查詢
執行 LDAP 查詢可確認您是否能連線至安全 LDAP 並執行查詢。 - 視需要執行基本連線測試
如果執行 LDAP 查詢失敗,請執行基本連線測試,檢查網路存取權和驗證。
注意:如果在這個程序中需要與 Google Workspace 支援團隊或 Cloud Identity 進階版支援團隊聯絡,請務必儲存指令輸出內容。請務必先從輸出內容中移除所有個人識別資訊,再與支援團隊分享。
驗證連線及執行 LDAP 查詢
在 Google 管理控制台中設定安全 LDAP 服務後,您可以使用下列三種簡單工具之一,驗證與安全 LDAP 的連線:ldapsearch、ADSI 或 ldp.exe。如需更多詳細資料與操作說明,請參閱以下各節。
ldapsearch
使用指令列的 ldapsearch 公用程式,執行基本 LDAP 查詢。如果成功傳回 LDAP 查詢結果,就表示 LDAP 用戶端、基礎傳輸層安全標準 (TLS) 工作階段和 TCP 連線均為正常運作。
如要使用 ldapsearch 測試連線:
- 按照「新增 LDAP 用戶端」一文中的操作說明,建立 LDAP 設定並下載憑證。
注意:為簡化測試環境,請確保您授權 LDAP 用戶端存取的機構單位中,至少有一位使用者。
- 執行 LDAP 查詢。這個範例會查詢特定使用者 (詳情請參閱「OpenLDAP ldapsearch」)。
LDAPTLS_CERT={crt_file} LDAPTLS_KEY={key_file} ldapsearch -H ldaps://ldap.google.com:636 -b dc={domain},dc={domain} '(mail={user_email})'請依下列方式取代預留位置:
- {crt_file}:.crt 檔案的名稱
- {key_file}:.key 檔案的檔名
- {domain}:網域名稱的每個部分,例如:example.com 會變成「dc=example,dc=com」
- {user_email}:網域中某位使用者的主要電子郵件地址。
使用 ldapsearch 的注意事項
- 如未提供 BindDN 值,ldapsearch 會使用金鑰和憑證授權搜尋。
- 如果 BindDN 值是您在管理控制台中產生的 LDAP 使用者名稱,ldapsearch 會使用管理控制台中設定的 LDAP 用戶端權限。
ldapsearch -H ldaps://ldap.google.com:636 -b dc={domain},dc={domain} -D {ldap_access_credentials_username} -W '(mail={user_email}) - 如果 BindDN 值是 Workspace 使用者的電子郵件地址或 LDAP 識別名稱,ldapsearch 會使用該使用者的憑證,根據其權限進行搜尋。
ldapsearch -H ldaps://ldap.google.com:636 -b dc={domain},dc={domain} -D {workspace_username@domain} -W '(mail={user_email})'
搭配 stunnel 使用 ldapsearch
如果部署作業需要使用 stunnel,請按照下列步驟操作:
- 在管理控制台中產生存取憑證,取得 ldapsearch 所需的使用者名稱和密碼。
- 請使用以下指令:
ldapsearch -x -D "{username}" -w {password} -H ldap://{stunnel_host}:{stunnel_port} -b dc={domain},dc={domain} '(mail={user_email})'依下列方式取代預留位置:
- {username}:管理控制台中產生的憑證所含使用者名稱
- {password}:管理控制台中產生的憑證密碼
- {stunnel_host}:在網路中執行 stunnel 的機器的 IP 位址或主機名稱。
- {stunnel_port}:執行 stunnel 的通訊埠 (可前往 stunnel 設定查看)
- {user_email}:網域中使用者主要電子郵件地址
ldapsearch 指令的成功情境
成功輸出 ldapsearch 指令後,系統會以 LDIF 格式列出使用者和電子郵件地址 (建立 LDAP 用戶端時指定)。
例如:
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# example.com
dn: dc=example,dc=com
objectClass: top
objectClass: domain
objectClass: dcObject
dc: example
# admin-group, Groups, example.com
dn: cn=admin-group,ou=Groups,dc=example,dc=com
objectClass: top
objectClass: groupOfNames
objectClass: posixGroup
cn: admin-group
displayName: admin-group
description:
gidNumber: 12345
member: uid=admin,ou=Users,dc=example,dc=com
memberUid: admin
googleAdminCreated: FALSE
# example-user, Users, example.com
dn: uid=example-user,ou=Users,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
uid: example-user
googleUid: example-user
posixUid: example-user
cn: example-user
cn: FirstName LastName
sn: FirstName
displayName: FirstName LastName
givenName: FirstName
mail: example-user@example.com
uidNumber: 12345
gidNumber: 12345
homeDirectory: /home/example-user
loginShell: /bin/bash
gecos:
可能發生的錯誤
- OpenLDAP 用戶端和/或程式庫在編譯時未支援 SNI
LDAP 用戶端 (本例為 OpenLDAP) 必須支援伺服器名稱指示 (SNI)。如果 SNI 無法使用,您可能會看到類似下列內容的錯誤:SASL/EXTERNAL authentication startedldap_sasl_interactive_bind_s: Unknown authentication method (-6)additional info: SASL(-4): no mechanism available:
建議:- 如果您使用的是 MacOS,SASL 會預設為啟用,但您可以利用「-x」選項略過 SASL。
- 將
-d5選項新增至 ldapsearch,並檢查輸出內容是否包含下列程式碼:TLS certificate verification: depth: 0, err: 18, subject: /OU=No SNI provided; please fix your client.
-
ldapsearch 會傳回狀態 0 (成功),但不會輸出任何使用者
使用用戶端憑證指定 ldapsearch 選項-x(使用 SASL 驗證) 時,驗證會成功,但不會列出網域中的使用者。
建議:移除選項-x,然後重試。
ADSI 編輯器 (Windows)
- 按照「ldp.exe (Windows)」中的步驟 1 至 11 安裝用戶端憑證。
- 依序點選 [動作] > [連線至…]。
- 輸入下列連線設定:
名稱:輸入連線名稱,例如「Google LDAP」。
連線點:「選取或輸入辨別名稱或命名環境」
以 DN 格式輸入網域名稱 (例如 dc=example,dc=com 代表 example.com)。
電腦:「選取或輸入網域或伺服器」
ldap.google.com
使用 SSL 型加密:勾選 - 按一下「進階...」,然後輸入下列詳細資料:
指定憑證:已勾選
使用者名稱:管理控制台的存取憑證使用者名稱
密碼:管理控制台的存取憑證密碼
連接埠號碼:636
通訊協定:LDAP
簡單繫結驗證:已勾選 - 按一下 [確定],再按一下 [確定]。
- 如果連線成功,右側窗格就會顯示基準 DN 中的目錄內容。
ldp.exe (Windows)
- 安裝 OpenSSL。
- 將憑證和金鑰檔案轉換成一個 PKCS12 格式的檔案。在命令提示字元中輸入下列內容:
openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12
輸入密碼來加密輸出檔案。 - 前往控制台。
- 在搜尋方塊中搜尋「憑證」,然後按一下「管理使用者憑證」。
- 依序前往 [動作] > [所有工作] > [匯入…]。
- 選取 [目前使用者],然後點選 [下一步]。
- 按一下 [瀏覽…]。
- 在對話方塊右下角的「檔案類型」下拉式選單中,選取 [個人資訊交換 (*.pfx;*.p12)]。
- 選取步驟 2 中的 ldap-client.p12 檔案,按一下「開啟」,然後按一下「下一步」。
- 輸入步驟 2 的密碼,然後點選 [下一步]。
- 選取「個人」憑證存放區,依序按一下「下一步」和「完成」。
- 執行 Ldp.exe。
- 依序前往「連線」>「連線...」。
- 輸入下列連線詳細資料:
伺服器:ldap.google.com
通訊埠:636
無連線:取消勾選
SSL:勾選 - 按一下 [確定]。
- 依序點選 [檢視] > [樹狀目錄]。
- 輸入基準 DN,也就是 DN 格式的網域名稱 (假設您的網域為「example.com」,則輸入 dc=example,dc=com)。
- 按一下 [確定]。
- 如果連線成功,右側窗格就會顯示基準 DN 中的目錄內容。
視需要執行基本連線測試
如果無法在「驗證連線並執行 LDAP 查詢」中取得成功結果,請按照本節的指示進行連線測試。如果 ldapsearch 無法傳回預期使用者,且未明確指出基礎 TLS 工作階段是否成功,請使用 OpenSSL 用戶端,確認 OpenLDAP 依賴的網路層是否正常運作。
如要進行基本連線測試:
安裝作業系統適用的 openssl 用戶端公用程式。
大多數 GNU/Linux 發行版本都使用「openssl」套件名稱。請參閱其他作業系統的詳細資料。
使用 openssl 用戶端手動連線至安全 LDAP 服務:
openssl s_client -connect ldap.google.com:636確認 openssl s_client 輸出內容結尾是否出現下列行,藉此確認 SSL 協商是否成功:
Verify return code: 0 (ok)
可能發生的錯誤
OpenSSL 用戶端/程式庫不支援 SNI (伺服器名稱指示)
連線測試期間可能會傳回下列輸出內容:
Verify return code: 18 (self signed certificate)
安全 LDAP 服務需要支援並使用 SNI (伺服器名稱指示) 啟動 TLS 工作階段的 TLS 用戶端。如果 TLS 用戶端不支援 SNI,TLS 伺服器 (ldap.google.com) 會傳回無法通過 CA 驗證檢查的自簽憑證,表示需要 SNI。
如要確認這項行為,請檢查 OpenSSL 用戶端輸出內容,在輸出內容開頭附近尋找下列行:
depth=0 OU = "No SNI provided; please fix your client.", CN = invalid2.invalid
造成這項錯誤的原因可能包括:OpenSSL 版本不支援 SNI,或是應用程式使用 OpenSSL 程式庫時明確停用 SNI。
連線遭拒
如果系統傳回下列輸出內容 (其中 {timestamp} 是以微秒為單位的 UNIX 時間戳記),表示系統在 TLS 協商開始前,主動拒絕 TCP 連線:
{timestamp}:error:0200206F:system library:connect:Connection refused:crypto/bio/b_sock2.c:110:
{timestamp}:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111:connect:errno=111
可能原因如下:
- 本機裝置設有應用程式或系統層級的防火牆
- 相同的實體網路或上游網路中設有防火牆
如要進行調查,請使用 tcptraceroute 來識別拒絕連線的主機 (例如使用 tcptraceroute ldap.google.com 636)。