Grails 的 ActiveMQ 插件接管 SSL 连接?
ActiveMQ plugin for Grails taking over SSL connections?
我正在为 Grails (2.4.x) 使用 ActiveMQ plugin,它会干扰 SSL 连接。通过搞乱 SSL 连接,我的意思是它不允许客户端浏览器使用 SSL 连接到 Grails 应用程序。
任何尝试连接到 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
事实证明这是因为 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 连接,因为无论如何它都不会使用它们。
我正在为 Grails (2.4.x) 使用 ActiveMQ plugin,它会干扰 SSL 连接。通过搞乱 SSL 连接,我的意思是它不允许客户端浏览器使用 SSL 连接到 Grails 应用程序。
任何尝试连接到 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
事实证明这是因为 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 连接,因为无论如何它都不会使用它们。