Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]

Community Articles

Find and share helpful community-sourced technical articles.
Announcements
Share your experience with Cloudera on G2 and get a $25 Amazon Gift card.
Hi, I'm CLEO! Something exciting is coming to the Community. Stay Tuned!
avatar
Expert Contributor

Pre-requsite:

1.Make sure /etc/hosts has the correct ip address and the hostnames and the master hostnames can be pinged from each other .

3. OpenLDAP to be setup.

4. Make sure the logs are captured in a valid log file for slapd process as follows:

    vi /etc/rsyslog.conf

Append the follwowing line to log OpenLDAP messages and restart rsyslogd service:

# Point SLAPD logs to /var/log/slapd.log
local4.*        /var/log/slapd.log
service rsyslog restart

HA OpenLDAP Sync Setup:

The following ldif files needs to be created on the users home directory and should be executed on all the master nodes:

basednupdate.ldif

syncproc_module.ldif

syncproc.ldif

addladpservers.ldif

NOTE: Please change the cn , dc accordingly.

vi /tmp/basednupdate.ldif

# updated your base dn below:
dn: olcDatabase={1}monitor,cn=configchangetype: modifyreplace: olcAccessolcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"read by dn.base="cn=Manager,dc=srv,dc=world"  read by * none

Execute the following command:

ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/basednupdate.ldif

Note: If the above command fails, then edit the following file and update it and run

vi /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif

Change cn and dc:

olcAccess: {0}to * by
dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern al,cn=auth" read by dn.base="cn=grj,dc=ganeshrj,dc=com" read by * none

Run slaptest -u to check if the update is successful.

vi /tmp/syncproc_module.ldif

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la

Execute:

ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/syncproc_module.ldif

vi /tmp/syncproc.ldif

dn:olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100
olcSpCheckpoint: 10 1

Execute:

ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/syncproc.ldif

vi /tmp/addladpservers.ldif

# Execute this on all master nodes. Make sure the server ids are incremented for each node:

dn: cn=configchangetype: modifyreplace: olcServerIDolcServerID: 1 ldap://ldap1.ganeshrj.comolcServerID: 2 ldap://ldap2.ganeshrj.com

Execute:

ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/addladpservers.ldif

vi /tmp/master01.ldif

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 
provider=ldap://ldap1.ganeshrj.com:389/ 
bindmethod=simple scope=sub
binddn="cn=grj,dc=ganeshrj,dc=com" credentials=password searchbase="dc=ganeshrj,dc=com"
schemachecking=off type=refreshAndPersist retry="5 10 30 +"
interval=00:00:00:10 
olcSyncRepl: rid=002
provider=ldap://ldap2.ganeshrj.com:389/ bindmethod=simple scope=sub
binddn="cn=grj,dc=ganeshrj,dc=com" credentials=password
searchbase="dc=ganeshrj,dc=com" schemachecking=off
type=refreshAndPersist retry="5 10 30 +" interval=00:00:00:10
add: olcMirrorMode
olcMirrorMode: TRUE  
add: olcDbIndex
olcDbIndex: entryCSN eq
olcDbIndex: entryUUID eq

Execute:

ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/master01.ldif

Note: Make sure master01.ldif is also executed on other master nodes.

If the above command fails, then update it manually and run slaptest –u .

vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb olcOverlay={0}syncprov.ldif
Paste the following: 
-------------------
olcSyncRepl: rid=001 
provider=ldap://ldap1.ganeshrj.com:389/ 
bindmethod=simple 
scope=sub 
binddn="cn=grj,dc=ganeshrj,dc=com" 
credentials=password 
searchbase="dc=ganeshrj,dc=com" 
schemachecking=off 
type=refreshAndPersist 
retry="5 10 30 +" 
interval=00:00:00:10
olcSyncRepl: rid=002 
provider=ldap://ldap2.ganeshrj.com:389/ 
bindmethod=simple 
scope=sub 
binddn="cn=grj,dc=ganeshrj,dc=com" 
credentials=password 
searchbase="dc=ganeshrj,dc=com" 
schemachecking=off 
type=refreshAndPersist 
retry="5 10 30 +" 
interval=00:00:00:10
olcDbIndex: entryUUID eq
olcDbIndex: entryCSN  eq
olcMirrorMode: TRUE

