The openldap-servers rpm creates the password file using the following rpm postinstall called script:
# generate sample TLS certificate for server (will not replace)
/usr/libexec/openldap/generate-server-cert.sh -o &>/dev/null || :
the script in turn creates the file unsafely and changes the permissions after creating it:
certutil -d "$CERTDB_DIR" -f "$PASSWORD_FILE" -z "$CERT_RANDOM" \
-S -x -n "$CERT_NAME" \
-s "CN=$HOSTNAME_FQDN" \
-t TC,, \password
-k $CERT_KEY_TYPE -g $CERT_KEY_SIZE \
-v $CERT_VALID_MONTHS \
-8 "$ALT_NAMES" \
rm -f $CERT_RANDOM
# tune permissions
if [ "$(id -u)" -eq 0 ]; then
chgrp ldap "$PASSWORD_FILE"
chmod g+r "$PASSWORD_FILE"
printf "WARNING: The server requires read permissions on the password file in order to\n" >&2
printf " load it's private key from the certificate database.\n" >&2
this can lead to the contents of the file being exposed between the time the file is created and the chmod command runs. I would suggest setting umask 077 first.
Additionally this secret value needs to be unique per instance or install but this value is created at install-time and not during the first run. All container and image instances created would share the same password as this password is set at rpm install time, and each instance should recieve a unique password.
This bug is being file because Product Security considers "first run problems" to be bugs with the source package and with the container or image only in the aggregate. This view is in collaboration with upstream Fedora. See: https://fedorahosted.org/fpc/ticket/506
The recommended resolution for services is to follow the "First-time Service Setup" pattern (see: https://fedoraproject.org/wiki/Packaging:Initial_Service_Setup ). Other packages may should use a runtime check and generation or similar procedure.
Name: Kurt Seifried (Red Hat)
Created openldap tracking bugs for this issue:
Affects: fedora-all [bug 1346121]
Just a note, the first run issue can also be handled through orchestration (e.g. OpenStack, CloudForms, OpenShift Enterprise and so on). But the certificate creation MUST be removed from the rpm install scripts.