25.3.8-fips: restrict TLS 1.3 ciphersuites to FIPS-approved algorithms#1562
25.3.8-fips: restrict TLS 1.3 ciphersuites to FIPS-approved algorithms#1562mkmkme wants to merge 2 commits intoreleases/25.3.8-fipsfrom
Conversation
SSL_CTX_set_cipher_list() only controls TLS 1.2 and below. TLS 1.3 ciphersuites are a separate namespace controlled by SSL_CTX_set_ciphersuites(), which was never called. This meant all TLS 1.3 ciphersuites were allowed by default, including non-FIPS-approved ones like TLS_CHACHA20_POLY1305_SHA256. Add a new "cipherSuites" parameter (mirroring the existing "cipherList") that calls SSL_CTX_set_ciphersuites(). The default is set to "TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256", which are the only two FIPS-approved TLS 1.3 ciphersuites. This can be overridden via the <cipherSuites> XML config element under openSSL.server/client. The parameter is plumbed through all three SSL context creation paths: SSLManager (general), TLSHandler (native TCP), and PostgreSQLHandler (PostgreSQL wire protocol).
|
AI audit note: This review comment was generated by AI (gpt-5.3-codex). Audit update for PR #1562 (restrict TLS 1.3 ciphersuites for FIPS; AWS-LC 2.0 FIPS / FIPS 140-3 context): Confirmed defectsLow: Cipher configuration OpenSSL calls in
Note: This is not treated as a TLS-1.3-only or AWS-LC–specific regression: the same pattern already existed for Coverage summary
|
|
Looks good overall. The FIPS ciphersuite selection is correct. An additional issue found from AI Audit (super minor): The regression tests that verify that CH server only accepts FIPS 140-3 compatible secure connections on a given port (using the |
SSL_CTX_set_cipher_list() only controls TLS 1.2 and below. TLS 1.3 ciphersuites are a separate namespace controlled by SSL_CTX_set_ciphersuites(), which was never called. This meant all TLS 1.3 ciphersuites were allowed by default, including non-FIPS-approved ones like TLS_CHACHA20_POLY1305_SHA256.
Add a new "cipherSuites" parameter (mirroring the existing "cipherList") that calls SSL_CTX_set_ciphersuites(). The default is set to "TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256", which are the only two FIPS-approved TLS 1.3 ciphersuites. This can be overridden via the XML config element under openSSL.server/client.
The parameter is plumbed through all three SSL context creation paths: SSLManager (general), TLSHandler (native TCP), and PostgreSQLHandler (PostgreSQL wire protocol).
Changelog category (leave one):
Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):
restrict TLS 1.3 ciphersuites to FIPS-approved algorithms
CI/CD Options
Exclude tests:
Regression jobs to run: