اختبار إمكانية اتصال خدمة LDAP الآمن

الإصدارات المتوافقة مع هذه الميزة: 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 والخدمة.

تتيح لك الاختبارات الواردة في الأقسام أدناه معرفة ما إذا كان هناك مشكلة متعلقة بالإعداد من جانبك والتعرُّف على رسائل الخطأ الشائعة وعلى اقتراحات لكيفية إصلاح هذه المشاكل.

تحتوي هذه المقالة على الأقسام التالية:

ملاحظة: إذا كنت بحاجة إلى التواصل مع فريق دعم Google Workspace أو فريق دعم "النسخة المميّزة من Cloud Identity" أثناء هذه العملية، احرِص على حفظ ناتج الأوامر. تأكَّد من إزالة معلومات تحديد الهوية الشخصية من الناتج قبل مشاركته مع فريق الدعم.

التحقّق من إمكانية الاتصال وتنفيذ طلب بحث LDAP

بعد إعداد خدمة LDAP الآمن على "وحدة تحكُّم المشرف في Google"، يمكنك استخدام أداة من هذه الأدوات الثلاث البسيطة للتحقُّق من إمكانية الاتصال بخدمة LDAP الآمن: ldapsearch أو ADSI أو ldp.exe. لمعرفة التفاصيل والتعليمات، يُرجى الاطّلاع على الأقسام الواردة أدناه.

ldapsearch

يمكنك استخدام الأداة ldapsearch من سطر الأوامر لإجراء طلب بحث LDAP أساسي. حيث تشير نتيجة طلب بحث LDAP الناجحة إلى أنّ برنامج LDAP وجلسة طبقة النقل الآمنة (TLS) الأساسية وربط بروتوكول TCP يعملان على النحو المطلوب.

لاختبار إمكانية الاتصال باستخدام أداة ldapsearch:

  1. أنشِئ إعداد LDAP، ونزِّل الشهادة، باتِّباع التعليمات الواردة في إضافة برامج LDAP.

    ملاحظة: لتسهيل بيئة الاختبار، يُرجى التأكُّد من توفُّر مستخدم واحد على الأقل في الوحدة التنظيمية التي تسمح لها بالوصول إلى برنامج LDAP.

  2. نفِّذ طلب بحث 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، اتّبِع الخطوات التالية:

  1. في "وحدة تحكّم المشرف"، أنشئ بيانات اعتماد الوصول لإنشاء اسم المستخدم وكلمة المرور المطلوبَين من خلال ldapsearch.
  2. استخدِم الأمر التالي:

    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 started

    ldap_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 (نجاح) بدون توفُّر مستخدمين في الناتج

    يؤدي تحديد خيار -x لأداة ldapsearch (استخدام مصادقة SASL) مع شهادات العميل إلى نجاح المصادقة، ولكن لن يتم سرد المستخدمين في النطاق.

    اقتراح: أزِل الخيار -x وحاوِل مرة أخرى.

ADSI Edit (نظام التشغيل Windows)

  1. اتَّبِع الخطوات من 1 إلى 11 في ldp.exe (نظام التشغيل Windows) لتثبيت شهادات العميل.
  2. انتقِل إلى الإجراء > الربط بـ…
  3. أدخِل إعدادات الربط التالية:

    الاسم: اكتب اسمًا لعملية الربط، مثل Google LDAP.
    نقطة الربط: "اختَر "اسمًا مميَّزًا" أو "سياق تسمية" أو اكتبه"
    أدخِل اسم النطاق بتنسيق الاسم المميَّز (مثل، dc=example,dc=com للنطاق example.com).

    الكمبيوتر: "اختَر نطاقًا أو خادمًا أو اكتبه"
    ldap.google.com

    استخدام التشفير المستند إلى طبقة المقابس الآمنة: تم وضع علامة في المربّع
  4. انقر على خيارات متقدمة... وأدخِل التفاصيل التالية:

    تحديد بيانات الاعتماد: تم وضع علامة في المربّع
    اسم المستخدم: اسم مستخدم بيانات اعتماد الوصول من "وحدة تحكّم المشرف"
    كلمة المرور: كلمة مرور بيانات اعتماد الوصول من "وحدة تحكّم المشرف"
    رقم المنفذ: 636
    البروتوكول: LDAP
    مصادقة الربط البسيط: تم وضع علامة في المربّع
  5. انقر على حسنًا، ثم انقر على حسنًا مرة أخرى.
  6. في حال كان الربط ناجحًا، يتم عرض محتوى الدليل في الاسم المميَّز الأساسي في الجزء الأيسر.

