Release notes
HAProxy Data Plane API 3.3 release notes
This page includes key changes in the HAProxy Data Plane API 3.3 release.
New Features Jump to heading
Here’s what’s new in this release.
ACME DNS-01 Challenge Support Jump to heading
We’ve added comprehensive support for ACME DNS-01 challenges:
- Enabled automated certificate management via DNS validation.
- Added ACME DNS-01 challenge support using
libdnsto resolve challenges for HAProxy. To use it, configure HAProxy’sacmesection to use the DNS-01challengewith the appropriateacme-providerandacme-vars. - Implemented DNS propagation checks for ACME with configurable timeout via
DPAPI_ACME_PROPAGTIMEOUT_SECandDPAPI_ACME_PROPAGDELAY_SECenvironment variables. SettingDPAPI_ACME_PROPAGTIMEOUT_SECto-1disables propagation checks. - Added support for listening to HAProxy events on the master socket and handling the
newcertevent to save newly generated certificates to disk. - Added runtime handlers for ACME
statusandrenewoperations. - Enabled a Route53 DNS provider for ACME challenges.
- Enabled a deSEC DNS provider for ACME challenges.
- Added support for the
acme-providerandacme-varsdirectives for DNS-01 challenge configuration. - Added support for the
reuse-keyACME directive.
Configuration Enhancements Jump to heading
This release adds support for new HAProxy configuration parameters and options.
- Added the
ssl-passphrase-cmdparameter to theglobalsection. - Added the
abortoncloseparameter to thefrontendsection. - Added the
cc(congestion control) parameter to theserverandbinddirectives. - Added the experimental
ktlsparameter toserverandbindfor kernel TLS offloading. - Added the
no-ktlsoption to theglobalsection. - Added the experimental
shm-stats-fileandshm-stats-file-max-objectsoptions to theglobalsection. - Added the
sni-auto/no-sni-autoparameters to theserverdirective. - Added the
check-sni-auto/no-check-sni-autoparameters to theserverdirective. - Added the
tcp-md5sigparameter to bothserverandbinddirectives. - Added the
renegotiateoption for servers. - Added the
labelparameter to thebinddirective. - The specification now populates defaults from the OpenAPI spec.
SSL/TLS Improvements Jump to heading
Your ability to secure traffic with SSL/TLS has been improved through the following changes:
- Added support for setting multiple certificate files on
binddirectives, now parsed and serialized as theSslCertificatefield delimited by:. - Added runtime support for saving SSL certificates to the filesystem.
- Fixed IP address certificate acceptance.
- Enhanced leaf certificate selection to include DNS names, fixing cases where names are too long and have no
CNbut onlySAN. - Fixed self-signed certificates parsing in the storage API.
Parser and Serialization Improvements Jump to heading
We’ve updated the parser and optimized how data is serialized.
- Added a parser option that allows excluding sections with given names during serialization.
- Sections are now always sorted by name even if the dependency or circular checks fail.
- Switched to
go-method-genfor methods generation with automatic unit tests generation. - ACL now uses the same type in config parser as in the rest of the module.
- Config parser now allows using models for types.
Bug Fixes Jump to heading
This release contains fixes for a more stable experience.
Data Plane API Jump to heading
These bug fixes apply to the Data Plane API service:
- Fixed GET default sections endpoint ignoring the
full_section=trueparameter. - Fixed service discovery to keep running instead of stopping, despite errors.
- Fixed AWS service discovery to enforce context timeout when interacting with AWS endpoints.
Configuration and Serialization (client-native) Jump to heading
These bug fixes apply to configuration parsing and serialization:
- Fixed missing
set-var-fmtinhttp_after_response_rule. - Fixed duplicate name entry of binds.
- Fixed all names marked as required to fit in map structured data.
- Fixed default time suffix for stats refresh delay (was milliseconds, should be seconds).
- Fixed serialization of FCGI option
mpxs-conns. - Fixed duplication of
xxx/no-xxxoptions on serialization. - Fixed server templates ordering by name when serialized.
- Fixed serialization of
UseFCGIApp, which was failing with “invalid data”. - Fixed missing int and expression in
http-after-response sc-add-gpc. - Fixed
http-response sc-add-gpcandsc-inc-gpcserialization issues. - Fixed
http-request sc-add-gpcandsc-inc-gpcserialization. - Fixed
tcp-request content set-bandwidth-limitto avoid serializing limit and period if not set. - Fixed filter
bwlim-inandbwlim-outmin-serialize. - Fixed
tls-ticketsserialization inbindparams. - Fixed server
fallandriseoptions parsing (they are counters, not time values). - Fixed serialization of
log-steps. - Fixed servers in backends to be ordered by name when serialized.
- Fixed missing ID in frontend serialization.
- Fixed
default-bindto report errors when parsing fails. - Fixed ACME vars ordering when serializing.
- Fixed metadata where it was missing.
Runtime Jump to heading
These bug fixes apply to runtime behavior:
- Added missing fields to stick table output:
http_fail_cnt,http_fail_rate,gpt,gpc, andgpc_rate. - Fixed missing reload socket command termination.
- Fixed redispatch to allow interval of 0.
Other Changes Jump to heading
Other changes in this release are summarized here.
Build and Dependencies Jump to heading
The following build options and dependencies have changed:
- Upgraded Go to 1.25.
- Upgraded golangci-lint to 2.8.0.
- Upgraded go-swagger to v0.32.3.
- Upgraded client-native library to latest version.
- Updated AWS SDK packages to latest versions.
- Updated golang.org/x packages.
- Fixed CVE-2025-47911.
- Swagger now honors default values for fields set in the specification.
Testing Jump to heading
The test suite received these updates:
- Updated E2E tests for HAProxy 3.3 and 3.4 compatibility.
- Added ACME test infrastructure and HTTP-01 testing.
- Fixed tests for HAProxy 3.3 (backends and frontends cannot share the same name;
programsection removed). - Allowed passing multiple test names in
$TESTNAMEfor faster test validation. - Fixed the
set_uidE2E test to work on both Alpine and Debian. - Added automatic unit tests generation for client-native.
- Fixed gentype issue that prevented running tests for sections with dashes.
- Re-enabled the gocritic linter, which was mistakenly disabled.
CI/CD Jump to heading
The CI/CD pipeline has been updated.
- Added CI question for backport need on merge requests.
- Cancel duplicate pipelines on forked projects.
- Updated GitHub Actions tooling and Go versions.
HAProxy Compatibility Jump to heading
This release supports HAProxy 3.3 and newer versions.
Contributors Jump to heading
We would like to thank all the contributors who made this release possible:
| Contributor | Area |
|---|---|
| Olivier Duclos | FEATURE | BUG | TEST | REORG |
| Marko Juraga | BUILD | BUG | CLEANUP | FEATURE | TEST |
| Vincent Gramer | FEATURE | BUG | BUILD |
| Helene Durand | BUG | FEATURE | TEST |
| Zlatko Bratkovic | BUILD | BUG | CLEANUP |
| Dario Tranchitella | BUG |
| Ivan Matmati | FEATURE | CLEANUP |
| Pierre-Alain SIMON | BUILD |
| Philipp Kolberg | BUG |
| JM | BUG |
| AdamJCrawford | BUILD |
Thank you to everyone who contributed code, reported issues, and provided feedback for this release!