標籤:
預設情況下,我們配置在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 sessionEnter 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 matchEnter 8 character salt:20151214 --撒點鹽,大家根據需要修改(必須是8位字元)Enter iteration count as a number (Eg: 44):43 --加密的迭代次數(可以隨便改)Enter Keystore Alias:cnblogs --別名,可以隨便改
這些弄完後,會輸出下面這一段:
Initializing VaultJul 20, 2015 11:37:09 PM org.picketbox.plugins.vault.PicketBoxSecurityVault initINFO: PBOX000361: Default Security Vault Implementation Initialized and ReadyVault 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 useHandshake with Vault completePlease 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 attributePlease enter secured attribute value (such as password): --這裡輸入要儲存的敏感資訊,比如mysql的串連密碼Please enter secured attribute value (such as password) again: --再輸入一次Values matchEnter Vault Block:ctasDS_PWD --容器別名,隨便起Enter Attribute Name:passwordSecured attribute value has been stored in vault. Please make note of the following:********************************************Vault Block:ctasDS_PWDAttribute Name:passwordConfiguration 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,搞定。
jboss加密敏感資訊