รุ่นที่รองรับฟีเจอร์นี้ ได้แก่ 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 Support ในระหว่างขั้นตอนนี้ โปรดบันทึกเอาต์พุตของคำสั่งเอาไว้ และตรวจสอบให้แน่ใจว่าได้นำข้อมูลส่วนบุคคลที่ระบุตัวบุคคลนั้นได้ออกจากเอาต์พุตก่อนที่จะแชร์ข้อมูลกับทีมสนับสนุน
ยืนยันการเชื่อมต่อและทำการค้นหา 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 (สำหรับ Windows)
- ทำตามขั้นตอนที่ 1–11 ใน ldp.exe (สำหรับ Windows) เพื่อติดตั้งใบรับรองไคลเอ็นต์
- ไปที่ Action > Connect to…
- ป้อนการตั้งค่าการเชื่อมต่อต่อไปนี้:
Name: พิมพ์ชื่อสำหรับการเชื่อมต่อ เช่น Google LDAP
Connection Point: "Select or type a Distinguished Name or Naming Context"
ป้อนชื่อโดเมนในรูปแบบ DN (ตัวอย่างเช่น dc=example,dc=com สำหรับ example.com)
Computer: "Select or type a domain or server"
ldap.google.com
Use SSL-based Encryption: เลือก - คลิก Advanced... แล้วป้อนรายละเอียดดังนี้
Specify credentials: เลือก
Username: ชื่อผู้ใช้ที่เป็นข้อมูลเข้าสู่ระบบจากคอนโซลผู้ดูแลระบบ
Password: รหัสผ่านที่เป็นข้อมูลเข้าสู่ระบบจากคอนโซลผู้ดูแลระบบ
Port Number: 636
Protocol: LDAP
Simple bind authentication: เลือก - คลิก 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
- ในช่องค้นหา ให้ค้นหา "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 คลิก Next จากนั้นคลิก Finish
- เรียกใช้ Ldp.exe
- ไปที่ Connection > Connect...
- ป้อนรายละเอียดการเชื่อมต่อดังนี้:
เซิร์ฟเวอร์: ldap.google.com
พอร์ต: 636
ไม่ใช้การเชื่อมต่อ: ยกเลิกการเลือก
SSL: เลือก - คลิกตกลง
- ไปที่ View > Tree
- ป้อน DN พื้นฐาน ซึ่งเป็นชื่อโดเมนในรูปแบบ DN (ตัวอย่างเช่น dc=example,dc=com สำหรับ example.com) ซึ่งเป็นชื่อโดเมนในรูปแบบ 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 (Server Name Indication) หากไคลเอ็นต์ 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