WebLogic12c使用WLST解密控制台密码报JSAFE_PaddingException错误
WebLogic 12c解密控制台密码报错Invalid padding解决方案
报错根因
com.rsa.jsafe.JSAFE_PaddingException: Invalid padding 报错的核心原因是:你当前调用的加密服务使用的密钥,和加密你待解密密文的密钥不匹配,WebLogic的域加密密钥存放在域下security/SerializedSystemIni.dat文件中,密钥和密文必须一一对应才能正常解密。
排查及解决步骤
- 第一步:修正环境变量加载逻辑,避免全局环境和域环境冲突
不要加载全局WebLogic环境,直接加载目标域的环境变量:cd /webapps/maint/maint35_install/domain/bin source setDomainEnv.sh - 第二步:确认待解密的密文来源合法
你要解密的密文必须是从当前目标域的以下文件中提取的,不能使用其他域生成的密文:config/config.xml中存储的管理账号密码、节点管理器密码标签值security/boot.properties中存储的加密后用户名、密码值
- 第三步:调整WLST解密命令的参数,修正域路径配置
调用加密服务时建议直接指向域的security目录,完整执行逻辑如下:# 执行域下自带的wlst,不要用全局Oracle_Home下的wlst ./bin/wlst.sh wls:/offline> sec_path = "/webapps/maint/maint35_install/domain/security/" wls:/offline> service = weblogic.security.internal.SerializedSystemIni.getEncryptionService(sec_path) wls:/offline> enc_svc = weblogic.security.internal.encryption.ClearOrEncryptedService(service) wls:/offline> # 替换为你从当前域对应文件中提取的真实密文 wls:/offline> print enc_svc.decrypt("{AES}WDhZb5/IP95P4eM8jwYITiZs01kawSeliV59aFog1jE=") - 第四步:解密失败的替代方案,直接重置控制台密码
如果确认密文和域匹配但依然解密失败,大概率是Maintenix生成域时做了自定义加密配置,可直接重置密码无需解密:- 停止域的管理服务器
- 备份域下
security/DefaultAuthenticatorMyrealmInit.ldift文件 - 在域根目录下执行命令生成新的管理员账号:
java weblogic.security.utils.AdminAccount 新管理员账号 新管理员密码 security/- 修改
security/boot.properties文件,把里面的用户名和密码改为你刚设置的明文值,启动管理服务器后WebLogic会自动对文件内容做加密处理,之后就可以用新账号登录控制台。
内容的提问来源于stack exchange,提问作者Nick G.
相关产品推荐
相关产品推荐

