Debian Lenny で StartTLS を使用した OpenLDAP が機能しない

Debian Lenny で StartTLS を使用した OpenLDAP が機能しない

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 にアップグレードしてください。

関連情報