web-dev-qa-db-ja.com

LDAP経由でLDAPに接続できないシステムもあれば、ワイルドカード証明書ですか?

Novel eDirectory 8.8サーバーにldaps接続を作成しようとすると、クライアントサーバーのldap.confファイルにTLS_REQCERT neverを配置する必要がある場合があります。明らかに、これは悪い考えです。

私が実行するコマンドは、実際に機能する資格情報を持つこのようなものです...

ldapsearch -x -H ldaps://ldapserver -b 'ou=active,ou=people,dc=example,dc=org' -D 'cn=admin,dc=example,dc=org' -W "cn=username"

Ubuntu 13.10では正常に動作します。

SLESでは正常に動作します。

CentOS 6.5では、次を返します。

ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

今、インポートした証明書はDigiCertから購入したワイルドカード証明書です。私の同僚は、一部のシステムにワイルドカードの問題があることを示すいくつかのレポートを見つけました。

では、ワイルドカード証明書のせいですか?もしそうなら、どうすれば修正できますか?

ワイルドカード証明書ではない場合、それは何ですか?

Andrew Schulmanの提案に従って、-d1をldapsearchコマンドに追加しました。これが私が終わったものです:

ldap_url_parse_ext(ldaps://ldap.example.org)
ldap_create
ldap_url_parse_ext(ldaps://ldap.example.org:636/??base)
Enter LDAP Password: 
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_Host: TCP ldap.example.org:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_Host: Trying 10.225.0.24:636
ldap_pvt_connect: fd: 3 tm: -1 async: 0
TLS: certdb config: configDir='/etc/openldap' tokenDescription='ldap(0)' certPrefix='cacerts' keyPrefix='cacerts' flags=readOnly
TLS: cannot open certdb '/etc/openldap', error -8018:Unknown PKCS #11 error.
TLS: could not get info about the CA certificate directory /etc/openldap/cacerts - error -5950:File not found.
TLS: certificate [CN=DigiCert High Assurance EV Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US] is not valid - error -8172:Peer's certificate issuer has been marked as not trusted by the user..
TLS: error: connect - force handshake failure: errno 2 - moznss error -8172
TLS: can't connect: TLS error -8172:Peer's certificate issuer has been marked as not trusted by the user..
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

それが言うことから、CentOSはDigiCertを信頼していませんか?または、CentOSには信頼できる発行者のリストがありませんか?

15
David R.

ldapsearchは/ etc/openldap/cacertsで信頼できるCA証明書のストアを探しており、明らかにセットアップされていないため、信頼チェーンを構築できないため証明書を拒否しています。 ldapsearchがOpenSSLを使用している場合は、たとえばによって作成された「hashdir」形式のコレクションが必要になります。 Red Hatの「authconfig」プログラム、または信頼できる証明書のフラットリストを含む単一のファイル。ここでの「moznss」への参照は、このldapsearchがMozilla NSSに対して構築されていることを示唆しています。この場合、「certutil」を使用して証明書データベースを作成する必要があります(または、システムNSS証明書ストアがある場合はそれを指定します)。 。

それが機能しているシステムでは、おそらくそれらのOpenLDAPパッケージが代わりにOpenSSLに対して構築されているため(または、そこに利用可能なNSSスタイルのストアが存在しているため)、ldapsearchには証明書ストアが必要です。

ldapsearchは、TLS証明書を検証できない場合、「LDAPサーバーに接続できません」と表示します。追加 -d1をldapsearchコマンドに追加し、「TLS:」で始まる出力行を確認して、TLS接続が失敗しているかどうかとその理由に関する詳細情報を取得します。

13
Andrew Schulman

解決策はインストールによって異なります。

  • 無効な証明書を使用している場合、それを強制的に受け入れることができます/etc/openldap/ldap.conf

    TLS_REQCERT allow
    

    または

    TLS_REQCERT never
    
  • 有効な証明書を使用している場合おそらく、LDAPのインストールでは、信頼されたCA証明書のストアがどこにあるかわかりません(おそらくOpenSSLのインストールに依存します)。次に、その場所を設定して、設定の強制チェックを行うことができます/etc/openldap/ldap.conf

    TLS_CACERT /etc/openldap/cacert
    TLS_REQCERT demand
    

    /etc/openldap/cacertはこれか、任意のパスに配置できます。 CAの証明書チェーンが含まれている必要があります。信頼できる証明書のフラットリストを含む単一のファイルにすることができます。

パスは、LDAPプロバイダーによって異なります。かもしれない /etc/ldapまたは/etc/openldap とか、ぐらい。

8
Juan Garcia