Hi Tomcat Support Team,

We are experiencing an issue with cipher suite configuration in Apache Tomcat 
where explicitly configured cipher suites in server.xml are being filtered, 
despite our expectation that explicit configuration
should override any default filtering behavior.

Environment Details:
* Apache Tomcat version: 11.X
* Java version: OpenJDK - 17
* Operating System: Linux

Issue Description:
After configuring our Tomcat connector with explicit cipher suites in 
server.xml and restarting the Tomcat process, we observe a discrepancy between 
the cipher suites available on our Java RMI port (2022)
versus our Tomcat HTTPS port (2309). The Java RMI port shows all configured 
cipher suites, while the Tomcat port appears to be filtering out certain cipher 
suites, specifically the TLS_RSA_* variants.

Current Configuration:
xml
<Connector protocol="org.apache.coyote.http11.Http11Nio2Protocol" port="2309"
           maxThreads="200" scheme="https" secure="true" SSLEnabled="true"
           maxHttpHeaderSize="8192" server="oamServer" xpoweredBy="false"
           allowTrace="false" connectionTimeout="60000" address="X.X.X.X">
    <SSLHostConfig certificateVerification="optional">
        <Certificate certificateKeystoreFile="/opt/occ/etc/cert/.oam/keystore"
                     certificateKeystorePassword="XXXXXXXXXXX" />
        <SSLHostConfig 
ciphers="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA"
                       sslProtocol="TLSv1.2+TLSv1.3"/>
    </SSLHostConfig>
</Connector>


Observed Behavior:
* **Port 2309 (Tomcat HTTPS):** Only shows ECDHE cipher suites, missing all 
TLS_RSA_* variants
* **Port 2022 (Java RMI):** Shows all configured cipher suites including 
TLS_RSA_* variants

Questions:
1. Is there an internal security policy or default configuration in Tomcat that 
automatically filters out certain cipher suites (particularly TLS_RSA_* 
variants) even when explicitly configured?

2. What mechanism is causing this filtering behaviour, and how can it be 
disabled or overridden?

3. Is this filtering behaviour documented, and if so, where can we find the 
complete list of filtered cipher suites?

4. How can we ensure that our explicit cipher suite configuration in server.xml 
is fully honoured without any automatic filtering?

Expected Behaviour:
When cipher suites are explicitly configured in server.xml, we expect Tomcat to 
honour the complete list without applying any additional filtering. The 
configuration should take precedence over any default
security policies.

Request:
Please provide guidance on how to configure Tomcat to use the exact cipher 
suite list specified in our configuration, or explain the rationale behind the 
current filtering behaviour and how to work around it.

We appreciate your assistance in resolving this configuration issue.

Regards,
Abirami.S

-----Original Message-----
From: Christopher Schultz <ch...@christopherschultz.net>
Sent: Saturday, August 23, 2025 10:06 PM
To: users@tomcat.apache.org
Subject: Re: Tomcat 11 and JDK 17 application ciphers difference

Abirami,

On 8/22/25 2:53 AM, S Abirami wrote:
> I have a follow-up question on the below concern with SSL/TLS cipher 
> configuration in our Tomcat deployment and need your assistance.
>
> Issue Description:
>
> We have explicitly configured a specific set of ciphers in our
> server.xml connector configuration, but the configuration appears to be 
> ignored. Additionally, we are seeing RSA key exchange ciphers in our SSL 
> handshake that we did not include in our cipher list.
>
> Environment Details:
>
> * Tomcat Version: 11.xx
> * Java Version: OpenJDK 17
> * Operating System: Linux
>
> Configuration:
>
> xml
> <Connector protocol="com.ericsson.http.protocol.Http11Nio2ProtocolDecryptProp"
>             port="2309"
>             maxThreads="200"
>             scheme="https"
>             secure="true"
>             SSLEnabled="true"
>             honorCipherOrder="true"
>             sslProtocol="TLSv1.2+TLSv1.3"
>
> ciphers="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHAC
> HA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_R
> SA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_E
> CDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_R
> SA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WIT
> H_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_
> 256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA" />
>
> Here the particular RSA key exchange ciphers are supported in JAVA. But not 
> coming in the nmap command output even if we mention those ciphers in 
> server.xml.
> Questions:
>
> 1. Why are the cipher configuration properties not being recognized in the 
> connector configuration?
> 2. Are there any Tomcat security policies that override explicit cipher 
> configurations in server.xml?