Restart slapd service

service
slapd restart

Check the sladp.log file to see if both the servers are communicating.

Testing:

1. Do an LDAP search to see the users are getting pulled.

 ldapsearch -x -b "dc=ganeshrj,dc=com"

2. Add users on one of the server and see if its replicated

 vi /tmp/Adduser.ldif
dn: uid=ganesh,ou=people,dc=testorg1,dc=ganeshrj,dc=com
objectclass:top
objectclass:person
objectclass:organizationalPerson
objectclass:inetOrgPerson
cn: Ganesh
sn: Ganesh
uid: ganesh
userPassword:ganesh-password

Execute:

 ldapadd -x -D "cn=grj,dc=ganeshrj,dc=com" -W -f adduser.ldif

Then try ldapsearch on both the boxes to validate:

 ldapsearch -x -b "dc=ganeshrj,dc=com"

OpenLdap High Availability Setup with SSL/TLS

There are two steps:

1. Creation of Self Signing certificate for OpenLDAP.

2. Update OpenLDAP with Certs created and Update the Config and hdp databases with the certificate information.

Creation self-Signing Certificate

1. Create a CA First

2. Create a Client Openldap Cert

3. Sign the Client Openldap cert with the CA Created in Step 1

4. Use the cert (from step 3) with a ca cert (from Step 1) in open ldap

Update to openssl.conf: This is “Nice to have” change since the default values are setup and don’t have to key in every time when a new key is generated.

Update /etc/pki/tls/openssl.conf and change as follows (This is an example and can be updated to organizational needs)

[ req_distinguished_name ]
countryName                     = Country Name (2 letter code)
#countryName_default            = XX
countryName_default             = US
countryName_min                 = 2
countryName_max                 = 2
stateOrProvinceName             = State or Province Name (full name)
#stateOrProvinceName_default    = Default Province
stateOrProvinceName_default     = Virginia
localityName                    = Locality Name (eg, city)
#localityName_default           = Default City
localityName_default            = Ashburn
0.organizationName              = Organization Name (eg, company)
#0.organizationName_default     = Default Company Ltd
0.organizationName_default      = Unknown Company Ltd
# we can do this but it is not needed normally :-)
#1.organizationName             = Second Organization Name (eg, company)
#1.organizationName_default     = World Wide Web Pty Ltd
organizationalUnitName          = Organizational Unit Name (eg, section)
#organizationalUnitName_default =
Update date to 10 year validity 
default_days    = 3650                  # how long to certify for

Create a cert file on the need you need (Optional)

#certificate    = $dir/cacert.pem       # The CA certificate
certificate     = $dir/ganeshrj.crt     # The CA certificate

Change path to the private Key if needed (Optional)

#private_key      =$dir/private/cakey.pem 
private_key       =$dir/private/ca.key

Update unique serial number and index file

Note: This step should be done only once as part of the setup. This file will keep tab of number of certs generated.

cd /etc/pki/CA
touch serial   
vi serial  and add 01 for the 1st serial number
touch index.txt

Creating a Certifying Authority (CA)

Now generate the key mentioned the openssl.conf (which is here: private_key = $dir/private/cakey.key# The private key). This key will be used to generate a certificate.

 openssl genrsa -des3 2048 > private/cakey.key

Using the key above create a CA certificate

 openssl req -new -x509 -key private/cakey.key -out ganeshrj.crt -days 3560

3,526 Views
0 Kudos
Version history
Last update:
‎09-16-2022 01:38 AM
Updated by:
Contributors