Esri / rabbitmq-for-geoevent

ArcGIS GeoEvent Extension for Server sample RabbitMQ connectors for connecting to RabbitMQ message servers.
Apache License 2.0
3 stars 4 forks source link

How to connect to a queue with SSL certificate #6

Open LuisRguezEsriSpain opened 5 years ago

LuisRguezEsriSpain commented 5 years ago

Hi,

How can I connect to a queue that doesn't require user and password but it uses a SSL certificate?

On geoevent server I have installed the SSL certificate (p12 file). Then I have set up a RabbitMQ input. When I start the input this error happens:

2019-04-01T16:34:19,936 | ERROR | Thread-106       | RabbitMQInboundTransport         | 454 - com.esri.geoevent.transport.rabbitmq-transport - 10.6.1 | Connection to rabbit@ cannot be established. Error: Received fatal alert: bad_certificate.
2019-04-01T16:34:25,099 | ERROR | Thread-106       | ConnectionHandler                | 54 - com.esri.ges.framework.messaging.jms-messaging - 10.6.0 | Failed to create connection cxn-111
javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) [?:?]
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:154) [?:?]
    at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:2033) [?:?]
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1135) [?:?]
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385) [?:?]
    at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:757) [?:?]
    at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123) [?:?]
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) [?:?]
    at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) [?:?]
    at java.io.DataOutputStream.flush(DataOutputStream.java:123) [?:?]
    at com.rabbitmq.client.impl.SocketFrameHandler.sendHeader(SocketFrameHandler.java:129) [454:com.esri.geoevent.transport.rabbitmq-transport:10.6.1]
    at com.rabbitmq.client.impl.SocketFrameHandler.sendHeader(SocketFrameHandler.java:134) [454:com.esri.geoevent.transport.rabbitmq-transport:10.6.1]
    at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:278) [454:com.esri.geoevent.transport.rabbitmq-transport:10.6.1]
    at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:617) [454:com.esri.geoevent.transport.rabbitmq-transport:10.6.1]
    at net.jodah.lyra.internal.ConnectionHandler$3.call(ConnectionHandler.java:243) [454:com.esri.geoevent.transport.rabbitmq-transport:10.6.1]
    at net.jodah.lyra.internal.ConnectionHandler$3.call(ConnectionHandler.java:236) [454:com.esri.geoevent.transport.rabbitmq-transport:10.6.1]
    at net.jodah.lyra.internal.RetryableResource.callWithRetries(RetryableResource.java:51) [454:com.esri.geoevent.transport.rabbitmq-transport:10.6.1]
    at net.jodah.lyra.internal.ConnectionHandler.createConnection(ConnectionHandler.java:236) [454:com.esri.geoevent.transport.rabbitmq-transport:10.6.1]
    at net.jodah.lyra.internal.ConnectionHandler.createConnection(ConnectionHandler.java:119) [454:com.esri.geoevent.transport.rabbitmq-transport:10.6.1]
    at net.jodah.lyra.Connections.create(Connections.java:68) [454:com.esri.geoevent.transport.rabbitmq-transport:10.6.1]
    at com.esri.geoevent.transport.rabbitmq.RabbitMQConnectionBroker$RabbitMQConnectionMonitor.run(RabbitMQConnectionBroker.java:165) [454:com.esri.geoevent.transport.rabbitmq-transport:10.6.1]
    at java.lang.Thread.run(Thread.java:748) [?:?]

Regards,

Luis

jdelgadillo commented 5 years ago

@LuisRguezEsriSpain I'm afraid this will require more modifications to the RabbitMQ transport so that it knows how to use the certificate. The current RabbitMQ implementation does not support certificate authentication.