You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用wlthint3client.jar实现WebLogic JNDI双向SSL认证的代码示例求助

wlthint3client.jar 实现WebLogic JNDI双向SSL认证方案

报错原因

wlthint3client.jar是WebLogic提供的轻量瘦客户端包,未实现全量客户端wlfullclient.jar中Environment类的SSL配置接口,直接调用setSSLClientTrustManager、loadLocalIdentity方法会抛出UnsupportedOperationException异常。

可用实现方案

瘦客户端需通过标准JSSE密钥库+WebLogic系统属性的方式配置双向SSL,具体步骤如下:

  1. 提前准备两类JKS密钥库文件:
    • 信任库:存储服务端CA根证书,示例文件名为trust.jks,记录访问密码
    • 身份库:存储客户端证书链及对应私钥,示例文件名为identity.jks,记录访问密码、私钥密码
  2. 代码中先配置SSL相关系统属性,再初始化JNDI上下文即可

示例代码

import javax.naming.InitialContext;
import java.util.Hashtable;

public class WlThinClientSslDemo {
    public static void main(String[] args) throws Exception {
        // 1. 配置SSL系统属性,也可通过JVM启动参数传入
        // 信任库配置
        System.setProperty("weblogic.security.SSL.trustedCAKeyStore", "/path/to/trust.jks");
        System.setProperty("weblogic.security.SSL.trustedCAKeyStorePasswd", "信任库密码");
        // 客户端身份库配置
        System.setProperty("weblogic.security.SSL.identityKeyStore", "/path/to/identity.jks");
        System.setProperty("weblogic.security.SSL.identityKeyStorePasswd", "身份库密码");
        System.setProperty("weblogic.security.SSL.identityKeyPasswd", "私钥密码");
        // 可选:配置SSL协议版本,按需调整
        System.setProperty("weblogic.security.SSL.protocolVersion", "TLSv1.2");
        // 可选:关闭主机名校验,测试环境可开,生产建议关闭
        System.setProperty("weblogic.security.SSL.ignoreHostnameVerification", "true");

        // 2. 初始化JNDI参数
        Hashtable<String, String> env = new Hashtable<>();
        env.put(InitialContext.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
        // 注意双向SSL要使用t3s协议,端口为WebLogic的SSL监听端口
        env.put(InitialContext.PROVIDER_URL, "t3s://weblogic服务端IP:SSL端口");

        // 3. 创建上下文,后续正常做JNDI lookup操作即可
        InitialContext context = new InitialContext(env);
        
        // 后续业务逻辑:比如lookup远程EJB之类的
        // Object remoteObj = context.lookup("远程资源JNDI名称");
    }
}

注意事项

  • 服务端WebLogic需提前配置好SSL监听、双向客户端证书校验规则
  • 密钥库版本需要和JDK、WebLogic版本兼容,避免出现密钥库读取异常
  • 生产环境建议将密钥库密码通过加密配置注入,不要明文写在代码中

内容的提问来源于stack exchange,提问作者param83

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:18:03