OpenDJ

Modifié par Aurelie Bertrand le 2025/10/10 10:25

OpenDJ

Installation

  1. Commencer par récupérer la dernière version du fichier opendj-4.x.x_all.deb sur le site https://github.com/OpenIdentityPlatform/OpenDJ/releases :
wget https://github.com/OpenIdentityPlatform/OpenDJ/releases/download/4.x.x/opendj-4.x.x_all.deb
  1. Lancer l’installation : 
sudo dpkg -i opendj_4.x.x_all.deb

Paramétrage initial​​​​

💡 Alternativement au paramétrage ci-dessous, vous pouvez utiliser votre propre certificat. Consultez la page Utiliser son propre certificat lors de la configuration d'OpenDJ pour plus de détails. 

Afin de simplifier le paramétrage d'OpenDJ, nous allons créer un fichier “setupOpenDJ.props” contenant les options disponibles pour répondre à l'utilitaire "setup" d’OpenDJ (cela permet d'éviter l’interface de paramétrage).
Le contenu de ce fichier est détaillé ci-dessous :

❗N'oubliez pas de remplacer les paramètres par les vôtres. Par exemple, le mot de passe par celui désiré (ici "adminOpenDJ1").

#
# Sample properties file to set up OpenDJ directory server
# See OpenDJ Setup command man for more options
#

# Root user Distinguished Name (DN) identifies a user who can perform all operations allowed for the server
rootUserDN                      =cn=Directory Manager

# Password for root user LDAP
rootUserPassword                =adminOpenDJ1

# OpenDJ uses fully qualified host name in self-signed certificates and for identification when you use replication
hostname                        =localhost.localdomain

# Port used for connection with LDAP
ldapPort                        =389

# This is the service port used to configure the server and to run tasks
adminConnectorPort              =4444

# Identifies the implementation of the repository that holds your data
backendType                     =je

# Directory Name for your LDAP
baseDN                          =dc=digdash,dc=com
addBaseEntry                    =true

# Secure LDAP Port used for SSL connection
ldapsPort                       =636

# Use StartTLS to negotiate a secure connection between a client and server
enableStartTLS                  =false

# Self-signed certificates for externally facing ports facilitate testing, but are not intended for production use
generateSelfSignedCertificate   =true

# Start at the end of setup
start                           =true

Après avoir enregistré le fichier, exécuter la ligne de commande suivante :

sudo /opt/opendj/setup --cli --propertiesFilePath setupOpenDJ.props --acceptLicense --no-prompt

Paramétrage supplémentaire

  1. Se placer dans le répertoire d’installation d’OpenDJ :
cd /opt/opendj/bin/
  1. Les fichiers LDIF peuvent être téléchargés en cliquant sur le lien suivant LDIF_OpenDJ.

  2. Créer les organisations grâce au fichier “neworganisation.ldif” ci-dessous :
sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" neworganisation.ldif
dn: ou=default,dc=digdash,dc=com
objectClass: organizationalUnit
ou: default

ℹ Si vous rencontrez la situation suivante, une validation des certificats est nécessaire :

1738829847093-287.png

  1. Définir le vérificateur de mot de passe "Custom Character-set Password Validator": 
sudo /opt/opendj/bin/dsconfig create-password-validator --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1"  --validator-name "Custom Character-set Password Validator" --set character-set:1:abcdefghijklmnopqrstuvwxyz --set character-set:1:ABCDEFGHIJKLMNOPQRSTUVWXYZ --set character-set:1:0123456789 --set "character-set:1:\!\"#$%&'()*+,-./:;<=>?@[]^_\`{|}~" --set enabled:true --type character-set --no-prompt --trustAll --set allow-unclassified-characters:true
  1.  Créer le second vérificateur de mot de passe "Custom length Password Validator":
sudo /opt/opendj/bin/dsconfig create-password-validator --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1"  --validator-name "Custom length Password Validator" --set min-password-length:12 --set enabled:true --type length-based --no-prompt
  1. Appliquer les deux vérificateurs de mot de passe :
sudo /opt/opendj/bin/dsconfig set-password-policy-prop --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" --policy-name "Default Password Policy" --set password-validator:"Custom Character-set Password Validator" --set password-validator:"Custom length Password Validator" --no-prompt
  1. Définir la politique de mot de passe pour les utilisateurs grâce au fichier “ppolicy.ldif” ci-dessous :
sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" ppolicy.ldif
dn: cn=ppolicy,ou=default,dc=digdash,dc=com
objectClass: top
objectClass: subentry
objectClass: pwdPolicy
cn: ppolicy
pwdAttribute: userPassword
pwdAllowUserChange: TRUE
pwdCheckQuality: 1
pwdExpireWarning: 600
pwdFailureCountInterval: 30
pwdGraceAuthNLimit: 5
pwdInHistory: 5
pwdLockout: TRUE
pwdLockoutDuration: 900
pwdMaxAge: 0
pwdMaxFailure: 5
pwdMinAge: 0
pwdMustChange: FALSE
pwdSafeModify: FALSE
subtreeSpecification: {base "ou=users", specificationFilter "!(uid=admin)" }
  1. Définir une seconde politique de mot de passe pour l’admin grâce au fichier “ppolicy-admin.ldif” ci-dessous :
sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" ppolicy-admin.ldif
dn: cn=ppolicy-admin,ou=default,dc=digdash,dc=com
objectClass: top
objectClass: subentry
objectClass: pwdPolicy
cn: ppolicy-admin
pwdAttribute: userPassword
pwdAllowUserChange: TRUE
pwdCheckQuality: 1
pwdFailureCountInterval: 30
pwdGraceAuthNLimit: 5
pwdInHistory: 5
pwdLockout: FALSE
pwdMaxAge: 0
pwdMinAge: 0
pwdMustChange: FALSE
pwdSafeModify: FALSE
subtreeSpecification: {base "ou=users", specificationFilter "(uid=admin)" }
  1. Modifier la politique de mot de passe pour autoriser les mots de passe pré-encodés (utiles pour les restaurations dans Digdash) :
sudo /opt/opendj/bin/dsconfig set-password-policy-prop --policy-name "Default Password Policy" --set allow-pre-encoded-passwords:true --hostname localhost --trustAll --bindDN "cn=directory manager" --bindPassword "adminOpenDJ1" --no-prompt
  1. Créer un utilisateur admin pour digdash via le fichier “create_user_admin.ldif” ci-dessous :
sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" create_user_admin.ldif
dn: uid=admin,ou=default,dc=digdash,dc=com
objectClass: shadowAccount
objectClass: inetOrgPerson
cn: Admin Domain Default
sn: Default
uid: admin_default
  1. Lui affecter les droits nécessaires en utilisant les fichiers “add_admin_right.ldif” et “add_admin_right2.ldif” ci-dessous :
sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" add_admin_right.ldif
dn: ou=default,dc=digdash,dc=com
changetype: modify
add: aci
aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "userpassword || shadowlastchange")(version 3.0; acl "allow write on userpassword and shadowlastchange for admin"; allow(write) (userdn = "ldap:///uid=admin,ou=default,dc=digdash,dc=com");)
aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "userpassword || shadowlastchange")(version 3.0; acl "allow read,write on userpassword and shadowlastchange for auth users"; allow(read) (userdn = "ldap:///all");)
aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "userpassword || shadowlastchange")(version 3.0; acl "allow read on userpassword and shadowlastchange for anonymous"; allow(selfwrite) (userdn = "ldap:///anyone");)
aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "*")(version 3.0; acl "allow write on * for admin"; allow(all) (userdn = "ldap:///uid=admin,ou=default,dc=digdash,dc=com");)
aci: (target ="ldap:///ou=default,dc=digdash,dc=com")(targetattr = "*")(version 3.0; acl "allow read on * for anonymous"; allow(read) (userdn = "ldap:///all");)
sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" add_admin_right2.ldif
dn: uid=admin,ou=default,dc=digdash,dc=com
changetype: modify
add: ds-privilege-name
ds-privilege-name: config-read
ds-privilege-name: password-reset
ds-privilege-name: unindexed-search
  1. Générer un mot de passe pour l’administrateur et le conserver en mémoire pour plus tard :
