解密Weblogic凭据的问题

时间:2016-08-30 09:45:02

标签: java encryption weblogic

我使用此命令

创建了配置和密钥文件
java weblogic.Admin -username test_user -password test_user -userconfigfile C:\temp\testingconfig.config -userkeyfile C:\temp\testingkey.key STOREUSERCONFIG

配置和密钥是

weblogic.management.username = {3DES}1VR2QW0Yj3XHj/iEr+z9Mve3mJi0RSCw3J62m1rb063xLAHPTwXcS6X+VRC6tI8xsHriNfYtsB0\= weblogic.management.password = {3DES}ALU/yO2Zi4Z7SkVj1qJDvckmy7Y1DpDc7654xPIeg2zaj5On6yxa6xB0L4Xf0oS0d/9vtLFkgps\=

当我尝试使用配置和密钥使用我的java代码解密这些凭据时,我得到了一些其他加密值:

密码 = [C@3ba08dab

用户名 = {AES}OLU4ELDpdXulGpd4abYvYbN7i/ngvXbBFZ+/UyYk89I=

我写的java代码是

UsernameAndPassword file = UserConfigFileManager
                    .getUsernameAndPassword(<Path to config file>,
                            <Path to key file>",weblogic.management");

那么如何使用配置和密钥将 test_user / test_user 中的解密凭据作为解密凭证。

请帮助......

2 个答案:

答案 0 :(得分:0)

示例WLST脚本:

from weblogic.security import UserConfigFileManager

def decrypt(cred_file, secret_key):
  u_and_p = UserConfigFileManager.getUsernameAndPassword(cred_file, secret_key, "weblogic.management")
  return (u_and_p.getUsername(), u_and_p.getPassword().tostring())

config_path = '/path/to/config/file'
key_path = '/path/to/key/file'

print decrypt(config_path, key_path)

示例输出:

('admin', 'Pa$$w0rd')

此代码对我来说可以使用几年没有问题。

以及如何从WLST创建新对的示例:

import os
sys.path.append(os.path.dirname(os.path.realpath(sys.argv[0])))
from weblogic.security import UserConfigFileManager
from weblogic.security import UsernameAndPassword

ADMIN_USERNAME = 'admin'
ADMIN_PASSWORD = 'Pa$$w0rd'
CONFIG_PATH = '/path/to/config/file'
KEY_PATH = '/path/to/key/file'

System.setProperty('weblogic.management.confirmKeyfileCreation', 'true')

u_and_p = UsernameAndPassword(ADMIN_USERNAME, ADMIN_PASSWORD)
UserConfigFileManager.setUsernameAndPassword(u_and_p, CONFIG_PATH, KEY_PATH, 'weblogic.management')

答案 1 :(得分:0)

要解决问题,我们需要按照以下步骤操作:

  • 拥有最新版本的weblogic。较新的经文正在使用 AES安全算法。
  • 为了接收用户名/密码的字符串值,我们可以:
    • file.getUsername().toString/file.getPassword().toString
    • file.getUsername()/file.getPassword()
    • new String(file.getUsername())/new String(file.getPassword())

在所有这三个中,我们要遵循第三个。不知道确切的原因。但是创建字符串对象然后通过它获取值可以得到正确的结果。我们在这三个案例中得到的确切价值是。

  1. 第一种情况: - 用户名/密码=某些加密值
  2. 第二种情况: -

    • 用户名: - 正确值
    • 密码: - null
  3. 第三种情况:

    • 用户名: - 正确值
    • 密码: - 正确值