我使用ActiveMQ plugin用于Grails(2.4.x)并且它正在搞乱SSL连接。通过搞乱SSL连接,我的意思是它不允许客户端浏览器使用SSL连接到Grails应用程序。
任何尝试连接到Web应用程序的SSL端口(无论它设置为什么)都会导致浏览器报告ERR_SSL_PROTOCOL_ERROR
。
如果我禁用插件SSL工作正常。
我已经查看了插件源代码,但我没有看到任何应该这样做的内容。
我完全失败了,这让我很生气。我不确定我可以提供哪些其他信息来帮助其他人帮助我,但我希望那里的某个人可以指出某种ActiveMQ设置,我可以使用它来禁用这种奇怪的行为。< / p>
插件中包含的库如下:
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 :(得分:0)
事实证明这是因为Active MQ检测到“Bouncy Castle”安全提供程序是否在类路径上可用,并在创建代理时将其添加到第二个位置的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,并且不需要Active MQ的任何其他安全提供程序用于SSL连接,因为它无论如何都不会使用它们。