Apache ActiveMQ ™ -- Encrypted passwords

Features > Security > Encrypted passwords

As of ActiveMQ 5.4.1 you can encrypt your passwords and safely store them in configuration files. To encrypt the password, you can use the newly added encrypt command like:

$ bin/activemq encrypt --password activemq --input mypassword ... Encrypted text: eeWjNyX6FY8Fjp3E+F6qTytV11bZItDp

Where the password you want to encrypt is passed with the input argument, while the password argument is a secret used by the encryptor. In a similar fashion you can test-out your passwords like:

$ bin/activemq decrypt --password activemq --input eeWjNyX6FY8Fjp3E+F6qTytV11bZItDp ... Decrypted text: mypassword

Note: It is recommended that you use only alphanumeric characters for the password. Special characters, such as $/^&, are not supported.

The next step is to add the password to the appropriate configuration file, $ACTIVEMQ_HOME/conf/credentials-enc.properties by default.

activemq.username=system activemq.password=ENC(mYRkg+4Q4hua1kvpCCI2hg==) guest.password=ENC(Cf3Jf3tM+UrSOoaKU50od5CuBa8rxjoL) ... jdbc.password=ENC(eeWjNyX6FY8Fjp3E+F6qTytV11bZItDp)

Note that we used ENC() to wrap our encrypted passwords. You can mix plain and encrypted passwords in your properties files, so encrypted ones must be wrapped this way.

Finally, you need to instruct your property loader to encrypt variables when it loads properties to the memory. Instead of standard property loader we'll use the special one (see \$ACTIVEMQ_HOME/conf/activemq-security.xml) to achieve this.

With this configuration ActiveMQ will try to load your encryptor password from the ACTIVEMQ_ENCRYPTION_PASSWORD environment variable and then use it to decrypt passwords from credential-enc.properties file.

Alternative is to use a simple variant and store encryptor password in the xml file, like this

but with that you'll lose the secrecy of the encryptor's secret. You may also consult http://www.jasypt.org/advancedCommunity/FAQ/configuration.md for more ideas on how to configure Jasypt.

Finally, we can use properties like we'd normally do

or

If you want to run the broker with this configuration, you need to do the following:

  • Set environment variable:

    $ export ACTIVEMQ_ENCRYPTION_PASSWORD=activemq

  • Start the broker:

    $ bin/activemq start xbean:conf/activemq-security.xml

  • Unset the environment variable:

    $ unset ACTIVEMQ_ENCRYPTION_PASSWORD

In this way your encryptor secret is never saved on your system and your encrypted passwords are safely stored in the configuration files.

results matching ""

    No results matching ""