sudo /opt/opendj/bin/ldappasswordmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" --authzID "uid=admin,ou=default,dc=digdash,dc=com"

💡 Si l'on souhaite définir son propre mot de passe pour l'utilisateur admin, il faut utiliser une variante de la commande précédente :

sudo /opt/opendj/bin/ldappasswordmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" --authzID "uid=admin,ou=default,dc=digdash,dc=com" --newPassword "mdpAdmin"

Activation du lancement automatique du service au démarrage

  1. Créer le fichier opendj.service :
sudo vi /etc/systemd/system/opendj.service
  1. Et y coller les lignes suivantes :
[Unit]

Description=OpenDJ Server Daemon

Wants=network-online.target

After=network-online.target

Conflicts=shutdown.target

 [Service]

Type=simple

Restart=no

TimeoutSec=5min

IgnoreSIGPIPE=no

KillMode=process

GuessMainPID=no

RemainAfterExit=yes

ExecStart=/opt/opendj/bin/start-ds --quiet

ExecStop=/opt/opendj/bin/stop-ds --quiet

 [Install]

WantedBy=multi-user.target
  1. Ensuite taper les commandes suivantes :
sudo /opt/opendj/bin/stop-ds

systemctl daemon-reload

systemctl enable --now opendj

systemctl status opendj

Fonction utile

L'opération ci-dessous ne fait pas partie de l'installation.
Il peut néanmoins être utile de la connaître pour une utilisation ultérieure.

Étendre la limite pour les recherches LDAP

Étendre la limite de recherche du LDAP à plus de 1000 utilisateurs avec le fichier “extend_search_limit.ldif” ci-dessous :

sudo /opt/opendj/bin/ldapmodify --port 389 --bindDN "cn=Directory Manager" --bindPassword "adminOpenDJ1" extend_search_limit.ldif
dn: uid=admin,ou=default,dc=digdash,dc=com
changetype: modify
add: ds-rlim-size-limit
ds-rlim-size-limit: 10000