标签:
默认情况下,我们配置在domain.xml或host.xml文件中的信息都是明文,对一些敏感信息就显得安全性不够,可以使用jboss提供的vault机制来进行加密
下面的内容来自 http://www.cnblogs.com/yjmyzz/p/how-to-encrypt-datasource-password-with-jboss-eap-6.html
1. 利用keytool生成keystore文件,参考命令如下:
keytool -genseckey -alias ctas -storetype jceks -keyalg AES -keysize 128 -storepass mypassword -keystore C:\jboss-eap-6.3\bin\vault.keystore
说明:keytool是jdk自带的小工具,红色的部分是大家要根据自身情况修改的,蓝色(ES为加密算法,可以改成RSA之类,128为加密强度)的可改可不改。
-alias 后的ctas为别名,可以随便改
-storepass 后的mypassword为访问keystore文件的密码
-keystore 后的C:\jboss-eap-6.3\bin\vault.keystore为keystore文件的保存路径,整个keystore相当于一个敏感信息的文件数据库,可以把一些敏感信息,比如db连接密码,ftp密码,邮件密码保存在这里
2. 运行C:\jboss-eap-6.3\bin\vault.bat
输入0,进入交互模式
Starting an interactive session Enter directory to store encrypted files:C:\jboss-eap-6.3\bin\ --这里输入keystore文件所在目录 Enter Keystore URL:C:\jboss-eap-6.3\bin\vault.keystore --这里输入keystore文件完整路径 Enter Keystore password: --这里输入keystore的密码,与刚才步骤1中的密码要相同 Enter Keystore password again: --再次输入密码进行验证 Values match Enter 8 character salt:20151214 --撒点盐,大家根据需要修改(必须是8位字符) Enter iteration count as a number (Eg: 44):43 --加密的迭代次数(可以随便改) Enter Keystore Alias:cnblogs --别名,可以随便改
这些弄完后,会输出下面这一段:
Initializing Vault Jul 20, 2015 11:37:09 PM org.picketbox.plugins.vault.PicketBoxSecurityVault init INFO: PBOX000361: Default Security Vault Implementation Initialized and Ready Vault Configuration in AS7 config file: ******************************************** ... </extensions> <vault> <vault-option name="KEYSTORE_URL" value="C:\jboss-eap-6.3\bin\vault.keystore"/> <vault-option name="KEYSTORE_PASSWORD" value="MASK-2W0YkkQmW8vbjUxlq79j/1"/> <vault-option name="KEYSTORE_ALIAS" value="cnblogs"/> <vault-option name="SALT" value="20151214"/> <vault-option name="ITERATION_COUNT" value="43"/> <vault-option name="ENC_FILE_DIR" value="C:\jboss-eap-6.3\bin\"/> </vault><management> ... ******************************************** Vault is initialized and ready for use Handshake with Vault complete Please enter a Digit:: 0: Store a secured attribute 1: Check whether a secured attribute exists 2: Exit
注意:红色部分,意思是让你把这一段,加到standalone.xml或host.xml的相应位置。(注:建议把这一段复制出来,等会儿再加到配置文件中)
3. 保持刚才的交互模式,不要退出,继续:
输入0,准备存储敏感信息
Task: Store a secured attribute Please enter secured attribute value (such as password): --这里输入要存储的敏感信息,比如mysql的连接密码 Please enter secured attribute value (such as password) again: --再输入一次 Values match Enter Vault Block:ctasDS_PWD --容器别名,随便起 Enter Attribute Name:password Secured attribute value has been stored in vault. Please make note of the following: ******************************************** Vault Block:ctasDS_PWD Attribute Name:password Configuration should be done as follows: VAULT::ctasDS_PWD::password::1 ********************************************
4.修改jboss配置文件
<vault> <vault-option name="KEYSTORE_URL" value="C:\jboss-eap-6.3\bin\vault.keystore"/> <vault-option name="KEYSTORE_PASSWORD" value="MASK-2W0YkkQmW8vbjUxlq79j/1"/> <vault-option name="KEYSTORE_ALIAS" value="cnblogs"/> <vault-option name="SALT" value="20151214"/> <vault-option name="ITERATION_COUNT" value="43"/> <vault-option name="ENC_FILE_DIR" value="C:\jboss-eap-6.3\bin\"/> </vault>
域(domain)模式下,这一段要插入到host.xml文件的<management>之前,每台slave机器的host.xml里都要做同样的处理,keystore文件也要复制到每台slave机器上。
然后找到testDS的位置(域模式下datasource是在master机器的domain.xml里),把密码换成:
<datasource jta="false" jndi-name="java:/testDS" pool-name="testDS" enabled="true" use-ccm="false">
...
<security>
<user-name>root</user-name>
<password>${VAULT::ctasDS_PWD::password::1}</password>
</security>
...
</datasource>
重启jboss,搞定。
标签:
原文地址:http://www.cnblogs.com/yhzh/p/5032731.html