I'm not sure what would have changed in those versions to impact performance in the way you're observing. However, the fact that it's no longer a problem in the latest release means I'm not going to invest much time into further investigation.
That said, I wanted to clarify a few points: - If the SSL *handshake* is failing then the connection isn't even making it to the stage where the broker is verifying the certificate via the CertificateLoginModule or enforcing role-based security. Given that, the authentication and authorization cache which I mentioned in my previous email is not involved. Generally speaking, you can read more about this caching in the documentation [1]. - The broker delegates all the real SSL/TLS work to either the JDK or to OpenSSL based on the value of the sslProvider URL parameter on your acceptor [2]. By default, it delegates to the JDK. However, you would probably get better performance if you set sslProvider=OPENSSL and deployed the proper tcnative jar from Netty [3]. Justin [1] https://activemq.apache.org/components/artemis/documentation/latest/security.html [2] https://activemq.apache.org/components/artemis/documentation/latest/configuring-transports.html#configuring-netty-ssl [3] https://netty.io/wiki/forked-tomcat-native.html On Tue, Aug 22, 2023 at 4:37 AM Shiv Kumar Dixit <shivkumardi...@eurofins.com.invalid> wrote: > Hi Justin, > We are using certificate based authentication. > > Below is the details of issue we faced with Artemis 2.27.1. > 1. Host A has 10 client applications who use certificate based > authentication. Most of them are using OpenWire protocol. Some are AMQP and > core based as well. > 2. 8 of them are configured correctly to pull correct client certificate > and present to broker. These result in successful SSL handshake and > connections are made. They are able to consume messages without issue. > 3. Many times they disconnect due to time out or broker restart or > customer application restart etc. but connect back to broker and message > consumption continues without issue. > 4. 2 of them have not configured SSL correctly or have wrong/invalid > certificate and they try to connect to broker. > 5. Broker throws SSL handshake error and rejects connection. As these > listener keep running hence keep generating this connection issue. > 6. Broker memory consumption increases and it also slows down a bit. > 7. When any valid connection times out (from previous 8 good clients), > they are now not able to connect back to broker as invalid connection > attempts are too much and good clients get SSL handshake error with > connection timeout. > 8. Now this impacts those 8 good clients which were working fine before 2 > bad clients started creating issue. > 9. Similar behavior was not seen in Artemis 2.26.0 or Artemis 2.29.0+. > Here broker gets a hit due to invalid connection attempts, slows down a bit > but continue to support good connection. > > Do you have some suggestion as how to handle such case in certificate > based authentication? > > Also regarding the caching of good and bad connection, where is this > setting defined in broker configuration? > > Thanks > Shiv > -----Original Message----- > From: Justin Bertram <jbert...@apache.org> > Sent: Monday, August 21, 2023 7:40 PM > To: users@activemq.apache.org > Subject: Re: Pre-authentication with Broker > > > > CAUTION: EXTERNAL EMAIL - Sent from an email domain that is not formally > trusted by Eurofins. > > Do not click on links or open attachments unless you recognise the sender > and are certain that the content is safe. > > Can you elaborate on the nature of the bottleneck which is preventing new, > good connections, etc.? Is it related to CPU, network bandwidth, or > something internal to the code, etc.? > > By default the broker caches the result of both successful and failed > authentication in order to reduce strain on the broker and any underlying > systems (e.g. LDAP). Have you disabled this caching? > > You mention that "some broker versions (e.g. 2.27.1) are very sensitive." > Does that mean that other versions are *not* sensitive in the same way? If > so, which versions? > > Ultimately just about any software serving clients on a network is > susceptible to denial-of-service (i.e. DOS) issues like this. If you get > into a situation where a particular host is causing problems and impacting > other clients your only option may be to block that host even if it means > blocking well-behaving clients. > > Are there any logging improvements you'd like to see in this kind of > situation? We will probably implement authn/z metrics soon (via > ARTEMIS-4306 [1]) at which point it may be viable to reduce the logging > for authn failures. > > Ultimately we want to minimize the impact of clients like this as much as > possible, but it will never be 0. > > Lastly, I'm not aware of any simple way to "pre-authenticate" clients. Off > the top of my head the only thing I can conceive is that if the broker is > using a centralized resource like LDAP then the client could talk to LDAP > before talking to the broker to ensure it had valid credentials. That, of > course, would be a lot of extra work for the client and would pose a > potential problem for the LDAP server itself. > > > Justin > > [1] https://issues.apache.org/jira/browse/ARTEMIS-4306 > > On Mon, Jul 24, 2023 at 1:31 AM Shiv Kumar Dixit < > shivkumardi...@eurofins.com.invalid> wrote: > > > We would like to know if there is any mechanism to pre-authenticate > > broker users first (basic authentication or certificate > > authentication) and if the credentials/certificate is valid then only > > connection attempt is made on the broker. We are seeing a case where > > some users are either using invalid user-name password or invalid > > certificate (expired/missing private key or different cases of SSL > handshake failure) to connect to brokers. > > > > Since such applications keep running with invalid authentication and > > take lot of time to fix from client side, we are seeing too many > > connection attempts being made which subsequently failing on the > > broker. Broker logs also get filled very fast due to it. We can't just > > block those erring IP as same IP can host a good and a bad > > application. Blocking the IP will also block well behaving application. > > > > Some broker versions (e.g. 2.27.1) are very sensitive to such errors > > and it impacted normal broker operations where new good connections > > were denied or delayed, existing consumers were not able to pull > > messages or clustering and movement of messages across cluster was > impacted. > > > > We would like to explore any proxy or pre-authentication where such > > erring consumers are not allowed to make any connection attempt itself > > thus safeguarding the broker. Any input or lead will be very useful. > > > > Thanks > > Shiv > > >