【问题标题】:JBoss ESB: Using HTTPRouter with a secure endpoint and no keystoreJBoss ESB:将 HTTPRouter 与安全端点和无密钥库一起使用
【发布时间】:2023-10-19 07:39:01
【问题描述】:

我正在尝试创建一个 HTTPRouter 操作(在 esb 内),它将一些 XML 发送到外部 URL。 URL 是安全的,但有一个我没有密钥库的自签名证书。下面是我编写的用于设置 HTTPRouter 的 XML。

http://pastebin.com/FmFYU5e4

在 ht.props 文件中只有一个属性集。我将协议套接字工厂定义为 SelfSignedSSLProtocolSocketFactoryBuilder。

#HttpProtocol Config...
protocol-socket-factory=org.jboss.soa.esb.http.protocol.SelfSignedSSLProtocolSocketFactoryBuilder

当我部署 ESB 时,我收到以下错误:

org.jboss.soa.esb.ConfigurationException: Failed to locate keystore '/keystore'

阅读有关该主题的各种论坛,似乎 HTTPRouter 操作需要定义一个密钥库文件。如前所述,我没有一个,因为外部端点不是由我自己创建或控制的。有没有办法让 HTTPRouter 操作适用于未定义密钥库的安全端点?我定义端点的方式是否正确?

非常感谢您提供的任何帮助!

谢谢

【问题讨论】:

    标签: java jboss jboss5.x esb


    【解决方案1】:

    没有密钥库就不能拥有 SelfSignedSSLProtocolSocketFactoryBuilder。使用 JDK keytool 命令创建一个自签名并将其放在正确的路径下:

    openssl genrsa -out cert.key 1024 && echo -ne "\n\n\n\n\n$HOSTNAME\nroot@$HOSTNAME\n" | openssl req -new -key cert.key -x509 -out cert.crt -days 999
    openssl x509 -outform der -in cert.crt -out cert.der
    keytool -import -file cert.der -alias root -keystore /cesta/ke/keystore.jks
    

    我不确定“root”别名。应该可以,但也许您需要不同的别名。更多详细配置方法(参数名称):http://www.java2s.com/Open-Source/Java-Document/JBoss/jbossesb-4.7/org/jboss/soa/esb/http/protocol/AbstractProtocolSocketFactoryBuilder.java.htm

    【讨论】:

    • 你好。感谢您的回复。在您指定的命令中,您指的是 cert.key 和 cert.crt。这些是由命令生成的吗?此外,您指定的 HOSTNAME 字符串是我试图指向的 URL 吗?正如我在描述中所说,我所拥有的只是外部 URL。我没有证书文件。
    • 好的,我已经解决了这个问题。我确实需要创建密钥库和信任库文件。我首先必须从我尝试发布到的 URL 中提取 .cer 文件。一旦我有了这个文件,我就可以创建密钥库和信任文件。我按照以下教程中概述的步骤进行操作:techbrainwave.com/?p=953 另外,我没有使用 SelfSignedSSLProtocolSocketFactoryBuilder,而是使用了 apache httpclient 中的 EasySSLProtocolSocketFactory。我目前收到 100 个代码,但我似乎正在进步!感谢 lpaz 强调对密钥库和信任库文件的需求。
    最近更新 更多