- PR -

ldapのSSL接続時にエラーとなる

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/08/02
投稿数: 6
投稿日時: 2007-08-10 16:47

slapdを以下の状態で起動させた後、
ldapserchコマンドを-Hオプションを付けて(uriをldapsで)実行すると、
「ldap_bind: Can't contact LDAP server (-1)」エラーとなります。

実行したコマンド
# ldapsearch -x -H "ldaps://web1"
ldap起動プロセス
/usr/sbin/slapd -u ldap -h ldap:/// ldaps:/// -l LOCAL4 -f /etc/openldap/slapd.master.conf
conf内容〜抜粋〜
TLSCertificateFile /usr/share/ssl/certs/slapd.pem
TLSCertificateKeyFile /usr/share/ssl/certs/slapd.pem
database bdb
suffix "o=msc,c=jp"
rootdn "cn=Manager,o=msc,c=jp"
rootpw secret

ldapsではなく、ldapとして実行するとエラーは発生しません。
# ldapsearch -x -H "ldap://web1"

TLS接続用の証明書等は作成済です。
原因の特定ができない状態です。どなたかご教授下さい。
F/A
ぬし
会議室デビュー日: 2006/03/18
投稿数: 312
お住まい・勤務地: Tokyo
投稿日時: 2007-08-10 17:05
ldapsearchに-dオプションを指定すれば
もう少し細かい原因が表示されると思います。

additional info: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

というエラーなら、ldap.confを変更。
未記入
会議室デビュー日: 2007/08/02
投稿数: 6
投稿日時: 2007-08-10 17:24
早速の返信感謝致します。

-dオプション付きで実行したところ、

[root@web1 log]# ldapsearch -x -d -1 -H "ldaps://web1"
ldap_create
ldap_url_parse_ext(ldaps://web1)
ldap_bind_s
ldap_simple_bind_s
ldap_sasl_bind_s
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection
ldap_int_open_connection
ldap_connect_to_host: TCP web1:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 127.0.0.1:636
ldap_connect_timeout: fd: 3 tm: -1 async: 0
ldap_ndelay_on: 3
ldap_is_sock_ready: 3
ldap_is_socket_ready: error on socket 3: errno: 111 (Connection refused)
ldap_close_socket: 3
ldap_perror
ldap_bind: Can't contact LDAP server (-1)

と出力されました。
ポート636でsocket生成されていないかと思い、
netstatコマンドにて確認したところ、

[root@web1 log]# netstat -ltn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:20000 0.0.0.0:* LISTEN
tcp 0 0 192.168.4.20:20001 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8100 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:3310 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:914 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:2583 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN
tcp 0 0 192.168.4.20:8089 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 192.168.4.20:8443 0.0.0.0:* LISTEN
tcp 0 0 :::389 :::* LISTEN
tcp 0 0 :::80 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 :::443 :::* LISTEN

slapdサービス自体は、"-h ldap:/// ldaps:///"と、ldap,ldaps両方でアクセス可能
にて起動されているのですが、なぜでしょうか。
F/A
ぬし
会議室デビュー日: 2006/03/18
投稿数: 312
お住まい・勤務地: Tokyo
投稿日時: 2007-08-10 17:30
> slapdサービス自体は、"-h ldap:/// ldaps:///"と、ldap,ldaps両方でアクセス可能
> にて起動されているのですが、なぜでしょうか。

ldapsのListenポートは636ですが、
同様にslapd.confにログレベルを設定すれば、
何らかのエラーが表示されるんじゃないでしょうか?
未記入
会議室デビュー日: 2007/08/02
投稿数: 6
投稿日時: 2007-08-10 18:23
返信が遅れました。
申し訳ありません。自己解決いたしました。

ldapの起動を、shellスクリプトから実行していたのですが、その際の
オプション指定に誤りがあった様です。
【正】
/usr/sbin/slapd -u ldap -h "ldap:/// ldaps:///" -l LOCAL4 -f /etc/openldap/slapd.conf
【誤】
/usr/sbin/slapd -u ldap -h ldap:/// ldaps:/// -l LOCAL4 -f /etc/openldap/slapd.conf

-hの後の指定を""で囲っていませんでした。
/etc/rc.d/init.d/ldapのスクリプトを見て気がつきました。

F/A様、返信いただきまして有難う御座いました。
1

スキルアップ/キャリアアップ(JOB@IT)