【发布时间】:2011-09-16 19:29:27
【问题描述】:
我正在尝试从自签名证书创建密钥库和信任库文件,用于部署在 JBoss ESB 中的 HTTPRouter 操作。我使用 openssl 检索感兴趣的证书,并使用以下命令生成了一个密钥库文件和一个信任库文件:
keytool -import -alias ejb-ssl -file cert.der -keystore cert.truststore
keytool -import -alias ejb-ssl -file cert.der -keystore cert.keystore -trustcacerts
在生成密钥库和信任库文件之前,我将证书转换为 X509 格式,否则 keytool 实用程序无法工作,返回异常消息“输入不是 x.509 证书”异常。要转换感兴趣的证书,我使用以下命令:
openssl x509 -in cert.cer -outform DER -out cert.der
然后我将这些文件复制到我的 ESB 的“esbcontent/META-INF”文件夹中。以下是我为 HTTPRouter 操作设置的属性
#Configurators
configurators=HttpProtocol
#HttpProtocol Config...
protocol-socket-factory=org.jboss.soa.esb.http.protocol.SelfSignedSSLProtocolSocketFactoryBuilder
keystore=/META-INF/keystore/cert.keystore
keystore-passw=password
truststore=/META-INF/truststore/cert.truststore
truststore-passw=password
部署 ESB 时出现以下错误:
Caused by: org.jboss.soa.esb.ConfigurationException: Invalid 'keystore' config. Must be valid URL.
查看从第三方网络服务检索到的证书,所有 URL 看起来都正常。有谁知道为什么 JBoss 不接受生成的密钥库中的 URL?我开始把头发扯下来了!
另外,我一直在尝试将 org.apache.commons.httpclient.contrib.ssl.EasySSLProtocolSocketFactory 用于协议套接字工厂。使用它时,ESB 部署正常。但是,HTTPRouter 似乎不会将请求发送到第三方 Web 服务。我用SoapUI建立web服务没问题,所以我认为是我的HTTPRouter动作配置有问题。
非常感谢您提供的任何帮助!
【问题讨论】:
标签: java ssl jboss jboss5.x esb