Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 19 Next »

Make sure you have working SSO install before applying these configurations

Enable SSL for LDAP

This example is done with self-signed certificate. It is always better to use publicly trusted certificate here.

Become root:

sudo su -

Stop any IDS applications that is running in all instances:

systemctl stop wildfly.service
systemctl stop ubilogin-server.service
systemctl stop ubilogin-directory.service

Create new self-signed certificate chain:

cd /usr/local/ubisecure/ubilogin-sso/openssl/bin

# Fix dependencies for packaged OpenSSL. Do not update libraries links but rebuild the cache.
ldconfig -X /usr/local/ubisecure/ubilogin-sso/openssl/lib64

# Create certificate authority
./openssl req -x509 \
            -sha512 \
            -days 3650 \
            -nodes \
            -newkey rsa:4096 \
            -subj "/CN=localhost/C=FI/L=Espoo" \
            -keyout cakey.pem -out cacert.pem \
            -config /usr/local/ubisecure/ubilogin-sso/openssl/openssl.cnf

# Create server private key
./openssl genrsa -out serverkey.pem 4096

# Generate certificate signging request
cat << EOF > servercsr.cnf
[ req ]
default_bits = 4096
prompt = no
default_md = sha512
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C = FI
ST = Uusimaa
L = Espoo
O = Ubisecure Oy
OU = Engineering
CN = localhost

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = localhost
DNS.2 = $(hostname -s)
DNS.3 = $(hostname -f)

EOF

# Generate certificate signing request with previously created private key
./openssl req \
        -new \
        -key serverkey.pem \
        -out servercsr.pem \
        -config servercsr.cnf

# Generate external certificate configuration
cat << EOF > cert.conf
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
DNS.2 = $(hostname -s)
DNS.3 = $(hostname -f)

EOF

# Generate SSL certificate With self signed CA
./openssl x509 -req \
    -in servercsr.pem \
    -CA cacert.pem \
    -CAkey cakey.pem \
    -CAcreateserial \
    -out servercert.pem \
    -days 3650 \
    -sha512 \
    -extfile \
    cert.conf

# View generated cert
openssl x509 -noout -in servercert.pem -text

Check that you do not have the certificate imported to cacerts:

keytool -list \
        -storepass changeit \
        -cacerts \
          | grep -i openldap

Import the newly generated certificate to SSO Tomcat:

keytool -importcert \
        -trustcacerts \
        -alias openldap-trusted \
        -cacerts \
        -noprompt \
        -storepass changeit \
        -file servercert.pem

Check cacerts after import:

keytool -list \
        -storepass changeit \
        -cacerts \
          | grep -i openldap

Result after the import:

openldap-trusted, Aug 29, 2023, trustedCertEntry,

Change ownership for generated files:

# Copy generated certificate and serverkey
mv cacert.pem servercert.pem serverkey.pem /usr/local/ubisecure/ubilogin-sso/openldap/etc/openldap/
cd /usr/local/ubisecure/ubilogin-sso/openldap/etc/openldap/

# Fix rights
chmod 600 cacert.pem
chmod 600 serverkey.pem
chmod 600 servercert.pem

# Fix ownership
chown -R ubilogin. .

Change unix.config so that it will use ldaps:// instead of ldap:// as a connection:

# Make a backup of existing unix.config
cp /usr/local/ubisecure/ubilogin-sso/ubilogin/unix.config \
   /usr/local/ubisecure/ubilogin-sso/ubilogin/unix.config.$(date +%Y%m%d%H%M%S)

# Apply change
sed -i 's/ldap.url=.*/ldap.url=ldaps:\/\/localhost:636/g' \
  /usr/local/ubisecure/ubilogin-sso/ubilogin/unix.config

Result should be something like this:

cd /usr/local/ubisecure/ubilogin-sso/ubilogin/
diff -iw unix.config.20230829191717 unix.config
23c23
< ldap.url=ldap\://localhost\:389
---
> ldap.url=ldaps://localhost:636

Once done, run SSO setup.sh again:

cd /usr/local/ubisecure/ubilogin-sso/ubilogin
./setup.sh

Once done, edit slapd.conf before updating LDAP configuration:

If any errors occurs, one can always run setup.sh again to reverse below changes to original defaults.

sed -i 's/#TLSCertificateFile/TLSCertificateFile/' \
  /usr/local/ubisecure/ubilogin-sso/ubilogin/ldap/openldap/slapd.conf
sed -i 's/#TLSCertificateKeyFile/TLSCertificateKeyFile/' \
  /usr/local/ubisecure/ubilogin-sso/ubilogin/ldap/openldap/slapd.conf
sed -i 's/#TLSCACertificateFile/TLSCACertificateFile/' \
  /usr/local/ubisecure/ubilogin-sso/ubilogin/ldap/openldap/slapd.conf

Reconfigure LDAP:

cd /usr/local/ubisecure/ubilogin-sso/ubilogin/ldap/openldap
# Check that JAVA_HOME environment variable is set
echo $JAVA_HOME
# Set the right value if needed (depends on your JDK installation)
export JAVA_HOME=/usr/lib/jvm/temurin-11-jdk
./install.sh

Update SSO configurations:

cd /usr/local/ubisecure/ubilogin-sso/ubilogin/config/tomcat
./remove.sh
./install.sh

Restart services:

systemctl start ubilogin-directory.service
systemctl start ubilogin-server.service

  • No labels