概要
過去に openldap を tls 化する方法を紹介しました
今回はそれを docker compose で一発で構築しかつユーザも自動で登録する方法を紹介します
環境
- Ubuntu 24.04
- docker 28.3.3
- openldap 2.6.10
compose.yaml
LDAP_TLS_CA_FILE には LDAP_TLS_CERT_FILE と同じものを指定すれば大丈夫でした
fullchain.pem は分割しないでもいいようです
services:
openldap:
image: bitnami/openldap:latest
container_name: openldap
ports:
- "1636:1636"
environment:
- ALLOW_EMPTY_PASSWORD=yes
- LDAP_ENABLE_TLS=yes
- LDAP_TLS_CERT_FILE=/opt/bitnami/openldap/certs/fullchain.pem
- LDAP_TLS_KEY_FILE=/opt/bitnami/openldap/certs/privkey.pem
- LDAP_TLS_CA_FILE=/opt/bitnami/openldap/certs/fullchain.pem
volumes:
- /etc/letsencrypt/live/your-domain.com/:/opt/bitnami/openldap/certs
- ./ldif/base.ldif:/ldifs/base.ldif
- ./ldif/hawk.ldif:/ldifs/hawk.ldif
restart: unless-stopped
ldif/base.ldif
今回 bitnami の openldap イメージの機能で /ldifs にファイルを置くと自動でユーザや組織を追加する仕組みを使っています
この仕組みを使うと環境変数に設定してあるデフォルトの組織情報が無視されるので自分で作成してあげます
dn: dc=example,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Organization
dc: example
ちなみにログには以下のようなログが出力されます
WARN ==> Ignoring LDAP_USERS, LDAP_PASSWORDS, LDAP_USER_OU, LDAP_GROUP_OU and LDAP_GROUP environment variables...
ldif/hawk.ldif
ユーザ追加用の ldif ファイルです
ユーザごとに作成してもいいですしまとめて書いてしまっても OK です
dn: uid=hawk,dc=example,dc=org
uid: hawk
cn: hawk
sn: snowlog
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
loginShell: /bin/bash
homeDirectory: /home/hawk
uidNumber: 1000
gidNumber: 1000
userPassword: {SSHA}MYHODLo+3s3ZuMCN7qDw4hWY8JZ7O6YA
mail: hawk@example.org
gecos: hawksnowlog
起動
- docker compose up -d
動作確認
以下どれでも OK です
admin ユーザは作成されるので admin でも追加したユーザでも検索できることを確認しましょう
-
docker exec openldap ldapsearch -x -H ldap://localhost:1389 -b "dc=example,dc=org" -D "uid=hawk,dc=example,dc=org" -w xxx "(objectClass=*)"
-
docker exec openldap ldapsearch -x -H ldap://localhost:1389 -b "dc=example,dc=org" "(uid=hawk)"
-
docker exec openldap ldapsearch -x -H ldap://localhost:1389 -b "dc=example,dc=org" -D "cn=admin,dc=example,dc=org" -w xxx "(objectClass=*)"
tls で確認したい場合は以下のようにします
-
docker exec openldap ldapsearch -x -H ldaps://your-domain.com:1636 -b "dc=example,dc=org" -D "uid=hawk,dc=example,dc=org" -w xxx "(objectClass=*)"
最後に
docker compose を使って openldap を tls で構築する方法を紹介しました
今回データ領域は使っていないのでコンテナをダウンさせるたびにユーザ情報は消えますが毎回 ldif を実行するため同じ状態で起動はしてきます
コンテナ起動後に手動でユーザなどを追加した場合は ldif も作成しないと次回起動時に消えてしまうので注意しましょう
0 件のコメント:
コメントを投稿