jboss eap 6.2+ 版本中 加密datasource密码等敏感信息

默认情况下,在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,搞定。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏雨过天晴

原 Nginx 开启 status 状态功

1021
来自专栏杨建荣的学习笔记

sysdba登录报错insufficient privileges的原因分析(r7笔记第64天)

今天碰到一个奇怪的小问题,看起来是一个非常简单的问题。 我先说一下问题背景。有一台DB服务器,因为需要搭建备库,现在找了一台已有的机器临时用一下,这台临时的服务...

3436
来自专栏nimomeng的自我进阶

基于Jenkins的CocoaPods化iOS项目构建+蒲公英/FIR系统发布

本文以本地和Git为例,结合CocoaPods,简单介绍了如何用jenkins来进行CI编译并上传蒲公英和Fir生成相应二维码的流程。

1623
来自专栏安富莱嵌入式技术分享

【RL-TCPnet网络教程】第15章 RL-TCPnet之创建多个TCP连接

本章节为大家讲解RL-TCPnet的TCP多客户端实现,因为多客户端在实际项目中用到的地方还挺多,所以我们也专门开启一个章节做讲解。另外,学习本章节前,务必要优...

1562
来自专栏青青天空树

springboot配置读写分离

  近日工作任务较轻,有空学习学习技术,遂来研究如果实现读写分离。这里用博客记录下过程,一方面可备日后查看,同时也能分享给大家(网上的资料真的大都是抄来抄去,,...

2243
来自专栏PHP在线

重磅资料!Github上的PHP资源汇总大全

依赖管理 ——用于依赖管理的包和框架 Composer/Packagist : 一个包和依赖管理器 Composer Installers: 一个多框架Com...

3164
来自专栏蓝天

编译hbase-1.2.3源代码

确保机器可以正常访问Internet,如能正常访问https://repo.maven.apache.org等,如果是代理方式则需要设置好eclipse和m...

2002
来自专栏散尽浮华

Centos下DNS+NamedManager高可用部署方案完整记录

之前说到了NamedManager单机版的配置,下面说下DNS+NamedManager双机高可用的配置方案:

7437
来自专栏進无尽的文章

工程管理篇 | 多Targets

很多时候,工程管理是一个很实际的技能,我们在实际开发中普遍有很多环境:测试环境、开发环境、生产环境等。还有可能遇到需要创建两个很多内容相同,部分功能不同的工程。

972
来自专栏张戈的专栏

修改Apache的超时设置,解决长连接请求超时问题

某日,组内后台开发找到我,问我们的 WEB 服务器超时设置是多少。他反馈的问题是,有一个 VLAN 切换任务 cgi 接口经常返回 504 网关超时错误,要我分...

9518

扫码关注云+社区

领取腾讯云代金券