Hi,

I am working with ActiveMQ 5.11 and have a question about client
certificates when WebSockets are in use.  I'm specifically using the wss://
connector.

My goal is to achieve client-certificate (mutual) authentication over each
of the ssl://, amqp+ssl://, and wss:// transports.  I've been able to do
this in the latter two cases by using wantClientAuth on the transport config
and providing a BrokerPlugin and BrokerFilter that override the
addConnection(ConnectionContext, ConnectionInfo) methods and retrieve the
credentials int hat method.  Peer certificates in these cases are retrieved
via casting ConnectionInfo's getTransportContext() into an array of
X509Certificate objects, representing the peer cert chain.

In the websocket case, however, getTransportContext() does not return the
peer certs, and my custom login module fails to see credentials to
authenticate the user.

Is it possible to retrieve the peer certificate chain in this case?  Since
the websocket's handshake and subsequent upgrade request are indirect
compared to the other two transports, I'm guessing that the peer certs are
exchanged during TLS handshake and are lost when the session upgrade occurs,
looking at classes like WSServlet (which passes nothing from the
HttpServletRequest to the StompSocket it creates), and that further, because
the upgrade occurs, there is no real tracking of the initial connection that
exchanged the certs in the first place, making it impossible to dig them out
via some other mechanism.  Is that accurate?

Thanks,
Steve



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Stomp-WebSockets-and-client-certificates-tp4702673.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to