weblogic控制台密码丢失影响系统更新版本

在保证中间件正常运行的情况下,将加密后的密码解密从而登录控制台

前提是需要该weblogic admin server 所在服务器的权限(能够查看weblogic域文件)


需要的文件:

SerializedSystemIni.dat   这是weblogic的加密密钥,仅有一个,若找不到可使用find命令查找

我的路径为:/home/anker/domains/anker_domain/security/SerializedSystemIni.dat

setWLSEnv.sh   配置环境变量用

我的路径:/home/anker/Oracle/Middleware/wlserver_10.3/server/bin/setWLSEnv.sh

boot.properties    该文件为密码文件,在weblogic启动成功后密码会被加密

我的路径:/home/anker/domains/pass_domain/servers/AdminServer/security/boot.properties


解密过程:

  1. 新建一个目录,将SerializedSystemIni.dat文件copy到这个目录下

    如:/home/anker/password/SerializedSystemIni.dat

  2. 在这个文件夹下新建一个java文件,Decrypt.java,名字不能错,必须和内容的class名字一样。

import weblogic.security.internal.*;
import weblogic.security.internal.encryption.*;

import java.io.PrintStream;


public class Decrypt {
    static EncryptionService es = null;
    static ClearOrEncryptedService ces = null;

    public static void main(String[] args) {
        String s = null;

        if (args.length == 0) {
            s = ServerAuthenticate.promptValue("Password: ", false);
        } else if (args.length == 1) {
            s = args[0];
        } else {
            System.err.println("Usage: java Decrypt [ password ]");
        }

        es = SerializedSystemIni.getExistingEncryptionService();

        if (es == null) {
            System.err.println("Unable to initialize encryption service");

            return;
        }

        ces = new ClearOrEncryptedService(es);

        if (s != null) {
            System.out.println("\nDecrypted Password is:" + ces.decrypt(s));
        }
    }
}

3.执行 setWLSEnv.sh脚本,执行后会出来一长串环境变量,分别是CLASSPATH和PATH

如执行结果如下(只列出部分):
CLASSPATH=/home/anker/Oracle/Middleware/patch_wls1036/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/home/anker/Oracle/Middleware/patch_ocp371

PATH=/home/anker/Oracle/Middleware/wlserver_10.3/server/bin:/home/anker/Oracle/Middleware/modules/org.apache.ant_1.7.1/bin:


执行export命令配置临时环境变量(只在该窗口下生效,关闭即失效)

$ export CLASSPATH=/home/anker/Oracle/Middleware/patch_wls1036/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/home/pass/Oracle/Middleware/patch_ocp371/profile

$ export PATH=/home/anker/Oracle/Middleware/wlserver_10.3/server/bin:/home/anker/Oracle/Middleware/modules/org.apache.ant_1.7.1/bin:


确认是否成功: 执行 echo $CLASSPATH

显示的内容与执行完脚本相同即成功。


4.weblogic控制台密码配置文件中获取加密后的密码:

cat boot.properties
#Thu Aug 10 17:14:36 CST 2017
password={AES}dhmf9DV4WO3AL87A3SEdeVpDoitg6n21HlLbrka1+Ck\=
username={AES}uOWGoXmpA0isbA68WC6vSNp6atbSZKlR4XQypbcoCUo\=


到之前放Decrypt.java的目录执行 javac Decrypt.java

然后执行 java Decrypt 加密后密码,如

java Decrypt {AES}dhmf9DV4WO3AL87A3SEdeVpDoitg6n21HlLbrka1+Ck\=

执行结束后会显示解密后的结果,上述解密结果如下

Decrypted Password is:welcome1


知道密码后就可以登录console咯