Lenny 上の OpenLDAP を StartTLS で動作させようとしています。テスト用のクライアントとして使用している Fedora 13 マシンがあります。これまでのところ、ldapsearch を使用して接続しようとすると、Fedora クライアントは /etc/ldap.conf の 'host' ディレクティブを無視します。ldapsearch の使用時に -H ldaps://server.name on を指定しても、クライアントは 127.0.0.1:389 に接続しようとします。クライアント マシンの /etc/ldap.conf はモード 444 です。
しかし、SSH セッションからローカルに接続しようとしても、次のようなエラーが表示されます。
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
誰か私をクルーバットで殴ってください。
更新: 「host」などの設定には ~/.ldaprc を使用する必要があります。また、ldap サーバーに対して nmap を使用したところ、オープン状態で 636 と 389 が表示されました。
接続しようとすると画面に次のように表示されます。ldapsearch -ZZ –x '(objectclass=*)'+ -d -1
ldap_create ldap_extended_operation_s LDAP拡張オペレーション ldap_send_initial_request ldap_new_connection 1 1 0 ldap_int_open_connection ldap_connect_to_host: TCP 192.168.10.41:636 ldap_new_socket: 3 ldap_prepare_socket: 3 ldap_connect_to_host: 192.168.10.41:636 を試行中 ldap_pvt_connect: fd: 3 tm: -1 非同期: 0 ldap_open_defconn: 成功 ldap_send_server_request ber_scanf fmt ({it) ber: ber_dump: buf=0x9bdbdb8 ptr=0x9bdbdb8 終了=0x9bdbdd7 長さ=31 0000: 30 1d 02 01 01 77 18 80 16 31 2e 33 2e 36 2e 31 0....w...1.3.6.1 0010: 2e 34 2e 31 2e 31 34 36 36 2e 32 30 30 33 37 .4.1.1466.20037 ber_scanf 形式 ({) ber: ber_dump: buf=0x9bdbdb8 ptr=0x9bdbdbd 終了=0x9bdbdd7 長さ=26 0000: 77 18 80 16 31 2e 33 2e 36 2e 31 2e 34 2e 31 2e w...1.3.6.1.4.1. 0010: 31 34 36 36 2e 32 30 30 33 37 1466.20037 ber_flush2: 31 バイトを sd 3 に 0000: 30 1d 02 01 01 77 18 80 16 31 2e 33 2e 36 2e 31 0....w...1.3.6.1 0010: 2e 34 2e 31 2e 31 34 36 36 2e 32 30 30 33 37 .4.1.1466.20037 ldap_write: 希望=31、書き込み=31 0000: 30 1d 02 01 01 77 18 80 16 31 2e 33 2e 36 2e 31 0....w...1.3.6.1 0010: 2e 34 2e 31 2e 31 34 36 36 2e 32 30 30 33 37 .4.1.1466.20037 ldap_result ld 0x9bd3050 msgid 1 wait4msg ld 0x9bd3050 msgid 1 (無限タイムアウト) wait4msg 継続 ld 0x9bd3050 msgid 1 すべて 1 ** ld 0x9bd3050 接続: * ホスト: 192.168.10.41 ポート: 636 (デフォルト) 参照: 2 ステータス: 接続済み 最終使用日時: 2010 年 6 月 6 日 (日) 12:54:05 ** ld 0x9bd3050 未処理のリクエスト: * msgid 1、origid 1、ステータス InProgress 未処理の紹介 0、親数 0 ld 0x9bd3050 要求数 1 (放棄 0) ** ld 0x9bd3050 応答キュー: 空の ld 0x9bd3050 応答数 0 ldap_chkResponseList ld 0x9bd3050 msgid 1 すべて 1 ldap_chkResponseList は ld 0x9bd3050 NULL を返します ldap_int_select read1msg: ld 0x9bd3050 msgid 1 すべて 1 ber_get_next ldap_read: 欲しい=8、得た=0 ber_get_next が失敗しました。 ldap_err2文字列 ldap_start_tls: LDAP サーバーに接続できません (-1)
答え1
デフォルトでは、クライアントはサーバーの証明書をチェックします。/etc/openldap/ldap.conf に「TLS_REQCERT never」を追加するだけです。
答え2
最近、Lenny で SLAPD を使って SSL を動作させることができました。何をしたかは正確には覚えていませんが、GNUTLS と OPENSSL の暗号の違いと関係があったことは覚えています。Lenny の SLAPD パッケージは GNUTLS に対してコンパイルされていました。これ。
答え3
キー ファイルを読み取れないようです。パスワードのないキーが必要です。openldap を ssl-cert グループに追加します。キー ssl-cert のグループを作成し、権限を 440 にします。openssl s_client コマンドを使用して、tls の問題をデバッグできます。
答え4
中間証明書によって署名された SSL 証明書がある場合 (最近では珍しくありません)、Lenny の slapd で TLS に問題が発生します。sybreon が述べたように、Lenny slapd は GNUTLS にリンクしますが、これは必要なオプションをすべてサポートしているわけではありません。
解決策は、slapd の Lenny バックポートを使用することです。ただし、2.4.17-2.1~bpo50+1 バックポートは libdb4.6 に対してコンパイルされ、約 1 週間実行した後に影響を受けるバグがあることがわかりました。
したがって、現時点では、TLS が必要な場合、Lenny を使用して slapd を実行することはお勧めしません。代わりに squeeze にアップグレードしてください。