セキュア 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 Premium サポートにお問い合わせいただく場合は、コマンドの出力を必ず保存してください。サポートチームと共有する前に、出力から個人を特定できる情報をすべて削除してください。

接続を確認して LDAP クエリを実行する

Google 管理コンソールでセキュア LDAP サービスを設定したら、ldapsearch、ADSI、ldp.exe のいずれかのシンプルなツールを使用して、セキュア LDAP との接続を確認できます。詳細と手順については、下記をご覧ください。

ldapsearch

コマンドラインから ldapsearch ユーティリティを使用して、基本的な LDAP クエリを実行します。LDAP クエリが正常に実行された場合は、LDAP クライアントと基盤となっている TLS セッションおよび TCP 接続が意図したとおりに動作しています。

ldapsearch で接続をテストするには:

  1. LDAP クライアントを追加するの手順に沿って、LDAP 構成を作成し、証明書をダウンロードします。

    注: テスト環境を簡素化するには、LDAP クライアント アクセスを承認する組織部門に少なくとも 1 人のユーザーがいることを確認してください。

  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 値が Workspace ユーザーのメールアドレスまたは LDAP 識別名の場合、ldapsearch はそのユーザーの認証情報を使用して、権限に基づいて検索します。

    ldapsearch -H ldaps://ldap.google.com:636 -b dc={domain},dc={domain} -D {workspace_username@domain} -W '(mail={user_email})'

stunnel で ldapsearch を使用する

デプロイで 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} : ネットワークで stunnel を実行しているマシンの IP アドレスまたはホスト名。
    • {stunnel_port}: stunnel が動作しているポート(stunnel の設定を確認してください)
    • {user_email} ドメイン内のユーザーのメインのメールアドレス

ldapsearch コマンドの成功シナリオ

ldapsearch コマンドが正常に実行されると、LDIF 形式で、メールアドレス(LDAP クライアントの作成時に指定)を持つユーザーが一覧表示されます。

次に例を示します。

# 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(Server Name Indication)がサポートされている必要があります。SNI が使用できない場合、次のようなエラーが表示されることがあります。

    SASL/EXTERNAL authentication started

    ldap_sasl_interactive_bind_s: Unknown authentication method (-6)
    additional info: SASL(-4): no mechanism available:

    推奨事項:
    • macOS をご使用の場合、SASL はデフォルトで有効になっています。オプション「-x」を使用すると無効にできます。
    • ldapsearch に -d5 オプションを追加し、出力で次の行を確認します。

      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. ldp.exe(Windows)の手順 1 ~ 11 に沿って、クライアント証明書をインストールします。
  2. [操作] > [接続先] に移動します。
  3. 次の接続設定を入力します。

    名前: 接続の名前(「Google LDAP」など)を入力します。
    接続ポイント: 「識別名または命名コンテキストを選択または入力します」
    ドメイン名を DN 形式で入力します(例:example.com の場合は dc=example,dc=com)。

    コンピュータ: 「ドメインまたはサーバーを選択または入力します」
    ldap.google.com

    SSL ベースの暗号化を使用する: チェックを入れる
  4. [詳細...] をクリックし、次の詳細情報を入力します。

    認証情報を指定: チェック
    ユーザー名: 管理コンソールのアクセス認証情報のユーザー名
    パスワード: 管理コンソールのアクセス認証情報のパスワード
    ポート番号: 636
    プロトコル: LDAP
    シンプル バインド認証: チェック
  5. [OK] をクリックし、再度 [OK] をクリックします。
  6. 接続に成功すると、ベース DN のディレクトリの内容が右側のパネルに表示されます。

ldp.exe(Windows)

  1. OpenSSL をインストールします。
  2. 証明書ファイルとキーファイルを 1 つの PKCS12 形式のファイルに変換します。コマンド プロンプトで、次のコマンドを入力します。

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

    出力ファイルを暗号化するためのパスワードを入力します。
  3. [コントロール パネル] に移動します。
  4. 検索ボックスで「証明書」を検索し、[ユーザー証明書を管理] をクリックします。
  5. [操作] > [すべてのタスク] > [インポート] に移動します。
  6. [現在のユーザー] を選択し、[次へ] をクリックします。
  7. [参照] をクリックします。
  8. ダイアログ ボックスの右下にあるファイル形式のプルダウン メニューから、[Personal Information Exchange (*.pfx;*.p12)] を選択します。
  9. ステップ 2 で作成した ldap-client.p12 ファイルを選択し、[開く] をクリックして、[次へ] をクリックします。
  10. 手順 2 で入力したパスワードを入力し、[次へ] をクリックします。
  11. [個人] 証明書ストアを選択し、[次へ]、[完了] の順にクリックします。
  12. Ldp.exe を実行します。
  13. [Connection] > [Connect...] に移動します。
  14. 次の接続の詳細を入力します。

    サーバー: ldap.google.com
    ポート: 636
    接続なし: オフ
    SSL: オン
  15. [OK] をクリックします。
  16. [表示]> [ツリー] を選択します。
  17. ベース DN を入力します。これは DN 形式のドメイン名です(例: example.com の場合は dc=example,dc=com)。
  18. [OK] をクリックします。
  19. 接続に成功すると、ベース DN のディレクトリの内容が右側のパネルに表示されます。

必要に応じて、基本的な接続テストを実行する

接続を確認して LDAP クエリを実行するで成功結果を取得できない場合は、このセクションの手順に沿って接続テストを行います。ldapsearch が期待されるユーザーを返さず、基盤となる TLS セッションが成功したことを明確に示していない場合は、OpenSSL クライアントを使用して、OpenLDAP が依存するネットワーク レイヤが想定どおりに動作していることを確認します。

基本的な接続テストを行うには:

  1. ご使用のオペレーティング システムに応じた openssl クライアント ユーティリティをインストールします。

    ほとんどの GNU/Linux ディストリビューションでは、パッケージ名「openssl」が使用されています。その他のオペレーティング システムの詳細をご覧ください。

  2. openssl クライアントを使用して、セキュア LDAP サービスに手動で接続します。

    openssl s_client -connect ldap.google.com:636
    

    openssl s_client 出力の最後に次の行があることで、SSL ネゴシエーションが成功したことを確認します。

    Verify return code: 0 (ok)
    

発生する可能性があるエラー

OpenSSL クライアント/ライブラリが SNI(Server Name Indication)をサポートしていない

接続テスト中に、次の出力が返されることがあります。

Verify return code: 18 (self signed certificate)

セキュア LDAP サービスには、SNI(Server Name Indication)を使用して TLS セッションをサポート、開始する TLS クライアントが必要です。TLS クライアントが SNI をサポートしていない場合、TLS サーバー(ldap.google.com)は、SNI が必要であることを示すために、CA 検証チェックに合格しない自己署名証明書を返します。

この動作は、OpenSSL クライアントの出力の先頭付近に次の行があるかどうかを確認することで確認できます。

depth=0 OU = "No SNI provided; please fix your client.", CN = invalid2.invalid

このエラーの原因としては、SNI をサポートしていない OpenSSL バージョンや、SNI を明示的に無効にして OpenSSL ライブラリを使用するアプリケーションなどが考えられます。

接続が拒否されました

次の出力が返された場合({timestamp} はマイクロ秒単位の UNIX タイムスタンプ)、TLS ネゴシエーションが開始される前に TCP 接続が拒否されています。

{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)。