diff --git a/security/acme-client/Makefile b/security/acme-client/Makefile
index 13e311140..8091d14b8 100644
--- a/security/acme-client/Makefile
+++ b/security/acme-client/Makefile
@@ -1,5 +1,5 @@
PLUGIN_NAME= acme-client
-PLUGIN_VERSION= 3.15
+PLUGIN_VERSION= 3.16
PLUGIN_COMMENT= ACME Client
PLUGIN_MAINTAINER= opnsense@moov.de
PLUGIN_DEPENDS= acme.sh py${PLUGIN_PYTHON}-dns-lexicon
diff --git a/security/acme-client/pkg-descr b/security/acme-client/pkg-descr
index d82b556aa..3fc684cf0 100644
--- a/security/acme-client/pkg-descr
+++ b/security/acme-client/pkg-descr
@@ -8,6 +8,11 @@ WWW: https://github.com/acmesh-official/acme.sh
Plugin Changelog
================
+3.16
+
+Added:
+* new automation: deploy certificates on Palo Alto Networks Firewall (#3289)
+
3.15
Added:
diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAction.xml b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAction.xml
index 45544272c..2059a2e67 100644
--- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAction.xml
+++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogAction.xml
@@ -263,6 +263,26 @@
password
+
+
+ header
+
+
+
+ action.acme_panos_username
+
+ text
+
+
+ action.acme_panos_password
+
+ password
+
+
+ action.acme_panos_host
+
+ text
+
header
diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/AcmePanos.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/AcmePanos.php
new file mode 100644
index 000000000..82ce66d12
--- /dev/null
+++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/AcmePanos.php
@@ -0,0 +1,47 @@
+acme_env['PANOS_USER'] = (string)$this->config->acme_panos_username;
+ $this->acme_env['PANOS_PASS'] = (string)$this->config->acme_panos_password;
+ $this->acme_env['PANOS_HOST'] = (string)$this->config->acme_panos_host;
+ $this->acme_args[] = '--deploy-hook panos --insecure';
+ return true;
+ }
+}
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 23f59686a..9488f2f27 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
@@ -1147,6 +1147,7 @@
Upload certificate via SFTP
Remote Command via SSH
Upload certificate to FRITZ!Box router
+ Upload certificate to Palo Alto Networks Firewall
Upload certificate to HashiCorp Vault
Upload certificate to Synology DSM
Update local Unifi keystore
@@ -1340,6 +1341,21 @@
/^.{1,1024}$/u
Should be a string between 1 and 1024 characters.
+
+ N
+ /^.{1,1024}$/u
+ Should be a string between 1 and 1024 characters.
+
+
+ N
+ /^.{1,1024}$/u
+ Should be a string between 1 and 1024 characters.
+
+
+ N
+ /^.{1,1024}$/u
+ Should be a string between 1 and 1024 characters.
+
/usr/local/share/java/unifi/data/keystore
N