[Ubuntu 12.04 LTS のOpenLDAPをSSLに対応する際の注意] (http://qiita.com/items/e9430de56209a98bc722)
すみません。根本的に間違ってました。OpenSSLとgnutlsの差自体はまぁったく関係ありません。
何が原因だったん?
(Ubuntu 12.04 LTSの) slapd は AppArmor によって課された制約により、一部のディレクトリに置かれた証明書・秘密鍵しか読めません。
slapd[18359]: main: TLS init def ctx failed: -1
syslogのこのエラーメッセージの前後に、こういうエラーメッセージが実は出力されています。こちらがエラーの本体でした。
ns2 kernel: [343639.327432] type=1400 audit(1369380545.782:39): apparmor="DENIED" operation="open" parent=18335 profile="/usr/sbin/slapd" name="/home/dmiyakawa/test2.crt" pid=18359 comm="slapd" requested_mask="r" denied_mask="r" fsuid=113 ouid=1002
というわけでslapdに関する設定を見て見ると (/etc/apparmor.d/usr.sbin.slapd )
#include <abstractions/ssl_certs>
/etc/ssl/private/ r,
/etc/ssl/private/* r,
…… :-(
検証のため、自分のホームディレクトリを追加します
/home/dmiyakawa/* r,
apparmor_parser -r /etc/apparmor.d/usr.sbin.slapd をして、slapd をリブートすると、問題が解消しました。opensslの一連のコマンドで作ったsha1の自己署名証明書と秘密鍵で、です
本家のドキュメント の中で、本当に重要なのは certutil を使うことでもなんでもなく、実は正しいディレクトリに証明書と秘密鍵を置くことなのでありました。オリジナルの記事ではその部分に問題の根があるとまでは想定出来なかったので、違う探索木を延々たどっていたことになります。