文章出處

默認情況下,在jboss eap 6.2+ 管理控制臺創建datasource后,會在standalone.xml(獨立模式)或host.xml(域模式)中以明文保存相關敏感信息。

這會給服務器留下安全隱患,不過官方已經考慮到了這一點,給出了vault機制來進行加密,步驟如下:

 

1. 利用keytool生成keystore文件,參考命令如下:

keytool -genseckey -alias ctas -storetype jceks -keyalg AES -keysize 128 -storepass mypassword -keystore /Users/jimmy/vault/vault.keystore

解釋一下:keytool是jdk自帶的小工具

紅色的部分是大家要根據自身情況修改的,藍色的可改可不改。

-alias 后的ctas為別名,可以隨便改

-storepass 后的mypassword為訪問keystore文件的密碼

-keystore 后的/Users/jimmy/vault/vault.keystore為keystore文件的保存路徑,注:該文件jboss必須具有讀寫權限。

整個keystore相當于一個敏感信息的文件數據庫,可以把一些敏感信息,比如db連接密碼,ftp密碼,郵件密碼保存在這里。

藍色部分AES為加密算法,可以改成RSA之類,128為加密強度,具體可參考jboss文檔。

 

2. JBOSS_HOME/bin/vault.sh ,進入vault交互模式,會出現類似如下輸出:

==========================================

  JBoss Vault

  JBOSS_HOME: /Users/jimmy/Downloads/app/jboss-eap-6.2

  JAVA: /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java

==========================================

**********************************
****  JBoss Vault  ***************
**********************************
Please enter a Digit::   0: Start Interactive Session  1: Remove Interactive Session  2: Exit

輸入0,進入交互模式

Starting an interactive session

Enter directory to store encrypted files:/Users/jimmy/vault/ 這里輸入keystore文件所在目錄
Enter Keystore URL:/Users/jimmy/vault/vault.keystore 這里輸入keystore文件完整路徑
Enter Keystore password:  這里輸入keystore的密碼,與剛才步驟1中的密碼要相同
Enter Keystore password again: 再次輸入密碼進行驗證
Values match
Enter 8 character salt:20150720 撒點鹽,大家根據需要修改(必須是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="/Users/jimmy/vault/vault.keystore"/>
  <vault-option name="KEYSTORE_PASSWORD" value="MASK-2W0YkkQmW8vbjUxlq79j/1"/>
  <vault-option name="KEYSTORE_ALIAS" value="cnblogs"/>
  <vault-option name="SALT" value="20150720"/>
  <vault-option name="ITERATION_COUNT" value="43"/>
  <vault-option name="ENC_FILE_DIR" value="/Users/jimmy/vault/"/>
</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
********************************************

注意紅色部分,辛苦了半天,就是要這一行,最后按2退出,同時停止jboss(如果jboss在運行的話)

 

4.修改jboss配置文件,以standalone.xml為例

    </extensions>

    <vault>
        <vault-option name="KEYSTORE_URL" value="/Users/jimmy/vault/vault.keystore"/>
        <vault-option name="KEYSTORE_PASSWORD" value="MASK-2W0YkkQmW8vbjUxlq79j/1"/>
        <vault-option name="KEYSTORE_ALIAS" value="cnblogs"/>
        <vault-option name="SALT" value="20150720"/>
        <vault-option name="ITERATION_COUNT" value="43"/>
        <vault-option name="ENC_FILE_DIR" value="/Users/jimmy/vault/"/>
    </vault>

    <management>

在</extensions>與<management>先插入第2步中剛才高亮大段標紅的內容。如果是域(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,搞定。

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()