最近,DBA对oracle测试库的密码加上了安全认证,原来的测试数据库密码和用户名是一样的,现在密码必须要修改(系统比较老,环境为:weblogic81+oracle 9. 用的是portal domain). 数据库改了密码后,服务就启动不起来了,这样就不能直接在console里面修改了,只有到config.xml文件中进行修改.在config.xml文件中的连接池的密码都是加密的,型如:PasswordEncrypted="{3DES}ZoggSsTPrnoaWIW4+eIDgQ==".为了取得这个密文,我建了一个新的domain2,然后建立连接池,在domain2的config.xml中得到加密的密文,copy到portalDomain的config.xml相应的位置.搞定,启动weblogic...
但是还是不能建立数据库连接,报错如下:
at com.rsa.jsafe.JA_PKCS5Padding.a(Unknown Source)
at com.rsa.jsafe.JG_BlockCipher.decryptFinal(Unknown Source)
郁闷!...google了下,发现这个问题是在密码认证时出错.原来以为,这里的加密只是和原密码有关系,网上一个网友的评论:
JSAFE is an encryption/decryption engine for Java, developed by RSA. So, you can be sure that you have a problem with encryption/decryption whenever you encounter exceptions related to JSAFE.
All passwords in a WebLogic domain are encrypted by hashes in a file called SerializedSystemIni.dat. Read this tutorial to understand how WebLogic uses SerializedSystemIni.dat. If passwords that have been encrypted in one WebLogic domain are used in another WebLogic domain, then all the encrypted passwords will not be decrypted and the WebLogic servers will not start.
很清楚了,加密的时候不只和当前的密码有关系,还和当前domain有关系.所以直接copy密码肯定是不行的.
最简单的解决方案:
把PasswordEncrypted="{3DES}ZoggSsTPrnoaWIW4+eIDgQ==".换成Password="123456",后者写的是明文,启动的时候他们是同样的效果. 如果启动前congfig.xml中写的是明文,启动的过程中,weblogic会自动的把它转换成密文格式. 完毕!