24 February '2006 - 19:56 | 技術動向 Re: mod_auth_ldap のバカ
「mod_auth_ldap のバカ」の続き。 なんだけれど、意味もなく返信ということにしてみた。自分のエントリにリプライ。とりあえず先日インスコした mod_auth_ldap は さくっと unmerge して、apache2 を +ldap でインスコしなおし。すると、さくっと mod_auth_ldap.so も入った。最初からこうしていたら、mod_auth_ldap には腹違いの兄がいたということを知らずに一生を終えていた可能性が高い。自分の運の良さに感謝。
そして、おもむろにテスト。
foo# cat /etc/apache2/vhosts.d/99_test.conf
<VirtualHost *:80>
ServerName foo.example.com
<Location />
AuthName "Who on earth are you?"
AuthType Basic
require valid-user
AuthLDAPEnabled on
AuthLDAPURL ldaps://ldap.example.com:636/dc=example,dc=com?uid
</Location>
</VirtualHost>
とりあえずこんな感じで実験してみたら、
[Fri Feb 24 14:20:13 2006] [warn] [client 10.20.30.40] [9152] auth_ldap authenticate: user hoge authentication failed; URI / [LDAP: ssl connections not supported][Can't contact LDAP server]
って言われて接続できない。ssl connections not supported って、なんだよ。ldaps:// はダメなのかよと思ってログをよく見てみたら、ちょっと上に
[Fri Feb 24 14:18:55 2006] [notice] LDAP: Built with OpenLDAP LDAP SDK
[Fri Feb 24 14:18:55 2006] [notice] LDAP: SSL support unavailable
って書いてあった。なんで unavailable なのか。+ssl だけじゃダメなのか。
しぶしぶもう一度マニュアルをちゃんと読んでみたら LDAPTrustedCA を設定しないといけないらしいことが分かった。面倒くさいなあ。知らんよ、そんなこと。そんなことくらい勝手にやってくれればいいのに。
仕方ないので、LDAP サーバが使ってるやつを調べて、そのファイルをそのままクライアントのサーバにコピーする。
ldap# grep CA /etc/openldap/slapd.conf
TLSCACertificateFile /etc/ssl/ldap.pem
ldap# scp /etc/ssl/ldap.pem foo.example.com:/etc/ssl/ldap.pem
それから /etc/apache2/vhosts.d/99_test.conf に
LDAPTrustedCA /etc/ssl/ldap.pem
LDAPTrustedCAType BASE64_FILE
の二行を追加して、/etc/init.d/apache2 restart すると、今度はちゃんと
[Fri Feb 24 14:33:15 2006] [notice] LDAP: Built with OpenLDAP LDAP SDK
[Fri Feb 24 14:33:15 2006] [notice] LDAP: SSL support available
と SSL が使える状態で起動される。よしよし。
と思いきや、しかし、まだうまくいかない。
[Fri Feb 24 14:34:46 2006] [warn] [client 10.20.30.40] [11017] auth_ldap authenticate: user hoge authentication failed; URI / [LDAP: ldap_simple_bind_s() failed][Can't contact LDAP server], referer: http://foo.example.com/
今度は ssl connections not supported とは言われなくなってるから、ldaps:// 自体は通っている。あと一歩。
よく分からないので、エラーメッセージをそのままぐぐってみたら、ここを発見。知りたいことが書いてあった。つまり、
foo# grep REQCERT /etc/openldap/ldap.conf
TLS_REQCERT never
こうなればいい。
これで、やっと LDAPS 認証ができるようになって、当初の目的である svn ls https://foo.example.com/bar が期待通りに動くようになった。やれやれ。