認証関係はやり始めると時間がかかる上、途中で辞められないので大変である。
やっとSSLとTLSとStartTLSの違いがわかった(気がする)
SSLとTLSは実質一緒で、SSLがバージョンアップしてTLSになって、かつSSLはもう古いので使うな、ということらしい。でも通称SSLが多いのでSSL/TLSと表記することが多い、だそうな。
で、StartTLSは、最初から暗号通信するか途中から暗号通信するかの違いらしい。
httpsは最初から暗号通信を行う。http/StartTLSは最初httpで平文接続して、プロトコルの中でStartTLS -> ネゴシエーション -> 暗号化 という手順を行う。
同じポートで待ち受けできるので良いらしい。
そこでLDAPをTLS対応させてみたら色々はまりました。
普通に間違えてつながらなくなってうひょーは割愛(これが大変だったのは確かだが…
ldap.conf(のLDAPエントリ)に
dn: olcDatabase={1}hdb,cn=config
olcSecurity: tls=1
を追加すると、ldap://を受け付けるがStartTLSしないとダメ、と設定できる。
この際なのでldapsの待ち受け消してldap/TLSのみにしてやろうと思ってやってみた。
結局のところ、クライアントにどうやってStartTLSを指示するか、が問題となった。
あと、StartTLSをyesにして、ldaps://でつなぎに行くと2重になるのでエラーになる。なのでuri指定をldapi:/// ldap://…とldaps指定をやめた。
ちなみにldapi:///指定でもStartTLSしないと弾かれる。UNIX socketなら暗号化は特にいらない気もするがまあ仕方ないのだろう。
# それを言うとldap通信してるのは全部同一マシン内の仮想マシンなので根本的に暗号化の必要性は無いとも言えるが(汗
/etc/ldap/ldap.confにSSL start_tls でldap.confを読むやつはStartTLS対応になる。sudo-ldapなど。
ただしTLS_REQCERTをneverとか、TLS_CACERTを適切に設定とかしないとはじかれる。
nslcdもnslcd.confに同じ書き方で良さげ。
postfixはldap-*.cfにstart_tls = yes
isc-dhcp-server-ldapはdhcpd.confにldap-ssl start_tls;
wanderlust: .wlに(setq elmo-imap4-default-stream-type ‘starttls)
openldap SyncRepl はstarttls=yesとtls_reqcert=allow|neverを指定。
と、ここまで来て困ってしまったのが、kerberos ldapだった。どうもMIT kerberosからLDAPを見に行くときにStartTLSの設定がないっぽい。
このためだけにldapsを動かすのも嫌なのだが、諦めてldapsを指定してみる。
しかしオレオレ認証のためか検証エラーっぽくつながらない。
やっぱりslapdのSecurity: tls=1 はダメなのだろうか・・・
誰もkerberos ldap使ってないのだろうか。ググったけど1件だけ「まだ対応していないのでldapsにするかTLS諦めてね」というのがあっただけで、他は「対応しているかどうかは書かずに」「ldapにすれば動く」「ldapi:///でおけ」というものばかりだった。
世の中kerberosと言えばActive Directoryのようで、sambaとかAD使わずにkerberos+LDAP使っている人はかなり少数派のようである。
ldap://…/!StartTLSみたいなURIで指定する仕様もあるようだが、もちろんクライアントが対応していないと何ともならず。
コメントを残す