あるテスト用にOpenSSLやEasyCertやChallenge PKI Test SuiteなどLDAPリポジトリを必要としないで使えるCAを使っていたんですが、後になってデモ環境用にLDAPが必要となってしまいました。

Windows上で動作するコンパクトで構築・設定がGUI使えて簡単かつフリーなLDAPサーバー探してみました。使えそうなソフトの一覧は英語版WikipediaのLDAPのエントリで良くまとまっていました。

今回の選定条件のまとめはこんなの、、、
・できればフリー
・Windows上でネイティブで動作
・インストールが簡単
・使用ディスクサイズが極力小さい
・設定がGUIでできる
・ActiveDirectory環境に同居するので使用ポートが変えられる

今回の要件ではボツになったソフトウェア



cygwin上のOpenLDAP
今まではcygwin上のOpenLDAPを使っていたんですが、cygwinから入れちゃうとデフォルトでは余計なcygwinのソフトウェアまで入ってしまうし、設定もそれなりに面倒なので今回はボツ
Sun Java Directory Server
正統派で使い慣れているんですが、デカイので今回はやめにします
Apache Directory Server
これも要Javaでデカクなるのでやめにしました


Alpha Centauri SIDVault LDAP Server


これはWebで設定でき簡単でコンパクトそうなんでちょっと入れてみました。確かにインストールは簡単でWeb設定画面も一通り充実していましたが、設定画面がかなり安っちいです。良く見たら試用期間が1ヶ月程度でライセンスもちゃちい割にそれなりなので速攻でアンインストールしました。トホホ。

Windowsバイナリ版OpenLDAP


Lucas Bergmansさんが作ってくれていたWindowsバイナリ版でNTサービスとしても動作するOpenLDAP 2.2.29のバイナリがあったのでこれを使わせてもらうことにしました。
http://download.bergmans.us/openldap/openldap-2.2.29/openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe
Berkley DBも込み込みなのでセットアップは簡単です。更新日が2006年1月とかなり古いですが、贅沢は言えないっす。脆弱性情報があってもデモ環境なんで我慢します。Lucasさんは、もはやWindowsのユーザじゃないのでWindowsのバイナリなんて作る意味が無いとのことで更新が無いんだそうです。

セットアップウィザードは設定するところはこれだけです。私はNTサービス仕立てを選択してみました。

o01



最後にセットアップ終了と同時にサービス起動するか聞かれますが、slapd.confの設定がまだなんで起動はしないでおきます。

slapd.confなど設定ファイルはデフォルトでは "C:\Program Files\OpenLDAP" にあります。"slapd.conf"はとりあえずDN関連だけ2つ変更しておきました。
suffix "o=example,c=JP"
# 管理者用IDのDN
rootdn "cn=Manager,o=example,c=JP"


LDAPのデフォルトポートは389でslapdは通常、"-h"コマンドラインオプションで指定することにより設定できますが、slapdがNTサービスになっている場合にはレジストリでこれを設定します。(知らずにちょっとハマった)

o03



REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OpenLDAP-slapd\Parameters]
"Urls"="ldap://192.168.25.135:3389/"


参考リンクなんかを見ながらLDIFを読み込ませます。

LDAP Admin


http://ldapadmin.sourceforge.net/
OpenLDAPにはディレクトリ管理のためのGUIは無いので何か別のものをと探していたんですがブラウザとして愛用のSofterraのやつはエントリ変更ができるタイプの管理用のやつは有償で結構するんですよね。いちいちLDIFファイル作るのも面倒ですし、、、、で見つかったのがコレです。こりゃなかなか良い!!!

・インストーラー不要
・小さい (1.4MB)
・使い方も簡単
・フリー

言うこと無しですな。インストーラ不要っていうのは個人的にはポイント高くてお客さんのとことか出先で何とかしなきゃならずインストールもできず時間もかけられない緊急の場合とか、障害の場合とか、軟禁(笑)されちゃった時とかこの手のツールセットを持っていると結構助かります。コマンドラインツールも使いますけどね。

起動時はこんな感じ、、、

la01



左のConnectボタンを押せば接続先一覧が出ます。"New Connect"で新しい接続先を登録します。

la02



登録画面はこんな感じ、、、

la03



うまく接続できて、エントリが既にあればこんな感じ、、、、

la04



OUとかの下にユーザを作りたい場合には、OUを右クリックメニューで開きます。

la05



"User..."なんかで作っちゃうとPKI用にはダメなので、汎用的にエントリを作れる "Entry..."を選択します。

la06



左側のところで追加したいObjectClassを幾つも設定できるので、PKI用のリポジトリのユーザ用エントリとしてorganizationnalRoleとpkiUserとか、personとpkiUserとか入れておきます。

la07



右側の太字はObjectClassで入力必須となる属性なのでテキトーに入れておきます。で、ユーザの証明書の登録なんですが、通常 userCertificate にそのまま入れれば良さそうなところですが、それじゃダメで、userCertificate;binaryでサックリ入らないんです。

la08



そこでuserCertificateを右クリックし"Delete row"で一旦これを削除します。でuserPasswordなど最後の属性の下で"userCertificate;binary"とタイプします。隣のValueで右クリックし"Load from file..."を選択

la09



バイナリ形式(ASN.1 DER encoded binary)の証明書を選びます。で、Rdnのところで登録したいRdn(このケースではフツー"CN="ですな)を選択し保存ボタンをクリック。


la10



こんな調子でPKIのエンドエンティティやCAなんかを登録できます。気に入らなかったら右クリで簡単に削除できます。結局定番の2つを使うことになりましたが、どちらもサクサク動いてコンパクトなのでオススメです。Apache Directory Studioなんかも入れていますが普段Eclipseを使っていないので起動に時間かかり滅多に使いません(^^;

LDAP Adminで一点、惜しいのは接続エラー時のメッセージが乏しいことです。何でうまく繋がらないのかわかりにくいので、そんな時はSofterraで確認した方がいいかもしれまんせん。

参考リンク


Mick's Page:OpenLDAP - NTサービスのレジストリ設定有,COOL!
第19回 OpenLDAPの導入
UNIXな生活:OpenLDAPの使用方法とスキーマ
Manpage of slapd
Manpage of ldap.conf(5)