If you are using AMS on midrange, your keystore.conf can contain plaintext passwords to the Java private keys and keystores. This is not very secure.
You can encrypt these passwords using runamscred which takes the file, encrypts the passwords and updates the file. For example
Before
JKS.keystore = /home/colinpaice/ssl/ssl2/trust.jks
JKS.certificate = testuser
JKS.encrypted = no
JKS.keystore_pass = zpassword
JKS.key_pass = zpassword
JKS.provider = IBMJCE
amscred.keyfile=/home/colinpaice/mqamsclient/encryption.key
After
JKS.keystore = /home/colinpaice/ssl/ssl2/trust.jks
JKS.certificate = testuser
JKS.encrypted=yes
JKS.keystore_pass=<AMS>1!cu891gavGZlmnYY2DyLgbA==!W3mhqtHazVx/QDWKW/daJg==
JKS.key_pass=<AMS>1!XFS5rLL4JtlSUaAH5DdwCg==!Q6aC1547gtoqi9Q0Twlogw==
JKS.provider = IBMJCE
amscred.keyfile=/home/colinpaice/mqamsclient/encryption.key
This is documented (not very clearly) here.
The steps are
- Create a file with a string in it. The documentation has Th1sIs@n3Ncypt|onK$y as an example.
- Update your keystore.conf file to add a line to point to this file
- amscred.keyfile=/home/colinpaice/mqamsclient/encryption.key .
- This line is needed when you have Java programs.
- Encrypt the passwords with
- /opt/mqm/java/bin/runamscred -f keystore.conf -sp 1
- This uses the amscred.keyfile entry to locate the encryption key. You can use -sf to specify a different file, but as the file has to have the amscred.keyfile statement. You might just as well use it, and be sure it works.!
- The command changes JKS.encrypted to yes, and changes the passwords.
Systems management
Because the command changes the file contents, you may want to have a secure master file, master.conf, with the password in plain text in it. Make sure this file is secure (perhaps on a secure machine).
To manage the passwords
- copy the file cp master.conf ks.conf.
- encrypt the passwords using /opt/mqm/java/bin/runamscred -f ks.conf -sp 1.
- send the ks.conf and the encryption key file to your end users.
Other AMS blog posts
- Overview and challenges of using end to end message encryption (AMS).
- Certificate and keyring management for AMS.
- Installing AMS on z/OS.
- What certificates do I need for AMS with a client going to z/OS?
- checkAMS: program to check your AMS defintions are consistent with z/OS keyring
- Adding more users to AMS.
- Installing AMS on midrange for end to end message protection
- Understanding setmqspl to set up AMS definitions.
- How to administer AMS policies, and use the set policy command.
- Brain check and reset, needed for AMS keystores on midrange.
- Using runamscred to encrypt the passwords in the keystore.conf file.
- How do I find the recipients and signer of an AMS message?
- I have a message on the AMS DLQ – what can I do about it? and How do I process messages on the dead letter queue (DLQ)?
2 thoughts on “Using runamscred to encrypt the passwords in the keystore.conf file.”