รุ่นที่รองรับฟีเจอร์นี้ ได้แก่ 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
ระบบต้องมี SNI (Server Name Indication - การระบุชื่อเซิร์ฟเวอร์) ที่ไคลเอ็นต์ LDAP (ในกรณีนี้คือ OpenLDAP) รองรับ หากไม่มี 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 Edit (Windows)
- ทำตามขั้นตอนที่ 1–11 ใน ldp.exe (สำหรับ Windows) เพื่อติดตั้งใบรับรองไคลเอ็นต์
- ไปที่ Action > Connect to…
- ป้อนการตั้งค่าการเชื่อมต่อดังนี้
ชื่อ: พิมพ์ชื่อสำหรับการเชื่อมต่อ เช่น Google LDAP
Connection Point: "Select or type a Distinguished Name or Naming Context"
ป้อนชื่อโดเมนในรูปแบบ DN (ตัวอย่างเช่น dc=example,dc=com สำหรับ example.com)
คอมพิวเตอร์: "Select or type a domain or server"
ldap.google.com
ใช้การเข้ารหัสที่อิงตาม SSL: เลือก - คลิกขั้นสูง... แล้วป้อนรายละเอียดต่อไปนี้
ระบุข้อมูลเข้าสู่ระบบ: เลือก
ชื่อผู้ใช้: ชื่อผู้ใช้ที่เป็นข้อมูลเข้าสู่ระบบจากคอนโซลผู้ดูแลระบบ
รหัสผ่าน: รหัสผ่านที่เป็นข้อมูลเข้าสู่ระบบจากคอนโซลผู้ดูแลระบบ
หมายเลขพอร์ต: 636
โปรโตคอล: LDAP
การตรวจสอบสิทธิ์การเชื่อมโยงอย่างง่าย: เลือก - คลิก OK แล้วคลิก OK อีกครั้ง
- หากเชื่อมต่อได้แล้ว เนื้อหาไดเรกทอรีใน DN หลักจะปรากฏในแผงด้านขวา
ldp.exe (สำหรับ Windows)
- ติดตั้ง OpenSSL
- แปลงไฟล์ใบรับรองและคีย์เป็นไฟล์รูปแบบ PKCS12 ไฟล์เดียว ป้อนคำสั่งต่อไปนี้ที่พรอมต์คำสั่ง
openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12
ป้อนรหัสผ่านเพื่อเข้ารหัสไฟล์เอาต์พุต - ไปที่แผงควบคุม
- ในช่องค้นหา ให้ค้นหา "certificate" และคลิก Manage user certificates
- ไปที่ Action > All Tasks > Import…
- เลือก Current User แล้วคลิก Next
- คลิก Browse…
- ในรายการแบบเลื่อนลง file type ที่มุมขวาล่างของกล่องโต้ตอบ ให้เลือก Personal Information Exchange (*.pfx;*.p12)
- เลือกไฟล์ ldap-client.p12 จากขั้นตอนที่ 2 แล้วคลิก Open จากนั้นคลิก Next
- ป้อนรหัสผ่านจากขั้นตอนที่ 2 และคลิก Next
- เลือกที่เก็บใบรับรอง Personal คลิกถัดไป แล้วคลิกเสร็จสิ้น
- เรียกใช้ Ldp.exe
- ไปที่ Connection > Connect...
- ป้อนรายละเอียดการเชื่อมต่อดังนี้
Server: ldap.google.com
Port: 636
Connectionless: ยกเลิกการเลือก
SSL: เลือก - คลิกตกลง
- ไปที่ View > Tree
- ป้อน DN พื้นฐาน นี่คือชื่อโดเมนในรูปแบบ DN (เช่น dc=example,dc=com สำหรับ example.com)
- คลิกตกลง
- หากเชื่อมต่อได้แล้ว เนื้อหาไดเรกทอรีใน 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 (การระบุชื่อเซิร์ฟเวอร์)
ในระหว่างทดสอบการเชื่อมต่อ ระบบอาจแสดงผลเอาต์พุตต่อไปนี้
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