Are you wanting to extract cert data on the client or the broker? The
broker already uses code like this to get cert data [1]. The problem in
your case is that the SSL handshake fails so the broker has no chance to
inspect the cert data on the connection.


Justin

[1]
https://github.com/apache/activemq-artemis/blob/main/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/CertificateUtil.java

On Thu, Apr 3, 2025 at 2:16 AM Shiv Kumar Dixit
<shivkumar.di...@it.eurofinseu.com.invalid> wrote:

> 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
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@activemq.apache.org
> For additional commands, e-mail: users-h...@activemq.apache.org
> For further information, visit: https://activemq.apache.org/contact
>
>

Reply via email to