jboss加密敏感信息

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

时间: 2025-01-18 09:56:17

jboss加密敏感信息的相关文章

openssl加密敏感信息

在使用shell脚本远程访问机器进行非交互式操作时,又不想让密码明文存储密码文件中,很有用 [email protected] setup]# echo "[email protected]" | openssl enc -aes-256-cbc -a -e -k "-" > passwd.file[[email protected] setup]# openssl enc -aes-256-cbc -a -d -k "-" -in pas

【Java编码准则】の #02不要在客户端存储未加密的敏感信息

当构建CS模式的应用程序时,在客户端侧存储敏感信息(例如用户私要信息)可能导致非授权的信息泄漏. 对于Web应用程序来说,最常见的泄漏问题是在客户端使用cookies存放服务器端获取的敏感信息.Cookies是由web服务器创建的,它具有一个指定的有效时间,保存在客户端.当客户端连接上服务器端时,客户端使用cookies中存储的信息向服务器端进行认证,通过后服务器端返回敏感信息. 在XSS攻击下,Cookies不能保证敏感信息的安全.无论是通过XSS攻击,还是直接对客户端的攻击,攻击者一旦获取到

【Android平台安全方案】の #00-请不要在外部存储(SD卡)加密存储的敏感信息

本文翻译自https://www.securecoding.cert.org/confluence/display/java/DRD00-J.+Do+not+store+sensitive+information+on+external+storage+%28SD+card%29+unless+encrypted+first,有增删改. Android提供了几种保存持久化应用数据的选择,当中之中的一个就是外部存储(/sdcard, /mnt/sdcard).外部存储包含设备内部的微型或标准大小的

【Android平台中的安全编程】の #00-不要在外部存储(SD卡)中存放未加密的敏感信息

本文翻译自https://www.securecoding.cert.org/confluence/display/java/DRD00-J.+Do+not+store+sensitive+information+on+external+storage+%28SD+card%29+unless+encrypted+first,有增删改. Android提供了几种保存持久化应用数据的选择,其中之一就是外部存储(/sdcard, /mnt/sdcard).外部存储包括设备内部的微型或标准大小的SD卡

logstash 对配置文件conf敏感信息,密码等加密

logstash的配置文件conf经常会涉及敏感信息,比如ES,mysql的账户密码等,以下使用logstash导入mysql为例子,加密隐藏mysql的密码. 在向keystore中添加key及其secret值之后,你可以在配置敏感设置时使用key代替secret值. 引用key的语法与环境变量的语法相同:${KEY},KEY是key的名称. 例如,假设keystore包含一个名为ES_PWD的key,其值为yourelasticsearchpassword: 在配置文件中使用:output

12306个人敏感信息泄露

/************************************** /* 作者:半斤八兩 /* 博客:http://cnblogs.com/bjblcracked /* 日期:2015-02-20 00:01 /************************************** 只是感兴趣,没有其他目的.失误之处敬请诸位大侠赐教! 当下社会发展迅速,从最初的排队购票,到电话购票,到现在的互联网购票.互联网让我们足不出户,就能购到火车票,让我们越来越便捷.但是人们往往会忽略了

使用jni技术进行android应用签名信息核查及敏感信息保护

最近业余时间写了一款应用<摇啊摇>,安智.安卓.360等几个应用商店已经陆续审核通过并上线.从有想法到最终将产品做出来并发布,断断续续花了近二个半月的业余时间,总体来讲还算顺利,虽然期间也遇到几个小技术难点,最后解决的还算满意.今天说下其中一个小技术难点,现在想想这个小技术难点也很平常,但还是分享出来,希望对有相同疑惑的同学有帮助. 因为java语言自身特性的原因,导致android程序很容易被反编译,虽然可以采用代码混淆的方式,但是如果用了第三方库,混淆脚步编写不好,代码混淆后又会出现程序运

看好你的门-确保验证机制的安全(2)-安全处理敏感信息

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考. 1. 前提 执行安全的验证机制,不仅仅要同时满足几个关键安全目标,许多的时候也需要牺牲其他目标.比如易用性.成本.还有功能. 我们需要综合考虑下面这些因素: 系统所提供功能的安全程度: 用户对不同类型的验证控制的容忍和接受程度: 支持一个不够友好的界面需要的整体成本(便捷和安全往往是一个事物的两个方向) 系统所保护的信息或者资产的价值. 2. 安全处理敏感信息 一些基本要求,写下来,以后也可

如何保护敏感信息不被篡改

问题背景 系统中的敏感信息,如账户余额,需要给予特殊保护,不能被篡改. 如何从程序角度给予保证? 分析 采用非对称加解密算法,原理如下: 1.网站生成一对公钥和密钥,使用时必须成对使用. 2.公钥发布给公众,私钥自己保存,需要保证私密性.私钥不泄露是这套体系生效的前提. 3.只有自己用私钥加密产生的密文,用自己发布出去的公钥才能打开.(一般用于签名,防抵赖) 4.我们采用私钥加密,公钥打开,是以后可能有数据交互的需要. 5.灵活使用各种小技巧,可以进一步提高安全性. 方案 以下方案只是框架方案,