Caused By: com.rsa.jsafe.JSAFE_PaddingException: Could not perform unpadding: invalid pad byte.
有时候,复制l到其它一个WebLogic Domain下修改后启动(通常用于手动复制集节点的操作), 或者Domain中的文件遭到了部分损坏, 那么启动过程中, 会在出现Security错误后,服务器进入强制退出状态, 一份可能的log如下所示:
<2011-6-25 下午09时57分30秒 CST> <Critical> <WebLogicServer> <BEA-000386> <Server subsystem failed. Reason: java.lang.AssertionError: flect.InvocationTargetException java.lang.AssertionError: flect.InvocationTargetException at weblogic.descriptor.DescriptorManager$SecurityServiceImpl$SecurityProxy._invokeServiceMet hod(DescriptorManager.java:175) at weblogic.descriptor.DescriptorManager$SecurityServiceImpl$SecurityProxy.decrypt(Descripto rManager.java:192) at weblogic.descriptor.DescriptorManager$SecurityServiceImpl.decrypt(DescriptorManager.java: 114) at weblogic.descriptor.internal.AbstractDescriptorBean._decrypt(AbstractDescriptorBean.java: 1092) at Credential(SecurityCo nfigurationMBeanImpl.java:736) Truncated. see log file for complete stacktrace Caused By: flect.InvocationTargetException flect.NativeMethodAccessorImpl.invoke0(Native Method) lol登陆错误 flect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) flect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at flect.Method.invoke(Method.java:597) at weblogic.descriptor.DescriptorManager$SecurityServiceImpl$SecurityProxy._invokeServiceMet hod(DescriptorManager.java:173) Truncated. see log file for complete stacktrace Caused By: weblogic.ption.EncryptionServiceException: com.rsa.jsafe.JSAFE_Pad dingException: Could not perform unpadding: invalid pad byte. at weblogic.ption.JSafeEncryptionServiceImpl.decryptBytes(JSafeEncryp tionServiceImpl.java:136) at weblogic.ption.JSafeEncryptionServiceImpl.decryptString(JSafeEncry ptionServiceImpl.java:184) at weblogic.ption.ClearOrEncryptedService.decrypt(ClearOrEncryptedSer vice.java:96) flect.NativeMethodAccessorImpl.invoke0(Native Method) flect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) Truncated. see log file for complete stacktrace Caused By: com.rsa.jsafe.JSAFE_PaddingException: Could not perform unpadding: invalid pad byte. at com.a(Unknown Source) at com.rsa.jsafe.JSAFE_SymmetricCipher.decryptFinal(Unknown Source) at weblogic.ption.JSafeEncryptionServiceImpl.decryptBytes(JSafeEncryp tionServiceImpl.java:124) at weblogic.ption.JSafeEncryptionServiceImpl.decryptString(JSafeEncry ptionServiceImpl.java:184) at weblogic.ption.ClearOrEncryptedService.decrypt(ClearOrEncryptedSer vice.java:96) Truncated. see log file for complete stacktrace > <2011-6-25 下午09时57分30秒 CST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to FAI LED> <2011-6-25 下午09时57分30秒 CST> <Error> <WebLogicServer> <BEA-000383> <A critical service failed. T he server will shut itself down> <2011-6-25 下午09时57分30秒 CST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to FOR CE_SHUTTING_DOWN> |
Log中粗体的的部分显示了出错的真正原因是在JSAFE包中进行解密(decrypt)时报错, 而调用此功能的是WebLogic安全模块的解密字符串方法. JSafe是rsa公司出品的一个收费的加密解密安全相关的软件包. 后台细节不必深究, 我们只需要关注解密字符串的部分即可. 首先需要指出的是密码加密后的内容只和文件 $DOMAIN_HOME/security/SerializedSystemIni.dat 相关.
解决方法1: 修改l中的加密内容.
首先, 必须一份能正常运行的Domain文件, 然后使用 如何破解WebLogic管理密码? 中提到的解密工具, 来得到原始密码.
需要解密的l中的内容如下粗体部分所示:
<default-realm>myrealm</default-realm>
(1) <credential-encrypted>{AES}QIo54gGfn2Y+y62DqTCE7Q01ll5DF48PbAI1gBX22wR8sWEuVlvdHXSc9kDAfknTJGfo1n1bO/RxkYMogv4XNZ4bFTmbAe1zYfpsBtSFbzI97Y2HE3lwd5c9dv9gDISU</credential-
(1) <credential-encrypted>{AES}QIo54gGfn2Y+y62DqTCE7Q01ll5DF48PbAI1gBX22wR8sWEuVlvdHXSc9kDAfknTJGfo1n1bO/RxkYMogv4XNZ4bFTmbAe1zYfpsBtSFbzI97Y2HE3lwd5c9dv9gDISU</credential-
encrypted>
<node-manager-username>weblogic</node-manager-username>
(2) <node-manager-password-encrypted>{AES}stQ8+dVzw1jEDpF4xj+ub1m460793ijKqI0YBhpkZNE=</node-manager-password-encrypted>
<node-manager-username>weblogic</node-manager-username>
(2) <node-manager-password-encrypted>{AES}stQ8+dVzw1jEDpF4xj+ub1m460793ijKqI0YBhpkZNE=</node-manager-password-encrypted>
….
<embedded-ldap>
<name>1034</name>
(3) <credential-encrypted>{AES}OYLOL/6/sVdiwG/rkqTj8U2TdFUXIa9PgZRzWKlJqju1cVvUFKcWzqir1N4qtQHy</credential-encrypted>
</embedded-ldap>
<name>1034</name>
(3) <credential-encrypted>{AES}OYLOL/6/sVdiwG/rkqTj8U2TdFUXIa9PgZRzWKlJqju1cVvUFKcWzqir1N4qtQHy</credential-encrypted>
</embedded-ldap>
(1) 解密后的内容是WebLogic启动密码, (2), (3) 则为数字(似乎是随机的内容).
然后需要动用WebLogic自带的明文加密工具
weblogic.security.Encrypt
, 在新的Domain中得出这几个密码的新内容并替换到正确的位置中. 相关文档请访问 acle/docs/cd/E11035_01/wls100/admin_ref/utils.html#wp1209592.
如果boot.properties有类似问题, 使用相同方法处理后即可.
解决方法2: 替换新Domain中的 SerializedSystemIni.dat 为能正常运行的Domain中的相同文件, 此方法步骤最简单(不推荐, 可能有安全隐患).
恢复忘记了的WebLogic密码
分类: weblogic 2010-11-24 10:33 72人阅读 评论(0) 收藏 举报
原文地址:wwwblogs/alfredxiao/archive/2010/09/16/weblogic_lost_password.html
忘记或者丢失WebLogic管理员密码这样的事虽然不常碰到,但是也偶尔会有,如果碰着是你的生产环境或者其他重要环境,还是挺头疼的。但实际上也是有办法。
如果是WebLogic 8.1,那么照着以下的步骤做就可以了。
1. cd到你的域目录(domain home),如C:/bea/wls816/user_projects/domains/my_domain
2. 运行java -cp <weblogic_home>/weblogic81/server/lib/weblogic.jar weblogic.security.utils.AdminAccount adminuser adminpassword .
注意:你可以选择a). 像这里的这条命令一样,设置你WebLogic8.1产品安装路径下weblogic81/server/lib/weblogic.jar的全路径来设置CLASSPATH;b). 也可以在命令行窗口通过运行域目录下的d/sh来获得已经设置好的CLASSPATH。
2. 运行java -cp <weblogic_home>/weblogic81/server/lib/weblogic.jar weblogic.security.utils.AdminAccount adminuser adminpassword .
注意:你可以选择a). 像这里的这条命令一样,设置你WebLogic8.1产品安装路径下weblogic81/server/lib/weblogic.jar的全路径来设置CLASSPATH;b). 也可以在命令行窗口通过运行域目录下的d/sh来获得已经设置好的CLASSPATH。
参数第一个adminuser是你增加一个新用户的用户名;第二个参数adminpassword是该新用户的密码;第三个参数(一个.)是指当前目录(域目录)
3. rm myserver/ldap/DefaultAuthenticatormyrealmInit.initialized (Windows是del)
3. rm myserver/ldap/DefaultAuthenticatormyrealmInit.initialized (Windows是del)
4. rm boot.properties (如果有的话)
5. 重新启动你的Server(你也可以选择把刚才的新帐号和密码写入一个新的boot.properties文件后再启动),然后你可以用新帐号登录Admin Console,并重置原帐号的密码。
5. 重新启动你的Server(你也可以选择把刚才的新帐号和密码写入一个新的boot.properties文件后再启动),然后你可以用新帐号登录Admin Console,并重置原帐号的密码。
如果是WebLogic 9或者10,做法类似,步骤如下:
1. cd到你的域目录下的security,如C:/bea/wls103/user_projects/domains/my_domain/security
2. rm DefaultAuthenticatorInit.ldift
3. 运行java -cp <weblogic_home/wlserver_10.3/server/lib/weblogic.jar weblogic.security.utils.AdminAccount adminuser adminpassword .
这步跟上边WebLogic 8.1的第2步是一样的,参考上面的说明。
这步跟上边WebLogic 8.1的第2步是一样的,参考上面的说明。
这步会创建一个新的DefaultAuthenticatorInit.ldift文件
4. cd到<domain_home>/servers/<AdminServer>/data/ldap
5. rm DefaultAuthenticatormyrealmInit.initialized
5. rm DefaultAuthenticatormyrealmInit.initialized
6. 重启你的Server,用新帐号登录Admin Console,然后你就可以重置原帐号的密码了。
还有WebLogic本身也提供了一个比较简单的命令,但是这个命令是正向而不是反向的,即由密码到加密字符串,而不是解密。你需要用尝试常用的密码,然后比较密码加密串是不是boot.properties里面的值。该命令用法如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论