使用WebLogic的客户端证书

2022-03-16 00:00:00 ssl client certificate java weblogic

背景:
我正在从事一个项目,涉及到客户端来验证自己(通过客户端证书)。我们正在尝试启动第三方应用程序,该应用程序首先验证客户端证书,然后启动其应用程序。
我们使用的是Java和SSL hanshake,我们的客户端服务器是WebLogic10.x。客户端证书为PKCS12格式(无法更改)
以下是用于提交证书的代码:

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控制台上配置客户密钥库),但似乎都不起作用。您知道为什么WebLogic会完全忽略SSL设置(即使我将keystore设置为不存在的文件,它也不会抛出错误)吗?System.setProperty for SSL在WebLogic上显示为无用!


解决方案

终于找到解决方案了!如果如上所述通过Java完成,WebLogic似乎会覆盖密钥库配置。对我起作用的是在web逻辑启动时在JVM级别上配置SSL设置。
要使其正常工作,我只需在WebLogic的启动脚本中添加以下Java选项:

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

重新启动Web-Logic,SSL此后一直运行良好:)

相关文章