diff --git a/security/acme-client/pkg-descr b/security/acme-client/pkg-descr
index edb548f03..3dfdcafae 100644
--- a/security/acme-client/pkg-descr
+++ b/security/acme-client/pkg-descr
@@ -14,6 +14,7 @@ Added:
* add support for new ACME CA's: buypass, buypass_test, sslcom, zerossl (#2361)
* add introduction pages and an option to hide them
* add tooltips for account command buttons (#2188)
+* add support for custom ACME EAB kid/hmac when registering accounts
Changed:
* rename plugin from "Let's Encrypt client" to "ACME Client" (#2361)
diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAccount.xml b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAccount.xml
index b8a2e2ebb..246f279df 100644
--- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAccount.xml
+++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAccount.xml
@@ -23,4 +23,20 @@
text
Optional e-mail address for this account.
+
+
+ header
+
+
+ account.eab_kid
+
+ text
+
+
+
+ account.eab_hmac
+
+ password
+
+
diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/settings.xml b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/settings.xml
index 770341a2c..e3b64b0ad 100644
--- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/settings.xml
+++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/settings.xml
@@ -15,7 +15,7 @@
acmeclient.settings.ca
dropdown
- acme.sh documentation for a list of supported CAs.]]>
+ acme.sh documentation for a list of supported CAs.]]>
acmeclient.settings.haproxyIntegration
diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAccount.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAccount.php
index afec980fd..57589b7c5 100644
--- a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAccount.php
+++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAccount.php
@@ -212,6 +212,13 @@ class LeAccount extends LeCommon
if (!($this->isRegistered())) {
LeUtils::log_debug('starting account registration for ' . (string)$this->config->name, $this->debug);
+ // Check if ACME External Account Binding (EAB) is enabled
+ if (!empty((string)$this->config->eab_kid) && !empty((string)$this->config->eab_hmac) {
+ LeUtils::log_debug('enabling ACME EAB for this account', $this->debug);
+ $this->acme_args[] = LeUtils::execSafe('--eab-kid %s', $this->config->eab_kid);
+ $this->acme_args[] = LeUtils::execSafe('--eab-hmac-key %s', $this->config->eab_hmac);
+ }
+
// Preparation to run acme client
$proc_env = $this->acme_env; // env variables for proc_open()
$proc_env['PATH'] = $this::ACME_ENV_PATH;
diff --git a/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml b/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml
index 91183a3ea..5e0a936f6 100644
--- a/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml
+++ b/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml
@@ -148,6 +148,16 @@
N
+
+ N
+ /^.{1,8192}$/u
+ Should be a string between 1 and 8192 characters.
+
+
+ N
+ /^.{1,8192}$/u
+ Should be a string between 1 and 8192 characters.
+
N