Hi Justin, Thanks for input. Also, we came across this link https://stackoverflow.com/questions/9777864/how-can-i-get-the-client-certificate-in-netty-handler-to-identify-user where it seems we can extract SSL information from ChannelHandlerContext ctx object. Do you see if it is feasible?
ChannelHandlerContext ctx = ... SslHandler sslhandler = (SslHandler) ctx.channel().pipeline().get("ssl"); sslhandler.engine().getSession().getPeerCertificateChain()[0].getSubjectDN()); Best Regards Shiv -----Original Message----- From: Justin Bertram <jbert...@apache.org> Sent: 28 March 2025 10:42 PM To: users@activemq.apache.org Subject: Re: Additional Info on certificate based authentication errors Unverified Sender: The sender of this email has not been verified. Review the content of the message carefully and verify the identity of the sender before acting on this email: replying, opening attachments or clicking links. One option to improve this situation for Core [1] and OpenWire [2] clients is to specify the "local" port which will then be printed on in broker log along with the IP address. By default both clients use a random, available port which makes correlation difficult, if not impossible, in my circumstances. Of course, every client which does this will need to use a unique port to ensure there are no conflicts if they are all running on the same machine. Let me know where you reached out to the Netty community and I'll follow along. Justin [1] https://activemq.apache.org/components/artemis/documentation/latest/configuring-transports.html#configuring-the-transport#:~:text=localPort [2] https://activemq.apache.org/components/classic/documentation/how-do-i-define-a-local-address-and-local-port-for-tcp-or-ssl On Fri, Mar 28, 2025 at 10:12 AM Shiv Kumar Dixit <shivkumar.di...@it.eurofinseu.com.invalid> wrote: > Hello Justin, > Thanks for the response. > > We have clients using Core/AMQP/OpenWire with certificates. > > Passing SSL debugging flag is good idea but given we have many clients > using broker concurrently, I fear we will have lot of logs and it will > be difficult to analyse. I am also checking with netty community if > they can provide some input. > > Best Regards > Shiv > > -----Original Message----- > From: Justin Bertram <jbert...@apache.org> > Sent: 28 March 2025 08:33 AM > To: users@activemq.apache.org > Subject: Re: Additional Info on certificate based authentication > errors > > > > Unverified Sender: The sender of this email has not been verified. > Review the content of the message carefully and verify the identity of > the sender before acting on this email: replying, opening attachments > or clicking links. > > > Unfortunately I don't think the broker itself will be able to provide > additional information because it simply doesn't have it. The SSL > handshake is delegated by Netty to the JDK (or potentially to OpenSSL) > and it's the first thing done when the client connects. It happens > before the messaging protocol handshake takes place so there's > definitely no way to get the client ID because it hasn't been sent > yet. Netty only provides a Throwable [1] and we print the relevant > information from it. > > It's possible you could get some relevant information from Java's SSL > debug logging by passing something like > -Djavax.net.debug=ssl:handshake to the JVM at startup. > > What kind of client are you using to connect to the broker in this case? > > > Justin > > [1] > > https://gith/ > ub.com%2Fapache%2Factivemq-artemis%2Fblob%2Fc4b315ba0c1fafbe2d2c3ebf0c > dd84f921f42b5a%2Fartemis-server%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fa > ctivemq%2Fartemis%2Fcore%2Fremoting%2Fimpl%2Fnetty%2FNettyAcceptor.jav > a%23L1014&data=05%7C02%7C%7C2d25dad5c33e4432379808dd6e1bbbe3%7C1a1dce2 > 021b14beaa9d2130e9f1f6e2f%7C0%7C0%7C638787787610427088%7CUnknown%7CTWF > pbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsI > kFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=nJBF0dMqmOiPJdlUMBj > 3q3Ia01NII0ykmP6XQisV%2Bao%3D&reserved=0 > > On Thu, Mar 27, 2025 at 2:03 AM Shiv Kumar Dixit > <shivkumar.di...@it.eurofinseu.com.invalid> wrote: > > > Hi team, > > Currently we are using Apache Artemis 2.37.0. We have > > certificate-based customers. Many times, we see errors like below in > broker log: > > > > AMQ222208: SSL handshake failed for client from /a.b.c.d:53838: > > javax.net.ssl.SSLHandshakeException: Empty server certificate chain. > > > > AMQ222208: SSL handshake failed for client from /a.b.c.d:59132: > > java.security.cert.CertificateExpiredException: NotAfter: Tue Mar 25 > > 00:00:11 IST 2025 > > > > AMQ224088: Timeout (10 seconds) on acceptor "artemis" during > > protocol handshake with /a.b.c.d:62403 has occurred. > > > > Here we only get customer IP along with error message. In real > > world, we have many customer applications running from same IP but > > not all use expired certificate or invalid certificate. We may have > > only of such misbehaving client. Troubleshooting such cases require > > validating all customer applications on single IP to trace the > > issue. It is very time consuming as we need to check customer > > configuration, start/stop applications to see how it impacts the broker > > error etc. > > > > Can we get some additional information such as client id, > > certificate CN details or any other certificate information which > > can help us in identifying the erring client faster? If there is any > > log level change which can enable to put such information in broker log > > will be helpful. > > > > Thanks > > Shiv > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@activemq.apache.org > For additional commands, e-mail: users-h...@activemq.apache.org For > further information, visit: > https://acti/ > vemq.apache.org%2Fcontact&data=05%7C02%7C%7C2d25dad5c33e4432379808dd6e > 1bbbe3%7C1a1dce2021b14beaa9d2130e9f1f6e2f%7C0%7C0%7C638787787610439797 > %7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsI > lAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=XRb > daTuyVGNgBH%2FDdvihBuYzv%2BiATnFUfURp8IU2L%2B4%3D&reserved=0 > >