Red Hat AMQ 6
As of February 2025, Red Hat is no longer supporting Red Hat AMQ 6. If you are using AMQ 6, please upgrade: Migrating to AMQ 7.此内容没有您所选择的语言版本。
2.4. Using Encrypted Property Placeholders
Overview 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
When securing a container it is undesirable to use plain text passwords in configuration files. They create easy to target security holes. One way to avoid this problem is to use encrypted property placeholders when ever possible.
Red Hat JBoss A-MQ includes an extension to OSGi Blueprint that enables you to use Jasypt to decrypt property placeholders in blueprint files. It requires that you:
- Create a properties file with encrypted values.
- Add the proper namespaces to your blueprint file.
- Import the properties using the Aries property placeholder extension.
- Configure the Jasypt encryption algorithm.
- Use the placeholders in your blueprint file.
- Ensure that the Jasypt features are installed into the JBoss A-MQ container.
Encrypted properties 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Encrypted properties are stored in plain properties files. They are identified by wrapping them in the
ENC()
function as shown in Example 2.8, “Property File with an Encrypted Property”.
Example 2.8. Property File with an Encrypted Property
#ldap.properties ldap.password=ENC(amIsvdqno9iSwnd7kAlLYQ==) ldap.url=ldap://192.168.1.74:10389
#ldap.properties
ldap.password=ENC(amIsvdqno9iSwnd7kAlLYQ==)
ldap.url=ldap://192.168.1.74:10389
Important
You will need to remember the password and algorithm used to encrypt the values. You will need this information to configure Jasypt.
Namespaces 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
To use encryted properties in your configuration, you will need to add the following namespaces to your blueprint file:
- Aries extensions—
http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0
- Apache Karaf Jasypt—
http://karaf.apache.org/xmlns/jasypt/v1.0.0
Example 2.9, “Encrypted Property Namespaces” shows a blueprint file with the required namespaces.
Example 2.9. Encrypted Property Namespaces
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0" xmlns:enc="http://karaf.apache.org/xmlns/jasypt/v1.0.0"> ... </blueprint>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"
xmlns:enc="http://karaf.apache.org/xmlns/jasypt/v1.0.0">
...
</blueprint>
Placeholder extension 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
In order to use encrypted property placeholders in a blueprint file you need to include an Aries
property-paceholder
element to you blueprint file. As shown in Example 2.10, “Aries Placeholder Extension”, it must come before the Jasypt configuration or the use of placeholders.
Example 2.10. Aries Placeholder Extension
The Aries
property-paceholder
element's location
child specifies the location of the property file that contains the properties to use for the configuration. You can specify multiple files by using multiple location
children.
Jasypt configuration 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
You configure Jasypt using the Apache Karaf
property-placeholder
element. It has one child, encoder
, that contains the actual Jasypt configuration.
The
encoder
element's mandatory class
attribute specifies the fully qualified classname of the Jasypt encryptor to use for decrypting the properties. The encoder
element can take a property
child that defines a Jasypt PBEConfig
bean for configuring the encryptor.
For detailed information on how to configure the different Jasypt encryptors, see the Jasypt documentation.
Example 2.11, “Jasypt Blueprint Configuration” shows configuration for using the string encryptor and retrieving the password from an environment variable.
Example 2.11. Jasypt Blueprint Configuration
Placeholders 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
The placeholder you use for encrypted properties are the same as you use for regular properties. The use the form
${prop.name}
.
Example 2.12, “Jasypt Blueprint Configuration” shows an LDAP JAAS realm that uses the properties file in Example 2.8, “Property File with an Encrypted Property”.
Example 2.12. Jasypt Blueprint Configuration
The
${ldap.password}
placeholder will be replaced with the decrypted value of the ldap.password
property from the properties file.
Installing the Jasypt features 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
By default, JBoss A-MQ does not have the Jasypt encryption libraries installed. In order to use encrypted property placeholders, you will need to install the
jasypt-encryption
feature using JBoss A-MQ's features:install command as shown in Example 2.13, “Installing the Jasypt Feature”.
Example 2.13. Installing the Jasypt Feature
JBossFuse:karaf@root> features:install jasypt-encryption
JBossFuse:karaf@root> features:install jasypt-encryption