3

我正在使用JBoss 4.2.1GA

您现在可能有一种方法可以避免使用纯文本形式的 JBoss DataSoruce 密码。然而,当您查看org.jboss.resource.security.SecureIdentityLoginModule 解码编码方法是如何实现时,这种技术有一个基本的安全缺陷变得显而易见。加密基本上是使用固定密钥的常规河豚(“jaas is the way”)。

我正在寻找一种方法来更改我选择的固定密钥或更改加密/解密的完成方式。

我倾向于认为可以通过重新实现SecureIdentityLoginModule来完成,这很好,但我很难相信没有现成可用的选项(到目前为止我还没有找到)

有人做过这样的事情吗?

4

3 回答 3

3

至少对于 JBoss 4.0.x,此问题有一个未解决的错误票:https ://issues.jboss.org/browse/JBAS-4460

注意评论:

“加密数据库”密码是为了通过愚蠢的安全审核。最终在某个地方会有某种密码,因为系统需要解密密码才能将其发送到数据库。对于一个相对有经验的程序员来说,破解它总是很容易的。文件系统/操作系统安全 + 传输安全是您唯一的希望。

评论者所说的是所有安全系统的共同问题:在某些时候有一个可以解密的密钥。确保您的服务器的文件系统安全性已确定,以便不容易访问此密钥,您应该没问题。

于 2012-03-21T02:45:07.343 回答
1

看看下面的wiki文档。它描述了两种加密 JBoss 密码的方法。第一个是您所描述的,第二个是基于密码的加密。

于 2012-03-21T04:01:59.670 回答
0

好的,这就是我完成此任务的方式(我正在开发JBOSS 4.2.1 GA和 Oracle,因此版本和数据库供应商之间的某些内容可能会有所不同):

您需要扩展AbstractPasswordCredentialLoginModule

我将我的(称为PGPLoginModule)基于称为 SecureIdentityLoginModule 的开箱即用实现它与我的唯一区别是解码和编码方法使用不同的加密算法和过程(我的使用 PGP 证书解密属性文件,其中密码被存储)类似于本文中的解释,但您可以使用任何您喜欢的方法。

您需要在 jboss 库文件夹中添加以下 jar 以解决依赖关系:

  • [JBOSS_HOME] /lib/jboss-common.jar
  • [JBOSS_HOME] /lib/jboss-jmx.jar
  • [JBOSS_HOME] /server/default/lib/jbosssx.jar
  • [JBOSS_HOME] /server/default/lib/jboss-jca.jar

您需要 JAR 您的课程并将 jar 放在以下任一位置:

  • [JBOSS_HOME] /server/default/lib

或者

  • [JBOSS_HOME] /lib

当您拥有它时,您需要在您在 jboss 的 login-config.xml 上定义的安全域上对其进行配置,以便它使用您的类(我的是org.company.resource.security.PGPLoginModule)而不是使用默认的类,因此它将看起来像:

<application-policy name="PGPDomain">
        <authentication>
            <login-module code="org.company.resource.security.PGPLoginModule" flag="required">
                <module-option name="username">[DB_USER]</module-option>
                <module-option name="password">[ENCTRYPTED_PASSWORD]</module-option>
                <module-option name="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=OracleDS</module-option>
            </login-module>
        </authentication>
    </application-policy>

请注意,根据您决定使用的强度和算法,您可能需要将Java Cryptography Extension Unlimited Strength Policy Files安装到您的 JRE。

我希望有人觉得它有用。

于 2012-03-23T15:38:44.853 回答