From: William Lallemand Date: Tue, 30 Jun 2026 13:37:27 +0000 (+0000) Subject: MEDIUM: ssl: set FIPS-approved sigalgs defaults for AWS-LC FIPS builds X-Git-Url: http://git.kaiwu.me/postgresql/log/contrib/postgres_fdw/postgres_fdw.c?a=commitdiff_plain;h=1aee4ccd2578570efc5ebfec4776a95b7a2388f2;p=haproxy.git MEDIUM: ssl: set FIPS-approved sigalgs defaults for AWS-LC FIPS builds When AWS-LC is built in FIPS mode, unconditionally override the compile-time signature algorithm defaults with the FIPS-approved set before config parsing. Explicit ssl-default-{bind,server}-sigalgs keywords in the global section still take precedence over these defaults. The approved set is defined as macros in include/haproxy/defaults.h alongside the existing CONNECT/LISTEN_DEFAULT_FIPS_CIPHERS family: CONNECT/LISTEN_DEFAULT_FIPS_SIGALGS - ECDSA (P-256/384/521), RSA-PSS and RSA-PKCS1 with SHA-256/384/512 CONNECT/LISTEN_DEFAULT_FIPS_CLIENT_SIGALGS - same set for client certificate sigalgs SHA-1 based algorithms and non-FIPS primitives (ed25519, ed448) are excluded from the defaults. --- diff --git a/include/haproxy/defaults.h b/include/haproxy/defaults.h index 95262c79f..8a9062ea4 100644 --- a/include/haproxy/defaults.h +++ b/include/haproxy/defaults.h @@ -469,6 +469,35 @@ #define LISTEN_DEFAULT_FIPS_CURVES "P-256:P-384:P-521" #endif +/* FIPS-approved signature algorithms for AWS-LC FIPS builds */ +#ifndef CONNECT_DEFAULT_FIPS_SIGALGS +#define CONNECT_DEFAULT_FIPS_SIGALGS \ + "ecdsa_secp256r1_sha256:ecdsa_secp384r1_sha384:ecdsa_secp521r1_sha512:" \ + "rsa_pss_rsae_sha256:rsa_pss_rsae_sha384:rsa_pss_rsae_sha512:" \ + "rsa_pkcs1_sha256:rsa_pkcs1_sha384:rsa_pkcs1_sha512" +#endif + +#ifndef LISTEN_DEFAULT_FIPS_SIGALGS +#define LISTEN_DEFAULT_FIPS_SIGALGS \ + "ecdsa_secp256r1_sha256:ecdsa_secp384r1_sha384:ecdsa_secp521r1_sha512:" \ + "rsa_pss_rsae_sha256:rsa_pss_rsae_sha384:rsa_pss_rsae_sha512:" \ + "rsa_pkcs1_sha256:rsa_pkcs1_sha384:rsa_pkcs1_sha512" +#endif + +#ifndef CONNECT_DEFAULT_FIPS_CLIENT_SIGALGS +#define CONNECT_DEFAULT_FIPS_CLIENT_SIGALGS \ + "ecdsa_secp256r1_sha256:ecdsa_secp384r1_sha384:ecdsa_secp521r1_sha512:" \ + "rsa_pss_rsae_sha256:rsa_pss_rsae_sha384:rsa_pss_rsae_sha512:" \ + "rsa_pkcs1_sha256:rsa_pkcs1_sha384:rsa_pkcs1_sha512" +#endif + +#ifndef LISTEN_DEFAULT_FIPS_CLIENT_SIGALGS +#define LISTEN_DEFAULT_FIPS_CLIENT_SIGALGS \ + "ecdsa_secp256r1_sha256:ecdsa_secp384r1_sha384:ecdsa_secp521r1_sha512:" \ + "rsa_pss_rsae_sha256:rsa_pss_rsae_sha384:rsa_pss_rsae_sha512:" \ + "rsa_pkcs1_sha256:rsa_pkcs1_sha384:rsa_pkcs1_sha512" +#endif + /* named curve used as defaults for ECDHE ciphers */ #ifndef ECDHE_DEFAULT_CURVE #define ECDHE_DEFAULT_CURVE "prime256v1" diff --git a/src/ssl_sock.c b/src/ssl_sock.c index 1fe6c3274..6c09aa513 100644 --- a/src/ssl_sock.c +++ b/src/ssl_sock.c @@ -8544,6 +8544,16 @@ static void __ssl_sock_init(void) global_ssl.listen_default_curves = strdup(LISTEN_DEFAULT_FIPS_CURVES); free(global_ssl.connect_default_curves); global_ssl.connect_default_curves = strdup(CONNECT_DEFAULT_FIPS_CURVES); +#if defined(SSL_CTX_set1_sigalgs_list) + free(global_ssl.listen_default_sigalgs); + global_ssl.listen_default_sigalgs = strdup(LISTEN_DEFAULT_FIPS_SIGALGS); + free(global_ssl.connect_default_sigalgs); + global_ssl.connect_default_sigalgs = strdup(CONNECT_DEFAULT_FIPS_SIGALGS); + free(global_ssl.listen_default_client_sigalgs); + global_ssl.listen_default_client_sigalgs = strdup(LISTEN_DEFAULT_FIPS_CLIENT_SIGALGS); + free(global_ssl.connect_default_client_sigalgs); + global_ssl.connect_default_client_sigalgs = strdup(CONNECT_DEFAULT_FIPS_CLIENT_SIGALGS); +#endif } #endif /* OPENSSL_IS_AWSLC */