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
解密过程:
- 新建一个目录,将SerializedSystemIni.dat文件copy到这个目录下
如:/home/anker/password/SerializedSystemIni.dat
- 在这个文件夹下新建一个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/pass/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咯