Manual password update for OpenIAM services in RPM
When performing the RPM-based installation of OpenIAM you were proposed to use a default password for OpenIAM services, namely Elasticsearch, RabbitMQ and Redis. However, if you want to change default passwords, it can be done manually using the steps below.
Changing password for Elasticsearch
- Navigate to the certificate directory at
/usr/local/openiam/vault/certs/
using acd
command.
cd /usr/local/openiam/vault/certs/
- Retrieve the vault unseal keys as shown below.
[root@password certs]# cat unseal.keys{"keys":["fed349c10e55c4109001972b1f51186408c66192330769ea4ce1cc768467b03f77","2fcfebc1f7dcfd2a6d65cd64e9b251264b898ac2384dbde60bfcdf7554a2b3bb44","5869d88c1345b2c3a03eec5e7421715ad7ba920c46840aa251662483333c11e7fa","caba768d2989818901844944c4f9980501b6891c765f9c768663251f1cb4fc1cf7","8253cfa0423f1201175031011ffec6f36efbfa0d41ab38c92af05c8e4848c4c778"],"keys_base64":["/tNJwQ5VxBCQAZcrH1EYZAjGYZIzB2nqTOHMdoRnsD93","L8/rwffc/SptZc1k6bJRJkuJisI4Tb3mC/zfdVSis7tE","WGnYjBNFssOgPuxedCFxWte6kgxGhAqiUWYkgzM8Eef6","yrp2jSmJgYkBhElExPmYBQG2iRx2X5x2hmMlHxy0/Bz3","glPPoEI/EgEXUDEBH/7G8277+g1BqzjJKvBcjkhIxMd4"],"root_token":"hvs.uNGRfy1tPcTo8f6TwKAzC4hy"}[root@password certs]#
- Authenticate with vault using the
root_token
value from above output.
[root@password certs]# vault login hvs.uNGRfy1tPcTo8f6TwKAzC4hyWARNING! VAULT_ADDR and -address unset. Defaulting to https://127.0.0.1:8200.Error authenticating: error looking up token: Get "https://127.0.0.1:8200/v1/auth/token/lookup-self": tls: failed to verify certificate: x509: cannot validate certificate for 127.0.0.1 because it doesn't contain any IP SANs[root@password certs]#
If you see above error please export below variable and proceed further.
[root@password certs]# export VAULT_SKIP_VERIFY=true[root@password certs]# vault login hvs.uNGRfy1tPcTo8f6TwKAzC4hyWARNING! VAULT_ADDR and -address unset. Defaulting to https://127.0.0.1:8200.Success! You are now authenticated. The token information displayed belowis already stored in the token helper. You do NOT need to run "vault login"again. Future Vault requests will automatically use this token.Key Value--- -----token hvs.uNGRfy1tPcTo8f6TwKAzC4hytoken_accessor 0S6c1ASm0uCefSMlkXpujNYHtoken_duration ∞token_renewable falsetoken_policies ["root"]identity_policies []policies ["root"][root@password certs]#
- Retrieve the existing Elasticsearch password with the commands below.
[root@rpm certs]# vault kv list secret/openiam/[root@password certs]# vault kv get secret/openiam/ELASTICSEARCH_PASSWORDWARNING! VAULT_ADDR and -address unset. Defaulting to https://127.0.0.1:8200.==== Data ====Key Value--- -----value KVIPH0VRnAbXJfpsdplkzYvcdruWH2qW[root@password certs]# vault kv get secret/openiam/vault.secret.elasticsearch.passwordWARNING! VAULT_ADDR and -address unset. Defaulting to https://127.0.0.1:8200.==== Data ====Key Value--- -----value KVIPH0VRnAbXJfpsdplkzYvcdruWH2qW[root@password certs]#
- Update the Elasticsearch password in Vault as shown below.
[root@password certs]# vault kv put secret/openiam/ELASTICSEARCH_PASSWORD value="SWxdwHfClx7sRkWRgZ1cBNwtqupDw16C"WARNING! VAULT_ADDR and -address unset. Defaulting to https://127.0.0.1:8200.Success! Data written to: secret/openiam/ELASTICSEARCH_PASSWORD[root@password certs]# vault kv put secret/openiam/vault.secret.elasticsearch.password value="SWxdwHfClx7sRkWRgZ1cBNwtqupDw16C"WARNING! VAULT_ADDR and -address unset. Defaulting to https://127.0.0.1:8200.Success! Data written to: secret/openiam/vault.secret.elasticsearch.password
- Verify password update in Vault using the example below.
[root@password certs]# vault kv get secret/openiam/ELASTICSEARCH_PASSWORD WARNING! VAULT_ADDR and -address unset. Defaulting to https://127.0.0.1:8200.==== Data ====Key Value--- -----value SWxdwHfClx7sRkWRgZ1cBNwtqupDw16C[root@password certs]# vault kv get secret/openiam/vault.secret.elasticsearch.password WARNING! VAULT_ADDR and -address unset. Defaulting to https://127.0.0.1:8200.==== Data ====Key Value--- -----value SWxdwHfClx7sRkWRgZ1cBNwtqupDw16C
- Update Elasticsearch password using API.
curl -u "elastic:<old_password>" -XPOST -H "Content-Type: application/json" \"http://localhost:9200/_security/user/elastic/_password" \-d '{ "password": "<new_password>" }'
The successful output after the password change will look as follows.
[root@password certs]# curl -u "elastic:KVIPH0VRnAbXJfpsdplkzYvcdruWH2qW" \-XPOST -H "Content-Type: application/json" \"http://localhost:9200/_security/user/elastic/_password" \-d "{ \"password\": \"SWxdwHfClx7sRkWRgZ1cBNwtqupDw16C\" }"{}[root@password certs]#
- Restart Elasticsearch service with the commands bellow.
[root@password certs]#[root@password certs]# systemctl restart elasticsearch [root@password certs]# systemctl status elasticsearch ● elasticsearch.service - ElasticsearchLoaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; preset: disabled)Active: active (running) since Tue 2025-03-04 08:24:56 UTC; 7s agoDocs: https://www.elastic.coMain PID: 74675 (java)Tasks: 91 (limit: 406172)Memory: 4.4GCPU: 45.788sCGroup: /system.slice/elasticsearch.service├─74675 /usr/local/openiam/jdk//bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache>└─74830 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controllerMar 04 08:24:44 password systemd[1]: Starting Elasticsearch...Mar 04 08:24:46 password systemd-entrypoint[74675]: OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecate>Mar 04 08:24:56 password systemd[1]: Started Elasticsearch.[root@password certs]#
- Validate Elasticsearch connection as follows.
[root@password certs]# curl -u elastic:SWxdwHfClx7sRkWRgZ1cBNwtqupDw16C http://localhost:9200/_cluster/health{"cluster_name":"elasticsearch","status":"yellow","timed_out":false,"number_of_nodes":1,"number_of_data_nodes":1,"active_primary_shards":25,"active_shards":25,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":18,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":58.139534883720934}[root@password certs]#Step 10: Restart OpenIAM Servicesopeniam-cli statusopeniam-cli stopopeniam-cli start
Password update for RabbitMQ
- Retrieve the existing RabbitMQ password by running:
[root@rpm certs]# vault kv list secret/openiam/KeysACTIVITI_JDBC_PASSWORDACTIVITI_JDBC_USERNAMEELASTICSEARCH_PASSWORDELASTICSEARCH_USERNAMEIAM_JKS_COMMON_KEY_PASSWORDIAM_JKS_COOKIE_KEY_PASSWORDIAM_JKS_KEY_PASSWORDIAM_JKS_PASSWORDJDBC_PASSWORDJDBC_USERNAMEKEYSTORE_PASSWORDRABBITMQ_PASSWORDRABBITMQ_USERNAMEREDIS_PASSWORDSPRING_RABBITMQ_PASSWORDSPRING_RABBITMQ_USERNAMESPRING_REDIS_PASSWORDjks/vault.secret.activiti.jdbc.passwordvault.secret.activiti.jdbc.usernamevault.secret.elasticsearch.passwordvault.secret.elasticsearch.usernamevault.secret.iam.jks.common.key.passwordvault.secret.iam.jks.cookie.key.passwordvault.secret.iam.jks.key.passwordvault.secret.iam.jks.passwordvault.secret.jdbc.passwordvault.secret.jdbc.usernamevault.secret.keystore.passwordvault.secret.rabbitmq.passwordvault.secret.rabbitmq.usernamevault.secret.redis.passwordvault.secret.spring.rabbitmq.passwordvault.secret.spring.rabbitmq.usernamevault.secret.spring.redis.password[root@rpm certs]#[root@rpm certs]#[root@rpm certs]#[root@rpm certs]# vault kv list secret/openiam/ | grep -i rabbitRABBITMQ_PASSWORDRABBITMQ_USERNAMESPRING_RABBITMQ PASSWORDSPRING_RABBITMQ_USERNAMEvault.secret.rabbitmq.passwordvault.secret.rabbitmq.usernamevault.secret.spring.rabbitmq.passwordvault.secret.spring.rabbitmq.username[root@rpm certs]#[root@rpm certs]# vault kv get secret/openiam/RABBITMQ_PASSWORD==== Data ====Key Value--- -----value passwd00[root@rpm certs]# vault kv get secret/openiam/SPRING_RABBITMQ_PASSWORD==== Data ====Key Value--- -----value passwd00[root@rpm certs]# vault kv get secret/openiam/vault.secret.rabbitmq.password==== Data ====Key Value--- -----value passwd00[root@rpm certs]# vault kv get secret/openiam/vault.secret.spring.rabbitmq.password==== Data ====Key Value--- -----value passwd00
- Update the RabbitMQ password in Vault, as shown below.
vault kv put secret/openiam/RABBITMQ_PASSWORD value="<new_password>"vault kv put secret/openiam/SPRING_RABBITMQ_PASSWORD value="<new_password>"vault kv put secret/openiam/vault.secret.rabbitmq.password value="<new_password>"vault kv put secret/openiam/vault.secret.spring.rabbitmq.password value="<new_password>"
The example process looks as follows.
[root@rpm certs]# vault kv put secret/openiam/RABBITMQ_PASSWORD value="openiam01"Success! Data written to: secret/openiam/RABBITMQ_PASSWORD[root@rpm certs]# vault kv put secret/openiam/SPRING_RABBITMQ_PASSWORD value="openiam01"Success! Data written to: secret/openiam/SPRING_RABBITMQ_PASSWORD[root@rpm certs]# vault kv put secret/openiam/vault.secret.rabbitmq.password value="openiam01"Success! Data written to: secret/openiam/vault.secret.rabbitmq.password[root@rpm certs]# vault kv put secret/openiam/vault.secret.spring.rabbitmq.password value="openiam01"Success! Data written to: secret/openiam/vault.secret.spring.rabbitmq.password
- Verify password update in Vault using the commands below.
[root@rpm certs]# vault kv get secret/openiam/RABBITMQ_PASSWORD==== Data ====Key Value--- -----value openiam01[root@rpm certs]# vault kv get secret/openiam/SPRING_RABBITMQ_PASSWORD==== Data ====Key Value--- -----value openiam01[root@rpm certs]# vault kv get secret/openiam/vault.secret.rabbitmq.password==== Data ====Key Value--- -----value openiam01[root@rpm certs]# vault kv get secret/openiam/vault.secret.spring.rabbitmq.password==== Data ====Key Value--- -----value openiam01[root@rpm certs]# systemctl status rabbitmq-server● rabbitmq-server.service - RabbitMQ brokerLoaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)Active: active (running) since Sun 2025-03-30 04:15:27 UTC; 41min agoMain PID: 977 (beam.smp)Tasks: 36 (limit: 408643)Memory: 407.6MCGroup: /system.slice/rabbitmq-server.service├─ 977 /usr/lib64/erlang/erts-12.3.2/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MM>├─1098 erl_child_setup 32768├─1729 /usr/lib64/erlang/erts-12.3.2/bin/epmd -daemon├─1794 inet_gethost 4└─1795 inet_gethost 4Mar 30 04:15:25 rpm rabbitmq-server[977]: Doc guides: https://rabbitmq.com/documentation.htmlMar 30 04:15:25 rpm rabbitmq-server[977]: Support: https://rabbitmq.com/contact.htmlMar 30 04:15:25 rpm rabbitmq-server[977]: Tutorials: https://rabbitmq.com/getstarted.htmlMar 30 04:15:25 rpm rabbitmq-server[977]: Monitoring: https://rabbitmq.com/monitoring.htmlMar 30 04:15:25 rpm rabbitmq-server[977]: Logs: /var/log/rabbitmq/rabbit@rpm.logMar 30 04:15:25 rpm rabbitmq-server[977]: /var/log/rabbitmq/rabbit@rpm_upgrade.logMar 30 04:15:25 rpm rabbitmq-server[977]: <stdout>Mar 30 04:15:25 rpm rabbitmq-server[977]: Config file(s): (none)Mar 30 04:15:27 rpm systemd[1]: Started RabbitMQ broker.Mar 30 04:15:27 rpm rabbitmq-server[977]: Starting broker... completed with 4 plugins.[root@rpm certs]# systemctl restart rabbitmq-server[root@rpm certs]# systemctl status rabbitmq-server● rabbitmq-server.service - RabbitMQ brokerLoaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: disabled)Active: active (running) since Sun 2025-03-30 04:57:26 UTC; 1s agoProcess: 28801 ExecStop=/usr/sbin/rabbitmqctl shutdown (code=exited, status=0/SUCCESS)Main PID: 33128 (beam.smp)Tasks: 36 (limit: 408643)Memory: 161.2MCGroup: /system.slice/rabbitmq-server.service├─33128 /usr/lib64/erlang/erts-12.3.2/bin/beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -M>├─33145 erl_child_setup 32768├─33186 /usr/lib64/erlang/erts-12.3.2/bin/epmd -daemon├─33222 inet_gethost 4└─33223 inet_gethost 4Mar 30 04:57:25 rpm rabbitmq-server[33128]: Doc guides: https://rabbitmq.com/documentation.htmlMar 30 04:57:25 rpm rabbitmq-server[33128]: Support: https://rabbitmq.com/contact.htmlMar 30 04:57:25 rpm rabbitmq-server[33128]: Tutorials: https://rabbitmq.com/getstarted.htmlMar 30 04:57:25 rpm rabbitmq-server[33128]: Monitoring: https://rabbitmq.com/monitoring.htmlMar 30 04:57:25 rpm rabbitmq-server[33128]: Logs: /var/log/rabbitmq/rabbit@rpm.logMar 30 04:57:25 rpm rabbitmq-server[33128]: /var/log/rabbitmq/rabbit@rpm_upgrade.logMar 30 04:57:25 rpm rabbitmq-server[33128]: <stdout>Mar 30 04:57:25 rpm rabbitmq-server[33128]: Config file(s): (none)Mar 30 04:57:26 rpm rabbitmq-server[33128]: Starting broker... completed with 4 plugins.Mar 30 04:57:26 rpm systemd[1]: Started RabbitMQ broker.
- Finish the password change with the below steps.
openiam-cli stopsystemctl stop rabbitmq-servercd /var/lib/RabbitMQrm -rf mnesiasystemctl start rabbitmq-server
- You also need to recreate
vhost
and provide proper permission with help of below script.
#!/bin/bashset -e # Exit immediately if a command exits with a non-zero status#### RABBITMQ UPGRADE SCRIPT ####. /usr/local/openiam/env.confexport VAULT_CERTS="$HOME_DIR/vault/certs/"export JAVA_HOME="$HOME_DIR/jdk"export VAULT_HOME="$HOME_DIR/utils/vault/". ${VAULT_HOME}validate.vault.shexport RABBITMQ_PASSWORD=$(. ${VAULT_HOME}vault.fetch.property.sh vault.secret.rabbitmq.password)if [ -z "$RABBITMQ_PASSWORD" ] || [ "$RABBITMQ_PASSWORD" == "null" ]; thenecho "ERROR: Unable to fetch RabbitMQ password from vault"exit 1fiopeniam-cli statussystemctl --no-pager status rabbitmq-server -l# Verify RabbitMQ is runningrabbitmqctl status || { echo "ERROR: RabbitMQ failed to start!"; exit 1; }# Ensure vhosts, users, and permissions are intactecho "Verifying vhosts, users, and permissions..."rabbitmqctl list_vhostsrabbitmqctl list_usersUMASK=$(umask)if [ ${UMASK} != 0022 ]; then# STIG set 0077 umask, we need to set it to 0022 temporally to enable pluginsumask 0022rabbitmq-plugins enable rabbitmq_delayed_message_exchangerabbitmq-plugins enable rabbitmq_managementumask ${UMASK}elserabbitmq-plugins enable rabbitmq_delayed_message_exchangerabbitmq-plugins enable rabbitmq_managementfirabbitmqctl add_vhost openiam_amrabbitmqctl add_vhost openiam_idmrabbitmqctl add_vhost openiam_auditrabbitmqctl add_vhost openiam_commonrabbitmqctl add_vhost openiam_connectorrabbitmqctl add_vhost openiam_activitirabbitmqctl add_vhost openiam_userrabbitmqctl add_vhost openiam_groovy_managerrabbitmqctl add_vhost openiam_synchronizationrabbitmqctl add_vhost openiam_ext_lograbbitmqctl add_vhost openiam_bulk_synchronizationrabbitmqctl add_vhost openiam_reconciliationrabbitmqctl add_vhost openiam_bulk_reconciliationrabbitmqctl add_vhost openiam_business_rulerabbitmqctl add_vhost openiam_machine_learningrabbitmqctl add_vhost openiam_sas# Check if the user 'openiam' exists before addingif ! rabbitmqctl list_users | grep -q "^openiam\s"; thenrabbitmqctl add_user openiam "$RABBITMQ_PASSWORD"rabbitmqctl set_user_tags openiam administratorelseecho "User 'openiam' already exists, skipping user creation."firabbitmqctl set_permissions -p openiam_am openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_idm openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_audit openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_common openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_connector openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_activiti openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_user openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_groovy_manager openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_synchronization openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_ext_log openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_bulk_synchronization openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_reconciliation openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_bulk_reconciliation openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_business_rule openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_machine_learning openiam ".*" ".*" ".*"rabbitmqctl set_permissions -p openiam_sas openiam ".*" ".*" ".*"systemctl --no-pager status rabbitmq-server -lopeniam-cli start
Updating password for Redis
- Retrieve the existing Redis password.
[root@rpm certs]# vault kv list secret/openiam/ | grep -i redisREDIS_PASSWORDSPRING_REDIS_PASSWORDvault.secret.redis.passwordvault.secret.spring.redis.password[root@rpm certs]# vault kv get secret/openiam/REDIS_PASSWORD==== Data ====Key Value--- -----value passwd00[root@rpm certs]# vault kv get secret/openiam/SPRING_REDIS_PASSWORD==== Data ====Key Value--- -----value passwd00[root@rpm certs]# vault kv get secret/openiam/vault.secret.redis.password==== Data ====Key Value--- -----value passwd00[root@rpm certs]# vault kv get secret/openiam/vault.secret.spring.redis.password==== Data ====Key Value--- -----value passwd00
- Update the Redis password in Vault as shown below.
[root@rpm certs]# vault kv put secret/openiam/REDIS_PASSWORD value="openiam01"Success! Data written to: secret/openiam/REDIS_PASSWORD[root@rpm certs]# vault kv put secret/openiam/SPRING_REDIS_PASSWORD value="openiam01"Success! Data written to: secret/openiam/SPRING_REDIS_PASSWORD[root@rpm certs]# vault kv put secret/openiam/vault.secret.redis.password value="openiam01"Success! Data written to: secret/openiam/vault.secret.redis.password[root@rpm certs]# vault kv put secret/openiam/vault.secret.spring.redis.password value="openiam01"Success! Data written to: secret/openiam/vault.secret.spring.redis.password
- Verify the Redis password in Vault as follows.
[root@rpm certs]# vault kv get secret/openiam/REDIS_PASSWORD==== Data ====Key Value--- -----value openiam01[root@rpm certs]# vault kv get secret/openiam/SPRING_REDIS_PASSWORD==== Data ====Key Value--- -----value openiam01[root@rpm certs]# vault kv get secret/openiam/vault.secret.redis.password==== Data ====Key Value--- -----value openiam01[root@rpm certs]# vault kv get secret/openiam/vault.secret.spring.redis.password==== Data ====Key Value--- -----value openiam01[root@rpm certs]#Step 4: Update the Redis Password in redis configuration[root@rpm certs]# vi /etc/redis/redis.conf[root@rpm certs]# cat /etc/redis/redis.conf| grep requirepass# If the master is password protected (using the "requirepass" configuration# IMPORTANT NOTE: starting with Redis 6 "requirepass" is just a compatibility# The requirepass is not compatable with aclfile option and the ACL LOAD# command, these will cause requirepass to be ignored.# requirepass foobared# So use the 'requirepass' option to protect your instance.requirepass openiam01[root@rpm certs]#
- Restart the Redis service and stop and start the OpenIAM with the following commands.
systemctl restart redisopeniam-cli stopopeniam-cli start