Getting here took more than swapping a version number. A few of the key engineering pieces include:
**A newer, validated OpenSSL FIPS provider.** Kong upgraded its embedded OpenSSL FIPS provider from 3.0.9 to 3.1.2 — the provider version that carries the FIPS 140-3 validation. Both provider versions ship today, so Kong can build and release FIPS 140-2 and FIPS 140-3 artifacts side by side from the same source tree, selected at build time.
**TLS 1.3 in FIPS mode.** The FIPS 140-3 build adds TLS 1.3 alongside TLS 1.2, with AES-GCM and AES-CCM ciphersuites configured directly in the FIPS OpenSSL configuration. Previously, FIPS-mode Kong deployments were limited to TLS 1.2.
**A tightened, audited TLS 1.2 cipher suite.** Rather than carry forward the broad OpenSSL FIPS cipher alias, the FIPS 140-3 build serves an explicit, narrower list of four modern ECDHE + AES-GCM suites. It's a stricter default that reflects current guidance, decided before the first release rather than tightened after customers were already depending on the wider list.
**A centralized FIPS runtime model.** Kong added a single source of truth for FIPS state - resolved from the build-time package marker, consistent across reloads, and enforced across startup paths including package installs, systemd, traditional containers, and distroless images. FIPS-mode builds now default to FIPS enabled, with cryptographic policy (like a minimum RSA-2048 key floor) enforced centrally rather than scattered across call sites.
**Consistent cryptographic policy across every signing path.** Kong unified FIPS-mode signing and verification policy across JOSE, OpenID Connect, JWT, JWT Signer, and Datakit, so a single algorithm policy governs token and assertion handling everywhere it happens, rather than each plugin enforcing its own rules. Alongside this, Kong closed off weak-key paths that FIPS mode is specifically meant to prevent - rejecting weak SAML signing keys, weak audit-log signing keys, undersized ACME account and EAB JWS keys, and disallowing default EdDSA JWKS generation (not yet part of the FIPS-approved algorithm set) in favor of RSA-PSS or NIST-curve ECDSA.
**Honest boundaries around post-quantum cryptography.** Kong also shipped post-quantum TLS support (hybrid ML-KEM key exchange, ML-DSA certificates) as a separate, non-FIPS capability. No FIPS-validated OpenSSL provider yet implements ML-KEM at any certification level, so rather than let a FIPS deployment silently fail to negotiate PQC, Kong detects FIPS mode, drops any post-quantum configuration, logs a clear warning, and continues running in FIPS mode. You get an explicit answer instead of a confusing handshake failure.