Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
BUG/MEDIUM: ssl: chosing correct certificate using RSA-PSS with TLSv1.3
The clienthello callback was written when TLSv1.3 was not yet out, and signatures algorithm changed since then. With TLSv1.2, the least significant byte was used to determine the SignatureAlgorithm, which could be rsa(1), dsa(2), ecdsa(3). https://datatracker.ietf.org/doc/html/rfc5246#section-7.4.1.4.1 This was used to chose which type of certificate to push to the client. But TLSv1.3 changed that, and introduced new RSA-PSS algorithms that does not have the least sinificant byte to 1. https://datatracker.ietf.org/doc/html/rfc8446#section-4.2.3 This would result in chosing the wrong certificate when an RSA an ECDSA ones are in the configuration for the same SNI or default entry. This patch fixes the issue by parsing bothe hash and signature field to check the RSA-PSS signature scheme. This must fix issue haproxy#2852. This must be backported in every stable versions. The code was moved from ssl_sock.c to ssl_clienthello in recent versions.
- Loading branch information