No, but there are JVM security policies which can disable the use of certain 
algorithms, key sizes, etc.

> 3. If there are security configurations that disable certain cipher suites 
> (particularly RSA key exchange ciphers), could you please provide:
>     * The specific configuration files or properties involved
>     * Documentation on how these security policies work
>     * Methods to override or customize these policies if needed
>
> 4. What is the correct way to explicitly control cipher suites in Tomcat to 
> ensure only our specified ciphers are available.

Can you please use this tool running on the same machine (e.g. run it on 
localhost : port) using the same JVM you use for Tomcat, and post the output 
back to the list?

https://github.com/ChristopherSchultz/ssltest

Please run:

$ java -jar ssltest.jar -client-info

and

$ java -jar ssltest.jar localhost[:port]

The first command will tell you what ciphers exist and which are enabled by 
default at the JVM level. This is helpful to discover if you are trying to use 
an algorithm, etc. that is not supported by the JVM itself.

The second will tell you which ones you are able to use to connect to your 
running server.

-chris

> -----Original Message-----
> From: Mark Thomas <ma...@apache.org>
> Sent: Tuesday, August 19, 2025 5:30 PM
> To: Tomcat Users List <users@tomcat.apache.org>
> Subject: Re: Tomcat 11 and JDK 17 application ciphers difference
>
> On 19/08/2025 12:17, S Abirami wrote:
>
> <snip/>
>
>   > Questions:>
>> 1. Is Tomcat 11 intentionally filtering out RSA key exchange cipher suites 
>> by default? If so, where is this documented?
>
> Yes.
> https://tomc/
> at.apache.org%2Ftomcat-11.0-doc%2Fconfig%2Fhttp.html&data=05%7C02%7Cs.
> abirami%40ericsson.com%7C8651f7781ba84997e93b08dde26323f3%7C92e84cebfb
> fd47abbe52080c6b87953f%7C0%7C0%7C638915637615612952%7CUnknown%7CTWFpbG
> Zsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFO
> IjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=YQ3Qn5DnX%2BumyYIswKKW
> azYKzJSUO2jCfAXR3tS0JwI%3D&reserved=0
> look for the "ciphers" attribute
>
>> 2. What is the mechanism for this filtering? Is it hardcoded in the SSL 
>> implementation or configurable?
>
> https://tomc/
> at.apache.org%2Ftomcat-11.0-doc%2Fconfig%2Fhttp.html&data=05%7C02%7Cs.
> abirami%40ericsson.com%7C8651f7781ba84997e93b08dde26323f3%7C92e84cebfb
> fd47abbe52080c6b87953f%7C0%7C0%7C638915637615622326%7CUnknown%7CTWFpbG
> Zsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFO
> IjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=BK%2BBwHcQ4TmcnHR0EnQZ
> FwMMO%2Fn3GE2%2B0BqTJkfi2g4%3D&reserved=0
> look for the "ciphers" attribute
>
>> 3. Is there a system property or configuration option to disable Tomcat's 
>> cipher filtering and use Java's default cipher suite selection?
>
> No.
>
> You could set the ciphers attribute to be the same as the Java default (quite 
> a long list) but there is no setting for "use whatever the Java default is".
>
>> Expected Behaviour:
>> When no explicit cipher configuration is provided, I would expect Tomcat to 
>> use the same cipher suites that are available to other Java applications 
>> using the same JVM and security configuration.
>
> The assumption that the security configuration is the same is flawed because 
> Tomcat has explicit defaults rather than simply using the JVM defaults.
>
>
> Tomcat has the defaults it has so that swapping between the JSSE and the 
> OpenSSL based TLS implementations has minimal impact on behaviour.
>
> Mark
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to