weblogic10.3单点登录问题处理经验分享

环境信息:JDK6_24,weblogic10.3

最近在weblogic10.3上发布应用,并集成cas单点登录后,登录时出现了问题,
具体表现为:

1.访问新应用
2.跳转到统一的login页面
3.登录后无法跳转至新应用页面
4.新应用后台日志不断输出如下内容
<Security> <BEA-090477> <Certificate chain received from testserver1.gmcc.net - 10.201.37.41 was not trusted causing SSL handshake failure.>



处理过程(该处理过程可以适用于检查与初始安装接入SSO的新应用):

1.检查新应用的cas配置
检查web.xml是否加入了cas的filter
2.检查证书是否成功导入JRE
使用命令: 
keytool -list -v -alias testserver1 -storepass changeit -keystore ${JRE_HOME}/lib/security/cacerts

3.检查weblogic SSL配置

进入Home >Summary of Servers >AdminServer的General Tab,确保“SSL Listen Port Enabled”为勾选状态;

进入Keystores Tab,确保“Java Standard Trust Keystore” 为${JRE_HOME}/lib/security/cacerts(应该跟添加jvm参数“-Dweblogic.security.TrustKeyStore”的效果一样)


除了步骤3,其它项均无问题,执行步骤3后问题依旧。

于是打开SSL调试信息(启动脚本中添加jvm参数“-Dssl.debug=true -Dweblogic.StdoutDebugEnabled=true”)

启动后可以看见如下日志:
<Error> <WebLogicServer> <BEA-000297> <Inconsistent security configuration, java.security.cert.CertificateParsingException: PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11> 
<Emergency> <Security> <BEA-090034> <Not listening for SSL, java.io.IOException: PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11.> 


在登录过后跳转时,出现如下异常日志:
<Debug> <SecuritySSL> <BEA-000000> <SSLSetup: loading trusted CA certificates> 
<Debug> <SecuritySSL> <BEA-000000> <Failure loading trusted CA list 
java.security.cert.CertificateParsingException: PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11 
at com.certicom.security.cert.internal.x509.X509V3CertImpl.<init>(Unknown Source) 
。。。省略。。。 
<Debug> <SecuritySSL> <BEA-000000> <Certificate chain is untrusted> 
<Debug> <SecuritySSL> <BEA-000000> <SSLTrustValidator returns: 16> 
<Debug> <SecuritySSL> <BEA-000000> <Trust status (16):  CERT_CHAIN_UNTRUSTED> 
<Debug> <SecuritySSL> <BEA-000000> <NEW ALERT with Severity: FATAL, Type: 42 
java.lang.Exception: New alert stack 
。。。省略。。。 


这说明weblogic不支持OID为1.2.840.113549.1.1.11的算法,即SHA256withRSA算法;
就是因为CA链中有SHA256withRSA算法的证书,因此导致认证失败。


这是JDK1.6.0_13的一个bug,出现在官方bug database上
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6832375
当时他们在JDK1.6.0_13上增加了几个证书
http://www.oracle.com/technetwork/java/javase/6u13-142696.html


因此,我们需要把使用SHA256withRSA算法的证书统统删掉,好在使用JDK1.6版本的keytools命令可以列出各个证书的算法。

我们列出所有的证书,把结果保存到文本文件里,然后通过查找工具,找出所有包含SHA256withRSA算法的证书别名。

有了别名,我们就可以使用如下命令逐个删除之:
keytool -delete -keystore ${JRE_HOME}/lib/security/cacerts -alias entrustrootcag2 -storepass changeit 
keytool -delete -keystore ${JRE_HOME}/lib/security/cacerts -alias thawteprimaryrootcag3 -storepass changeit 
keytool -delete -keystore ${JRE_HOME}/lib/security/cacerts -alias ttelesecglobalrootclass3ca -storepass changeit 
keytool -delete -keystore ${JRE_HOME}/lib/security/cacerts -alias ttelesecglobalrootclass2ca -storepass changeit 
keytool -delete -keystore ${JRE_HOME}/lib/security/cacerts -alias globalsignr3ca -storepass changeit 
keytool -delete -keystore ${JRE_HOME}/lib/security/cacerts -alias secomscrootca2 -storepass changeit 
keytool -delete -keystore ${JRE_HOME}/lib/security/cacerts -alias verisignuniversalrootca -storepass changeit 
keytool -delete -keystore ${JRE_HOME}/lib/security/cacerts -alias keynectisrootca -storepass changeit 
keytool -delete -keystore ${JRE_HOME}/lib/security/cacerts -alias geotrustprimarycag3 -storepass changeit 


重启weblogic后,问题得到解决

猜你喜欢

转载自t8500071.iteye.com/blog/1591659