ldp.exe (نظام التشغيل Windows)

  1. ثبِّت OpenSSL.
  2. حوِّل ملفات المفتاح والشهادة إلى ملف واحد بتنسيق PKCS12. في موجِّه الأوامر، أدخِل التالي:

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    أدخِل كلمة مرور لتشفير ملف الناتج.
  3. انتقِل إلى "لوحة التحكّم".
  4. في مربّع البحث، ابحَث عن "الشهادة"، ثم انقر على إدارة شهادات المستخدم.
  5. انتقِل إلى الإجراءات > جميع المهام > استيراد…
  6. اختَر مستخدم حالي، وانقر على التالي.
  7. انقر على تصفَّح…
  8. في قائمة نوع الملف المنسدلة في أسفل يسار مربّع الحوار، اختَر تبادل المعلومات الشخصية (&ast;.pfx;&ast;.p12).
  9. اختَر الملف ldap-client.p12 من الخطوة 2، وانقر على فتح، ثم انقر على التالي.
  10. أدخِل كلمة المرور من الخطوة 2 وانقر على التالي.
  11. اختَر مخزن الشهادات الشخصية، وانقر على التالي، ثم انقر على إنهاء.
  12. شغِّل Ldp.exe.
  13. انتقِل إلى Connection (الربط) > Connect… (ربط…)
  14. أدخِل تفاصيل الربط التالية:

    الخادم: ldap.google.com
    المنفذ: 636
    بدون ربط: غير محدد
    طبقة المقابس الآمنة: محدد
  15. انقر على موافق.
  16. انتقِل إلى عرض > شجرة.
  17. أدخِل الاسم المميَّز الأساسي. يمثّل ذلك اسم نطاقك بتنسيق الاسم المميز. (على سبيل المثال، dc=example,dc=com للنطاق example.com).
  18. انقر على موافق.
  19. في حال كان الربط ناجحًا، يتم عرض محتوى الدليل في الاسم المميَّز الأساسي في الجزء الأيسر.

إجراء اختبار ربط أساسي، إذا لزم الأمر

في حال تعذُّر الحصول على نتيجة ناجحة في قسم التحقُّق من إمكانية الاتصال وتنفيذ طلب بحث LDAP، يُرجى اتِّباع التعليمات في هذا القسم لاختبار إمكانية الاتصال. في حال لم تنجح أداة ldapsearch في عرض المستخدم المُتوقَّع ولم تقدِّم مؤشرًا واضحًا على نجاح جلسة طبقة النقل الآمنة (TLS) الأساسية، يمكنك استخدام برنامج OpenSSL للتحقُّق من أنّ طبقات الشبكة التي يعتمد عليها OpenLDAP تعمل على النحو المُتوقَّع.

لإجراء اختبار إمكانية اتصال أساسي:

  1. ثبِّت أداة البرنامج openssl لنظام التشغيل.

    تستخدم معظم توزيعات GNU/Linux اسم الحزمة "openssl". يمكنك الاطّلاع على تفاصيل عن أنظمة التشغيل الأخرى.

  2. أنشئ اتصالاً بخدمة "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) شهادة مُوقَّعة ذاتيًا لن تجتاز عمليات التحقُّق من 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.