diff --git a/net/haproxy/pkg-descr b/net/haproxy/pkg-descr
index d33a113b1..c6e99b526 100644
--- a/net/haproxy/pkg-descr
+++ b/net/haproxy/pkg-descr
@@ -6,6 +6,11 @@ very high loads while needing persistence or Layer7 processing.
Plugin Changelog
================
+3.12
+
+Added:
+* add support for req.ssl_hello_type (#2311)
+
3.11
Added:
diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAcl.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAcl.xml
index 4643f99a8..895bd6e4b 100644
--- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAcl.xml
+++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAcl.xml
@@ -278,6 +278,17 @@
text
+
+
+ header
+
+
+
+ acl.ssl_hello_type
+
+ dropdown
+
+
header
diff --git a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
index f6baa5c87..3be9a91e1 100644
--- a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
+++ b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml
@@ -1599,6 +1599,7 @@
SSL Client certificate is valid
SSL Client certificate verify error result
SSL Client certificate issued by CA common-name
+ SSL Hello Type
Source IP matches specified IP
Source IP is local
Source IP: TCP source port
@@ -1764,6 +1765,15 @@
/^.{1,4096}$/u
N
+
+ N
+ x1
+
+ 0 - no client hello
+ 1 - client hello
+ 2 - server hello
+
+
/^.{1,4096}$/u
N
diff --git a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
index ea00d11a8..79fde03a0 100644
--- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
+++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
@@ -284,6 +284,8 @@
{% set acl_enabled = '0' %}
# ERROR: missing parameters
{% endif %}
+{% elif acl_data.expression == 'ssl_hello_type' %}
+{% do acl_options.append('req.ssl_hello_type ' ~ acl_data.ssl_hello_type|replace('x', '')) %}
{% elif acl_data.expression == 'src' %}
{% if acl_data.src|default("") != "" %}
{% do acl_options.append('src ' ~ acl_data.src) %}