【问题标题】:Connect to Tibco EMS using SSL java client使用 SSL java 客户端连接到 Tibco EMS
【发布时间】:2025-11-13 09:30:01
【问题描述】:

我们正在尝试使用 SSL(Java 客户端)通过以下代码连接到 Tibco EMS

factory = new com.tibco.tibjms.TibjmsConnectionFactory(serverUrl);
connection = factory.createConnection(userName,password);

我收到此错误:

无法通过 SSL 连接到 [ssl://host:8132]:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求的有效证书路径目标

如何指定请求目标的认证路径? 我有 EMSSSL.SetTargetHostName("UAT_5653") 的 C# 客户端代码,但在 java JMS 中不知道如何设置

com.tibco.tibjms.TibjmsSSL.setExpectedHostName(ssl_hostname);
com.tibco.tibjms.TibjmsSSL.setIdentity(ssl_identity,ssl_key,ssl_password);
com.tibco.tibjms.TibjmsSSL.setVerifyHostName(false);
com.tibco.tibjms.TibjmsSSL.addTrustedCerts(cert);

【问题讨论】:

  • 错误与证书路径有关。 “cert”变量中有什么?它应该是证书文件的路径,例如 com.tibco.tibjms.TibjmsSSL.addTrustedCerts("c:\\server_cert.pem");您可能还需要将证书添加到 java keystore javarevisited.blogspot.com/2012/03/…
  • 感谢大卫,我通过 factory.setSSLEnableVerifyHost(false) 禁用了验证主机; factory.setSSLEnableVerifyHostName(false);,它给我建立连接
  • @Rudy 禁用主机验证意味着您的 SSL 连接并不安全。您很容易成为中间人攻击的受害者。

标签: java ssl-certificate jms tibco-ems


【解决方案1】:

这些参数可以在工厂对象中设置,如:

TibjmsConnectionFactory factory = new com.tibco.tibjms.TibjmsConnectionFactory(serverUrl);
factory.setSSLExpectedHostName(ssl_expected_hostname);
factory.setSSLIdentity(ssl_identity,ssl_key,ssl_password);
factory.setSSLEnableVerifyHostName(false);
factory.setSSLTrustedCertificate(cert);
Connection connection = factory.createConnection(userName,password);

有关更多信息,您可以查看docs

【讨论】:

  • 嗨@pascalre,我们正在尝试使用 SSL 连接到 JMS 服务器。我们遵循相同的行,我们收到以下错误,请您帮助我们 org.apache.kafka.connect.errors.ConnectException:无法启动 JMS 源任务:1 无法建立 JMS 连接:2 无法建立JMS 连接:无法连接到位于以下位置的任何服务器:ssl://buwnwfblapp01.nw1.nwestnetwork.com:7243,ssl://buwnwfblapp01.nw1.nwestnetwork.com:7243...
  • @Thebestshoot 您可以通过添加以下两行代码来获取有关您的问题的更多详细信息: factory.setSSLTrace(true); factory.setSSLDebugTrace(true);