2013-02-26 180 views
1

背景:
我对涉及客户端(通过客户端证书)认证自身的一个项目工作。我们正在尝试启动第一方认证客户端证书并启动应用程序的第三方应用程序。
我们使用Java和SSL hanshake,而我们的客户端服务器是Weblogic 10.x.客户端证书是PKCS12格式(不能改变这一点)
这是呈现证书的一段代码:
使用客户端证书的Weblogic

System.setProperty("javax.net.ssl.keyStore","MyPath/cert.pfx"); 
System.setProperty("javax.net.ssl.keyStorePassword","MyPwd"); 
System.setProperty("javax.net.ssl.keyStoreType","PKCS12"); 
url.openConnection(); 

现在,这一切都工作得很好,从独立。当我们把这个放在weblogic上时,问题就开始了。有时会起作用,有时会返回“客户端证书不存在”(http 403.7)。我尝试了各种组合(包括在weblogic控制台上配置custome keystore),但似乎没有任何工作。任何想法为什么weblogic会完全忽略SSL设置(即使将密钥库设置为不存在的文件,它也不会抛出错误)?用于SSL的System.setProperty在weblogic上显得无用!

回答

1

终于找到了解决方案!如果通过Java完成Weblogic的话,Weblogic似乎会覆盖密钥库配置。这对我来说很有用,就是在Web逻辑启动时在JVM级别上配置SSL设置。
要使其工作,我只是说在启动脚本这些Java选项的WebLogic:

-Djavax.net.ssl.keyStore=MyPath/cert.pfx 
-Djavax.net.ssl.keyStoreType=MyPwd 
-Djavax.net.ssl.keyStorePassword=PKCS12 

重启动WebLogic和SSL以来一直致力于大呢:)

1

在WebLogic 12c中你还需要添加参数-DUseSunHttpHandler=true为了告诉WebLogic Server以使用Sun HTTP处理程序,而不是它自己的。因此,你需要以下Java VM参数:

-Djavax.net.ssl.keyStore=MyPath/cert.pfx 
-Djavax.net.ssl.keyStoreType=PKCS12 
-Djavax.net.ssl.keyStorePassword=MyPwd 
-DUseSunHttpHandler=true