2011-09-08 62 views
1

我正在嘗試創建一個將某些XML發送到外部URL的HTTPRouter操作(在一個esb中)。該URL是安全的,但有一個自簽名證書,我沒有密鑰庫。以下是我正在編寫的用於設置HTTPRouter的XML。JBoss ESB:將HTTPRouter與安全端點一起使用並且沒有密鑰庫

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

你不能有SelfSignedSSLProtocolSocketFactoryBuilder沒有密鑰庫。創建自簽署使用JDK keytool命令之一,並把它放在正確的路徑:

openssl genrsa -out cert.key 1024 && echo -ne "\n\n\n\n\n$HOSTNAME\[email protected]$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 

我不知道關於「根」的別名。應該可以工作,但也許你需要不同的別名。更多細節如何配置(參數名稱):http://www.java2s.com/Open-Source/Java-Document/JBoss/jbossesb-4.7/org/jboss/soa/esb/http/protocol/AbstractProtocolSocketFactoryBuilder.java.htm

+0

嗨lzap。感謝您的迴應。在您指定的命令中,您引用了cert.key和cert.crt。這些是由命令產生的嗎?另外,您指定的HOSTNAME字符串是我嘗試指向的URL?正如我在我的描述中所說的,我擁有的只是外部URL。我沒有它的證書文件。 – ScreamingMage

+0

好吧,我已經解決了這個問題。我確實需要創建密鑰庫和信任庫文件。我首先必須從我嘗試POST的URL中提取.cer文件。一旦我有了這個文件,我就可以創建密鑰庫和信任文件。我遵循下面的教程中概述的步驟: http://www.techbrainwave.com/?p=953 此外,而不是使用SelfSignedSSLProtocolSocketFactoryBuilder,我用EasySSLProtocolSocketFactory在apache httpclient中找到。我目前得到了100個代碼,但我似乎正在進步! 感謝lpaz突出顯示了對密鑰庫和信任庫文件的需求。 – ScreamingMage

+0

對不起,取消訂單。我很高興你能解決這個問題。 – lzap

相關問題