2016-02-04 66 views
0

我爲Grails(2.4.x)使用​​ActiveMQ plugin,它與SSL連接搞混了。通過搞亂SSL連接,我的意思是它不允許客戶端瀏覽器使用SSL連接到Grails應用程序。Grails的ActiveMQ插件接管SSL連接?

任何試圖連接到Web應用程序的SSL端口(無論它設置爲什麼)都會導致瀏覽器報告ERR_SSL_PROTOCOL_ERROR

如果我禁用插件SSL工作得很好。

我回顧了插件源代碼,我沒有看到任何應該做這件事的東西。

我在一個完整的和完全的損失,這讓我發瘋。我不確定我可以提供哪些其他信息來幫助其他人幫助我,但我希望有人在那裏指出我可以使用某種ActiveMQ設置來禁用這種奇怪的行爲。

從插件包含的庫如下:

activemq-broker-5.10.1.jar 
activemq-client-5.10.1.jar 
activemq-jms-pool-5.10.1.jar 
activemq-openwire-legacy-5.10.1.jar 
activemq-pool-5.10.1.jar 
activemq-spring-5.10.1.jar 

回答

0

事實證明,這是因爲Active MQ檢測是否「充氣城堡」安全供應商可在類路徑上,將其添加到java.security.Security供應商在創建代理時處於第二個位置。

不幸的是,Active MQ中沒有禁用此功能的選項,並且在JIRA中對此進行了簡要討論,並確定這絕不是一種選擇。

由於此項目也使用Grails的crypto:2.0插件,因此它正在爲JVM加載Bouncy Castle安全提供程序。作爲一個獨立的應用程序,這對Active MQ來說很好,但是當嵌入到Tomcat中時,這會導致SSL出現問題。不確定Bouncy Castle服務提供商爲什麼沒有正確處理SSL TLS,但將以下內容添加到BootStrap.groovy將其從提供商中刪除並修復了問題。

java.security.Security.removeProvider('BC')

在這個項目中,我們使用ActiveMQ的虛擬機中,並沒有必要爲主動MQ任何額外的安全提供者,因爲它不會使用反正他們爲SSL連接使用。