Redhat Jboss AMQ 7.0.1证书基础身份验证失败

时间:2017-09-11 18:41:17

标签: jboss-amq

我正在尝试为Jboss AMQ 7.0.1实现证书基础身份验证 我根据AMQ示例设置了客户端和代理端,并且#34; ssl-enabled-dual-authentication" 但我收到了以下错误

  

[org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager]   无法验证用户:   javax.security.auth.login.FailedLoginException:User为null

我正在尝试使用Apache Qpid AMQP1.0客户端。 虽然我已经配置了证书基础登录配置,但似乎是jaas

  

PropertiesLoginModule

正在调用

以下是服务器堆栈跟踪。

  

14:24:03,324调试   [org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager]   无法验证用户:   javax.security.auth.login.FailedLoginException:User为null           在org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule.login(PropertiesLoginModule.java:89)   [ARTEMIS - 服务器 - 2.0.0.amq-700008-红帽-2.jar:2.0.0.amq-700008-红帽-2]           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[rt.jar:1.8.0_131]           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)   [rt.jar中:1.8.0_131]           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)   [rt.jar中:1.8.0_131]           at java.lang.reflect.Method.invoke(Method.java:498)[rt.jar:1.8.0_131]           在javax.security.auth.login.LoginContext.invoke(LoginContext.java:755)   [rt.jar中:1.8.0_131]           在javax.security.auth.login.LoginContext.access $ 000(LoginContext.java:195)   [rt.jar中:1.8.0_131]           在javax.security.auth.login.LoginContext $ 4.run(LoginContext.java:682)   [rt.jar中:1.8.0_131]           在javax.security.auth.login.LoginContext $ 4.run(LoginContext.java:680)   [rt.jar中:1.8.0_131]           at java.security.AccessController.doPrivileged(Native Method)[rt.jar:1.8.0_131]           在javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)   [rt.jar中:1.8.0_131]           在javax.security.auth.login.LoginContext.login(LoginContext.java:587)   [rt.jar中:1.8.0_131]           at org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager.getAuthenticatedSubject(ActiveMQJAASSecurityManager.java:185)   [ARTEMIS - 服务器 - 2.0.0.amq-700008-红帽-2.jar:2.0.0.amq-700008-红帽-2]           at org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager.validateUser(ActiveMQJAASSecurityManager.java:94)   [ARTEMIS - 服务器 - 2.0.0.amq-700008-红帽-2.jar:2.0.0.amq-700008-红帽-2]           at org.apache.activemq.artemis.core.security.impl.SecurityStoreImpl.authenticate(SecurityStoreImpl.java:128)   [ARTEMIS - 服务器 - 2.0.0.amq-700008-红帽-2.jar:2.0.0.amq-700008-红帽-2]           at org.apache.activemq.artemis.protocol.amqp.broker.AMQPConnectionCallback.isSupportsAnonymous(AMQPConnectionCallback.java:104)   [ARTEMIS-AMQP - 协议 - 2.0.0.amq-700008-红帽-2.jar:]           at org.apache.activemq.artemis.protocol.amqp.broker.AMQPConnectionCallback.getSASLMechnisms(AMQPConnectionCallback.java:92)   [ARTEMIS-AMQP - 协议 - 2.0.0.amq-700008-红帽-2.jar:]           at org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext.onAuthInit(AMQPConnectionContext.java:315)   [ARTEMIS-AMQP - 协议 - 2.0.0.amq-700008-红帽-2.jar:]           at org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.dispatchAuth(ProtonHandler.java:309)   [ARTEMIS-AMQP - 协议 - 2.0.0.amq-700008-红帽-2.jar:]           在org.apache.activemq.artemis.protocol.amqp.proton.handler.ProtonHandler.inputBuffer(ProtonHandler.java:204)   [ARTEMIS-AMQP - 协议 - 2.0.0.amq-700008-红帽-2.jar:]           at org.apache.activemq.artemis.protocol.amqp.proton.AMQPConnectionContext.inputBuffer(AMQPConnectionContext.java:120)   [ARTEMIS-AMQP - 协议 - 2.0.0.amq-700008-红帽-2.jar:]           at org.apache.activemq.artemis.protocol.amqp.broker.ActiveMQProtonRemotingConnection.bufferReceived(ActiveMQProtonRemotingConnection.java:138)   [ARTEMIS-AMQP - 协议 - 2.0.0.amq-700008-红帽-2.jar:]           at org.apache.activemq.artemis.core.remoting.server.impl.RemotingServiceImpl $ DelegatingBufferHandler.bufferReceived(RemotingServiceImpl.java:628)   [ARTEMIS - 服务器 - 2.0.0.amq-700008-红帽-2.jar:2.0.0.amq-700008-红帽-2]           at org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:69)   [ARTEMIS核 - 客户2.0.0.amq-700008-红帽-2.jar:2.0.0.amq-700008-红帽-2]           at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.handler.codec.ByteToMessageDecoder.handlerRemoved(ByteToMessageDecoder.java:219)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.DefaultChannelPipeline.callHandlerRemoved0(DefaultChannelPipeline.java:631)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.DefaultChannelPipeline.remove(DefaultChannelPipeline.java:468)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           在io.netty.channel.DefaultChannelPipeline.remove(DefaultChannelPipeline.java:428)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at org.apache.activemq.artemis.core.protocol.ProtocolHandler $ ProtocolDecoder.decode(ProtocolHandler.java:185)   [ARTEMIS - 服务器 - 2.0.0.amq-700008-红帽-2.jar:2.0.0.amq-700008-红帽-2]           at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at org.apache.activemq.artemis.core.protocol.ProtocolHandler $ ProtocolDecoder.channelRead(ProtocolHandler.java:128)   [ARTEMIS - 服务器 - 2.0.0.amq-700008-红帽-2.jar:2.0.0.amq-700008-红帽-2]           at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           在io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1066)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:900)[netty-all-4.1.5.Final-redhat-1.jar:4.1.5.Final-redhat-1]           at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.DefaultChannelPipeline $ HeadContext.channelRead(DefaultChannelPipeline.java:1334)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.epoll.AbstractEpollStreamChannel $ EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:972)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:386)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           在io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:302)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           at io.netty.util.concurrent.SingleThreadEventExecutor $ 5.run(SingleThreadEventExecutor.java:873)   [网状-全4.1.5.Final-红帽-1.jar:4.1.5.Final-红帽-1]           在java.lang.Thread.run(Thread.java:748)[rt.jar:1.8.0_131]

1 个答案:

答案 0 :(得分:1)

AMQP客户端未实现基于证书的身份验证。 AMQP客户端的身份验证是通过SASL实现的,唯一实现的SASL机制是PLAIN和ANONYMOUS。我不知道支持通过SSL证书进行身份验证的SASL机制。

要明确的是,目前基于证书的身份验证是针对“核心”,OpenWire,STOMP和& MQTT客户端(均未使用SASL)。