รุ่นที่รองรับฟีเจอร์นี้ ได้แก่ 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 Premium ในระหว่างกระบวนการนี้ โปรดบันทึกเอาต์พุตของคำสั่ง โปรดนำข้อมูลส่วนบุคคลที่ระบุตัวบุคคลนั้นได้ออกจากเอาต์พุตก่อนแชร์กับทีมสนับสนุน
ยืนยันการเชื่อมต่อและเรียกใช้การสืบค้น LDAP
เมื่อตั้งค่าบริการ LDAP ที่ปลอดภัยในคอนโซลผู้ดูแลระบบของ Google แล้ว คุณจะใช้เครื่องมืออย่างใดอย่างหนึ่งใน 3 เครื่องมือนี้เพื่อยืนยันการเชื่อมต่อกับ LDAP ที่ปลอดภัยได้ ได้แก่ ldapsearch, ADSI หรือ ldp.exe โปรดดูวิธีการและรายละเอียดในหัวข้อด้านล่าง
ldapsearch
ใช้ยูทิลิตี ldapsearch จากบรรทัดคำสั่งเพื่อทำการค้นหา LDAP ขั้นพื้นฐาน ผลลัพธ์การค้นหา LDAP ที่สำเร็จแสดงว่าไคลเอ็นต์ LDAP, เซสชัน TLS พื้นฐาน และการเชื่อมต่อ TCP ทำงานได้ตามที่ต้องการ
วิธีทดสอบการเชื่อมต่อด้วย ldapsearch
- สร้างการกำหนดค่า LDAP และดาวน์โหลดใบรับรองตามวิธีการในเพิ่มไคลเอ็นต์ LDAP
หมายเหตุ: เพื่อให้สภาพแวดล้อมการทดสอบง่ายขึ้น โปรดตรวจสอบว่ามีผู้ใช้อย่างน้อย 1 รายในหน่วยขององค์กรที่คุณให้สิทธิ์เข้าถึงไคลเอ็นต์ 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 เป็นอีเมลหรือชื่อที่โดดเด่นของ LDAP ของผู้ใช้ Workspace ldapsearch จะใช้ข้อมูลเข้าสู่ระบบของผู้ใช้รายนั้นเพื่อค้นหาตามสิทธิ์ของผู้ใช้
ldapsearch -H ldaps://ldap.google.com:636 -b dc={domain},dc={domain} -D {workspace_username@domain} -W '(mail={user_email})'
ใช้ ldapsearch กับ stunnel
หากการติดตั้งใช้งานกำหนดให้คุณต้องใช้ 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} : ที่อยู่ IP หรือชื่อโฮสต์ของเครื่องที่เรียกใช้ stunnel ในเครือข่าย
- {stunnel_port} : พอร์ตที่ stunnel กำลังทำงานหรือตรวจสอบการตั้งค่า stunnel
- {user_email} อีเมลหลักของผู้ใช้ในโดเมน
สถานการณ์ที่คำสั่ง ldapsearch ทำงานได้สำเร็จ
เอาต์พุตที่สำเร็จของคำสั่ง ldapsearch จะแสดงรายชื่อผู้ใช้ที่มีอีเมล (ตามที่ระบุเมื่อสร้างไคลเอ็นต์ LDAP) ในรูปแบบ LDIF
เช่น
# 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"
- เพิ่มตัวเลือก
-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)
- ทำตามขั้นตอนที่ 1-11 ใน ldp.exe (Windows) เพื่อติดตั้งใบรับรองไคลเอ็นต์
- ไปที่ Action > Connect to…
- ป้อนการตั้งค่าการเชื่อมต่อต่อไปนี้
ชื่อ: พิมพ์ชื่อสำหรับการเชื่อมต่อ เช่น Google LDAP
จุดเชื่อมต่อ: "เลือกหรือพิมพ์ชื่อที่โดดเด่นหรือบริบทการตั้งชื่อ"
ป้อนชื่อโดเมนในรูปแบบ DN (เช่น dc=example,dc=com สำหรับ example.com)
คอมพิวเตอร์: "เลือกหรือพิมพ์โดเมนหรือเซิร์ฟเวอร์"
ldap.google.com
ใช้การเข้ารหัสที่อิงตาม SSL: เลือก - คลิกขั้นสูง... แล้วป้อนรายละเอียดต่อไปนี้
ระบุข้อมูลเข้าสู่ระบบ: เลือก
ชื่อผู้ใช้: ชื่อผู้ใช้ของข้อมูลเข้าสู่ระบบเพื่อเข้าถึงจากคอนโซลผู้ดูแลระบบ
รหัสผ่าน: รหัสผ่านของข้อมูลเข้าสู่ระบบเพื่อเข้าถึงจากคอนโซลผู้ดูแลระบบ
หมายเลขพอร์ต: 636
โปรโตคอล: LDAP
การตรวจสอบสิทธิ์การเชื่อมโยงอย่างง่าย: เลือก - คลิก OK แล้วคลิก OK อีกครั้ง
- หากการเชื่อมต่อเสร็จสิ้น เนื้อหาไดเรกทอรีใน DN ฐานจะปรากฏในแผงด้านขวา
ldp.exe (สำหรับ Windows)
- ติดตั้ง OpenSSL
- แปลงไฟล์ใบรับรองและคีย์เป็นไฟล์รูปแบบ PKCS12 ไฟล์เดียว ที่ Command Prompt ให้ป้อนข้อมูลต่อไปนี้
openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12
ป้อนรหัสผ่านเพื่อเข้ารหัสไฟล์เอาต์พุต - ไปที่ Control Panel
- ในช่องค้นหา ให้ค้นหา "ใบรับรอง" แล้วคลิกจัดการใบรับรองผู้ใช้
- ไปที่ Action > All Tasks > Import…
- เลือก Current User แล้วคลิก Next
- คลิก Browse…
- ในเมนูแบบเลื่อนลง file type ที่มุมขวาล่างของกล่องโต้ตอบ ให้เลือก Personal Information Exchange (*.pfx;*.p12)
- เลือกไฟล์ ldap-client.p12 จากขั้นตอนที่ 2 คลิกเปิด แล้วคลิกถัดไป
- ป้อนรหัสผ่านจากขั้นตอนที่ 2 และคลิก Next
- เลือกที่เก็บใบรับรองส่วนตัว คลิกถัดไป แล้วคลิกเสร็จสิ้น
- เรียกใช้ Ldp.exe
- ไปที่การเชื่อมต่อ > เชื่อมต่อ...
- ป้อนรายละเอียดการเชื่อมต่อต่อไปนี้
เซิร์ฟเวอร์: ldap.google.com
พอร์ต: 636
ไม่มีการเชื่อมต่อ: ยกเลิกการเลือก
SSL: เลือก - คลิกตกลง
- ไปที่ View > Tree
- ป้อน DN พื้นฐาน ซึ่งเป็นชื่อโดเมนในรูปแบบ DN (ตัวอย่างเช่น dc=example,dc=com สำหรับ example.com)
- คลิก OK
- หากการเชื่อมต่อเสร็จสิ้น เนื้อหาไดเรกทอรีใน DN ฐานจะปรากฏในแผงด้านขวา
ทำการทดสอบการเชื่อมต่อพื้นฐานหากจำเป็น
หากไม่ได้รับผลลัพธ์ที่สำเร็จในยืนยันการเชื่อมต่อและเรียกใช้การค้นหา LDAP ให้ทำตามวิธีการในส่วนนี้เพื่อทดสอบการเชื่อมต่อ หาก ldapsearch ไม่สามารถแสดงผู้ใช้ที่คาดไว้และไม่ได้ระบุอย่างชัดเจนว่าเซสชัน TLS พื้นฐานสำเร็จ ให้ใช้ไคลเอ็นต์ OpenSSL เพื่อยืนยันว่าเลเยอร์เครือข่ายที่ OpenLDAP ใช้ทำงานได้ตามที่คาดไว้
หากต้องการทำการทดสอบการเชื่อมต่อขั้นพื้นฐาน ให้ทำดังนี้
ติดตั้งยูทิลิตีไคลเอ็นต์ openssl สำหรับระบบปฏิบัติการของคุณ
ระบบปฏิบัติการ GNU/Linux ที่แจกจ่ายส่วนใหญ่ใช้ชื่อแพ็กเกจ "openssl" ดูรายละเอียดเกี่ยวกับระบบปฏิบัติการอื่นๆ
สร้างการเชื่อมต่อกับบริการ LDAP ที่ปลอดภัยด้วยตนเองโดยใช้ไคลเอ็นต์ openssl
openssl s_client -connect ldap.google.com:636ยืนยันว่าการเจรจา SSL สำเร็จแล้วโดยการแสดงบรรทัดต่อไปนี้ในส่วนท้ายของเอาต์พุต openssl s_client ดังนี้
Verify return code: 0 (ok)
ข้อผิดพลาดที่เป็นไปได้
ไคลเอ็นต์/ไลบรารี OpenSSL ไม่รองรับ SNI (Server Name Indication)
ในระหว่างทดสอบการเชื่อมต่อ ระบบอาจแสดงผลเอาต์พุตต่อไปนี้
Verify return code: 18 (self signed certificate)
บริการ LDAP ที่ปลอดภัยต้องใช้ไคลเอ็นต์ TLS ที่รองรับและเริ่มเซสชั่น TLS โดยใช้ SNI (การระบุชื่อเซิร์ฟเวอร์) หากไคลเอ็นต์ TLS ไม่รองรับ SNI เซิร์ฟเวอร์ TLS (ldap.google.com) จะส่งคืนใบรับรองแบบ Self-signed ซึ่งจะไม่ผ่านการตรวจสอบความถูกต้องของ CA เพื่อระบุว่าต้องใช้ SNI
ระบบจะยืนยันการทำงานนี้ได้โดยการตรวจสอบเอาต์พุตของไคลเอ็นต์ OpenSSL สำหรับบรรทัดที่ใกล้กับจุดเริ่มต้นของเอาต์พุตต่อไปนี้
depth=0 OU = "No SNI provided; please fix your client.", CN = invalid2.invalid
สาเหตุของข้อผิดพลาดนี้อาจรวมถึงเวอร์ชัน OpenSSL ที่ไม่รองรับ SNI หรือแอปพลิเคชันที่ใช้ไลบรารี OpenSSL กับ SNI ที่ถูกปิดใช้งานอย่างชัดเจน
การเชื่อมต่อถูกปฏิเสธ
หากระบบแสดงผลลัพธ์ต่อไปนี้ ซึ่ง {timestamp} คือการประทับเวลา UNIX ในหน่วยไมโครวินาที แสดงว่าการเชื่อมต่อ TCP ถูกปฏิเสธอย่างต่อเนื่องก่อนที่การเจรจา TLS จะเริ่มได้
{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