セキュア LDAP の接続テスト

この機能は Cloud Identity Premium でご利用いただけます。各エディションの比較

LDAP クライアントをセキュア LDAP サービスに接続する前に、必要に応じて ldapsearchADSIldp.exe といったツールを使用して簡単な接続テストを行うことができます。これらのツールは、LDAP クライアントをサービスに接続しようとしてエラーが発生した場合のトラブルシューティングにも使用できます。

以下で説明するテストを行うことで、設定の問題の有無や一般的なエラー メッセージ、問題の解決方法を確認できます。

この記事は、以下の内容で構成されています。

注: この操作中に Google Workspace サポートまたは Cloud Identity Premium サポートに連絡する必要がある場合は、必ずコマンドの出力を保存してください。また、出力したデータは必ず個人情報を削除してからサポートチームにご提示ください。

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

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

ldapsearch

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

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

  1. LDAP の設定を行い、証明書をダウンロードします。手順については、1. LDAP クライアントを追加するをご覧ください。

    注: シンプルな環境でテストできるよう、LDAP クライアントのアクセスを承認する組織部門にはユーザーがいるようにしてください。
     
  2. LDAP クエリを実行します。

    次のコマンドは、ldapsearch コマンドライン ツールを使用して特定のユーザーにクエリを実行する方法の例です(詳しくは、OpenLDAP lapsearch をご覧ください)。

    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 を stunnel で使用する

導入に stunnel を使用する必要がある場合は、次のコマンドを使用します。

ldapsearch -H ldap://{stunnel_host}:{stunnel_port} -b
dc={domain},dc={domain} '(mail={user_email})'

stunnel 固有のプレースホルダを次のように置き換えます。
{stunnel_host} : ネットワーク内で stunnel を実行しているマシンの IP アドレスまたはホスト名
{stunnel_port}: stunnel が動作しているポート(stunnel の設定を確認してください)

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(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. [接続] > [接続] をクリックします。
  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)が返す自己署名証明書は 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)。

関連記事

この情報は役に立ちましたか?
改善できる点がありましたらお聞かせください。
検索
検索をクリア
検索を終了
Google アプリ
メインメニュー
ヘルプセンターを検索
false