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

简介: 默认情况下,在jboss eap 6.2+ 管理控制台创建datasource后,会在standalone.xml(独立模式)或host.xml(域模式)中以明文保存相关敏感信息。 这会给服务器留下安全隐患,不过官方已经考虑到了这一点,给出了vault机制来进行加密,步骤如下:   1.

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

 

目录
相关文章
|
2月前
|
安全 小程序 数据安全/隐私保护
aes加密算法python版本
aes加密算法python版本
37 0
|
5月前
|
算法 安全 数据安全/隐私保护
互联网并发与安全系列教程(13) - 信息加密技术(对称&非对称加密)
互联网并发与安全系列教程(13) - 信息加密技术(对称&非对称加密)
34 0
|
3月前
|
移动开发 JavaScript 安全
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
101 0
|
26天前
|
编解码 Java Nacos
nacos常见问题之密码加密配置如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
127 0
|
26天前
|
存储 运维 Nacos
nacos常见问题之连接用户名和密码把明文用户名和密码进行加密如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
164 2
|
1月前
|
应用服务中间件 Nacos 数据安全/隐私保护
nacos常见问题之如何用明文密码做加密
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
97 0
|
1月前
|
存储 API 数据库
微搭低代码密码加密存储
微搭低代码密码加密存储
|
2月前
|
存储 安全 Nacos
使用KMS为MSE-Nacos敏感配置加密的最佳实践
本文主要介绍通过KMS密钥管理服务产生的密钥对敏感的AK等数据进行加密之后可以有效解决泄漏带来的安全风险问题,其次通过KMS凭据托管的能力直接将MSE的主AK进行有效管理,保障全链路无AK的业务体验,真正做到安全、可控。
92262 3
|
2月前
|
安全 数据建模 网络安全
HTTPS加密协议详解——2023年版本
HTTPS加密协议详解——2023年版本
38 0