تست اتصال امن LDAP

نسخه‌های پشتیبانی‌شده برای این ویژگی: Frontline Standard و Frontline Plus؛ Business Plus؛ Enterprise Standard و Enterprise Plus؛ Education Fundamentals، Education Standard و Education Plus؛ Enterprise Essentials Plus. نسخه خود را مقایسه کنید

قبل از اینکه بخواهید کلاینت LDAP خود را به سرویس Secure LDAP متصل کنید، می‌توانید به صورت اختیاری یک تست اتصال سریع با استفاده از ابزارهای ساده‌ای مانند ldapsearch ، ADSI یا ldp.exe انجام دهید. این ابزارها همچنین می‌توانند برای عیب‌یابی در صورت مواجهه با خطا در هنگام اتصال کلاینت LDAP به سرویس مورد استفاده قرار گیرند.

آزمایش‌های شرح داده شده در بخش‌های زیر به شما این امکان را می‌دهد که بفهمید آیا مشکلی در پیکربندی از سمت شما وجود دارد، پیام‌های خطای رایج و توصیه‌هایی برای رفع این مشکلات ارائه می‌دهد.

این مقاله شامل بخش‌های زیر است:

توجه: اگر در طول این فرآیند نیاز به تماس با پشتیبانی Google Workspace یا پشتیبانی Cloud Identity Premium داشتید، حتماً خروجی دستورات را ذخیره کنید. قبل از به اشتراک گذاشتن آنها با تیم پشتیبانی، مطمئن شوید که هرگونه اطلاعات شخصی قابل شناسایی را از خروجی حذف کرده‌اید.

اتصال را تأیید کنید و یک پرس‌وجوی LDAP اجرا کنید

پس از راه‌اندازی سرویس Secure LDAP در کنسول گوگل ادمین، می‌توانید از یکی از این سه ابزار ساده برای تأیید اتصال با Secure LDAP استفاده کنید: ldapsearch ، ADSI یا ldp.exe . برای جزئیات و دستورالعمل‌ها، به بخش‌های زیر مراجعه کنید.

جستجوی ldap

از ابزار 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 کامپایل می‌شوند.

    لازم است SNI (نشانگر نام سرور) توسط کلاینت LDAP (در این مورد OpenLDAP ) پشتیبانی شود. اگر 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 وضعیت ۰ (موفقیت) را برمی‌گرداند، اما هیچ کاربری نمایش داده نمی‌شود.

    تعیین گزینه -x ‎ در ldapsearch (استفاده از احراز هویت SASL) همراه با گواهی‌های کلاینت، احراز هویت را با موفقیت انجام می‌دهد اما کاربران موجود در دامنه را فهرست نمی‌کند.

    توصیه: گزینه -x را حذف کنید و دوباره امتحان کنید.

ویرایش ADSI (ویندوز)

  1. برای نصب گواهی‌های کلاینت، مراحل ۱ تا ۱۱ را در ldp.exe (ویندوز) دنبال کنید.
  2. به اقدام > اتصال به… بروید
  3. تنظیمات اتصال زیر را وارد کنید:

    نام: یک نام برای اتصال خود تایپ کنید، مانند Google LDAP .
    نقطه اتصال: «یک نام متمایز یا زمینه نامگذاری را انتخاب یا تایپ کنید»
    نام دامنه خود را با فرمت DN وارد کنید (برای مثال، dc=example، dc=com برای example.com ).

    رایانه: «یک دامنه یا سرور را انتخاب یا تایپ کنید»
    ldap.google.com

    استفاده از رمزگذاری مبتنی بر SSL: علامت زده شده
  4. روی Advanced... کلیک کنید و جزئیات زیر را وارد کنید:

    اعتبارنامه‌ها را مشخص کنید: بررسی شد
    نام کاربری: نام کاربری دسترسی از طریق کنسول مدیریت
    رمز عبور: رمز عبور دسترسی از کنسول مدیریت
    شماره پورت: ۶۳۶
    پروتکل: LDAP
    احراز هویت اتصال ساده: بررسی شده است
  5. روی تأیید کلیک کنید، و سپس دوباره روی تأیید کلیک کنید.
  6. اگر اتصال موفقیت‌آمیز باشد، محتویات دایرکتوری در DN پایه در پنل سمت راست نمایش داده می‌شود.

ldp.exe (ویندوز)

  1. OpenSSL را نصب کنید.
  2. فایل‌های گواهی و کلید را به یک فایل با فرمت PKCS12 تبدیل کنید. در خط فرمان، دستور زیر را وارد کنید:

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

    برای رمزگذاری فایل خروجی، یک رمز عبور وارد کنید.
  3. به کنترل پنل بروید.
  4. در کادر جستجو، عبارت «certificate» را جستجو کنید و روی مدیریت گواهینامه‌های کاربر کلیک کنید.
  5. به اقدام > همه وظایف > وارد کردن بروید…
  6. کاربر فعلی را انتخاب کنید و روی بعدی کلیک کنید.
  7. روی مرور کلیک کنید…
  8. در منوی کشویی نوع فایل در گوشه پایین سمت راست کادر محاوره‌ای، گزینه تبادل اطلاعات شخصی (*.pfx;*.p12) را انتخاب کنید.
  9. فایل ldap-client.p12 را از مرحله ۲ انتخاب کنید، روی Open کلیک کنید و سپس روی Next کلیک کنید.
  10. رمز عبور مرحله ۲ را وارد کنید و روی Next کلیک کنید.
  11. فروشگاه گواهی شخصی را انتخاب کنید، روی Next کلیک کنید و سپس روی Finish کلیک کنید.
  12. فایل Ldp.exe را اجرا کنید.
  13. به اتصال > اتصال بروید...
  14. جزئیات اتصال زیر را وارد کنید:

    سرور: ldap.google.com
    بندر: ۶۳۶
    بدون اتصال: علامت‌گذاری نشده
    SSL: بررسی شد
  15. روی تأیید کلیک کنید.
  16. به نمایش > درخت بروید.
  17. DN پایه را وارد کنید. این نام دامنه شما در قالب DN است. (برای مثال، dc=example، dc=com برای example.com ).
  18. روی تأیید کلیک کنید.
  19. اگر اتصال موفقیت‌آمیز باشد، محتویات دایرکتوری در DN پایه در پنل سمت راست نمایش داده می‌شود.

در صورت نیاز، تست اتصال اولیه را اجرا کنید

اگر نمی‌توانید در تأیید اتصال و اجرای یک پرس‌وجوی LDAP به نتیجه‌ی موفقیت‌آمیزی برسید، دستورالعمل‌های این بخش را برای آزمایش اتصال دنبال کنید. اگر ldapsearch در بازگرداندن کاربر مورد انتظار موفق نبود و نشانه‌ی روشنی از موفقیت‌آمیز بودن نشست TLS زیربنایی ارائه نداد، از کلاینت OpenSSL برای تأیید عملکرد لایه‌های شبکه‌ای که OpenLDAP به آنها متکی است، استفاده کنید.

برای انجام آزمایش اتصال اولیه:

  1. ابزار کلاینت openssl را برای سیستم عامل خود نصب کنید.

    بیشتر توزیع‌های گنو/لینوکس از نام بسته "openssl" استفاده می‌کنند. جزئیات مربوط به سایر سیستم عامل‌ها را ببینید.

  2. با استفاده از کلاینت openssl، یک اتصال دستی به سرویس Secure 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 امن به یک کلاینت TLS نیاز دارد که از SNI (نشانگر نام سرور) پشتیبانی کرده و یک جلسه 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 بر حسب میکروثانیه است - اتصال 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 .