gpt4 book ai didi

使用 SSL 连接到 Tibco EMS 时出现 javax.crypto.BadPaddingException

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:23 25 4
gpt4 key购买 nike

本主题是上一个案例的延续: How to setup JMS bridge to ActiveMQ on Weblogic 11g但现在使用 Tibco 作为源 JMS 桥目的地。

尝试从 JMS 网桥配置连接到 Tibco EMS 时出现以下错误:

javax.jms.JMSSecurityException: Error occured while reading identity data: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded
at com.tibco.tibjms.TibjmsSSL._identityFromStore(TibjmsSSL.java:2664)
at com.tibco.tibjms.TibjmsSSL.createIdentity(TibjmsSSL.java:2569)
at com.tibco.tibjms.TibjmsxLinkSSL._initSSL(TibjmsxLinkSSL.java:309)
at com.tibco.tibjms.TibjmsxLinkSSL.connect(TibjmsxLinkSSL.java:390)
at com.tibco.tibjms.TibjmsConnection._create(TibjmsConnection.java:1274)
at com.tibco.tibjms.TibjmsConnection.<init>(TibjmsConnection.java:4100)
at com.tibco.tibjms.TibjmsQueueConnection.<init>(TibjmsQueueConnection.java:36)
at com.tibco.tibjms.TibjmsxCFImpl._createImpl(TibjmsxCFImpl.java:200)
at com.tibco.tibjms.TibjmsxCFImpl._createConnection(TibjmsxCFImpl.java:253)
at com.tibco.tibjms.TibjmsQueueConnectionFactory.createQueueConnection(TibjmsQueueConnectionFactory.java:87)
at weblogic.jms.adapter.JMSBaseConnection.startInternal(JMSBaseConnection.java:364)
at weblogic.jms.adapter.JMSBaseConnection.start(JMSBaseConnection.java:244)
at weblogic.jms.adapter.JMSManagedConnectionFactory.createManagedConnection(JMSManagedConnectionFactory.java:190)

jndi.properties 内容:

com.tibco.tibjms.naming.security_protocol=ssl
com.tibco.tibjms.naming.ssl_enable_verify_host=false
com.tibco.tibjms.naming.ssl_enable_verify_hostname=false
com.tibco.tibjms.naming.ssl_vendor=j2se
com.tibco.tibjms.naming.ssl_expected_hostname=test
com.tibco.tibjms.naming.ssl_identity=/home/oracle/keys/test.p12
com.tibco.tibjms.naming.ssl_password=pass

#DEBUG
com.tibco.tibjms.naming.ssl_trace=true
com.tibco.tibjms.naming.ssl_debug_trace=true

com.tibco.tibjms.debug=true
com.tibco.tibjms.ssl.debug.trace=true
com.tibco.tibjms.ssl.trace=true

编辑:我已经找到了异常的根本原因:

// sun.security.rsa.RSAPadding.unpadV15()
if (paramArrayOfByte[(i++)] != 0) {
throw new BadPaddingException("Data must start with zero");
}

有什么想法吗?

最佳答案

您需要了解连接到 TIBCO EMS 分为 2 个阶段(如果只使用私有(private) API,当然可以是 1 个步骤),第一个阶段是创建到 EMS 的 JNDI 连接并查找连接工厂定义,这是当您在 jndi.properties 中设置的属性变得有用。

查找返回后,可以使用检索到的 ConnectionFactory 对象创建实际连接。您面临的问题是在此阶段没有为客户端私钥提供密码。

如果您已阅读文档,EMS 将尝试使用您传递给 ConnectionFactory.createConnection(String userName, String password) 的密码。应该有一个位置/属性文件,您可以在这些托管环境中为 ConnectionFactory.createConnection() 设置密码。

而且我想这是避免在托管环境中调用私有(private) API(例如 com.tibco.tibjms.TibjmsSSL.setPassword(pass))的唯一方法。

关于使用 SSL 连接到 Tibco EMS 时出现 javax.crypto.BadPaddingException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24676937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com