JBoss ESB:将HTTPRouter与安全端点一起使用,而不使用密钥库

时间:2011-09-08 13:44:56

标签: java jboss jboss5.x esb

我正在尝试创建一个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操作适用于没有定义密钥库的安全端点?我定义端点的方式是否正确?

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

由于

1 个答案:

答案 0 :(得分: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