From ac4febaa9325d4a97339afb4e604f9c0bf932777 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Sat, 31 Jul 2021 14:30:57 +0200 Subject: [PATCH 01/14] security/acme-client: add support for new ACME CA's, closes #2361 --- security/acme-client/pkg-descr | 9 ++++ .../OPNsense/AcmeClient/forms/settings.xml | 6 +-- .../library/OPNsense/AcmeClient/LeAccount.php | 8 +-- .../OPNsense/AcmeClient/LeAutomation/Base.php | 6 +-- .../OPNsense/AcmeClient/LeCertificate.php | 6 +-- .../library/OPNsense/AcmeClient/LeCommon.php | 28 ++++++++-- .../OPNsense/AcmeClient/LeValidation/Base.php | 10 ++-- .../models/OPNsense/AcmeClient/AcmeClient.xml | 16 +++++- .../OPNsense/AcmeClient/Migrations/M3_0_0.php | 54 +++++++++++++++++++ .../views/OPNsense/AcmeClient/settings.volt | 4 +- 10 files changed, 120 insertions(+), 27 deletions(-) create mode 100644 security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/Migrations/M3_0_0.php diff --git a/security/acme-client/pkg-descr b/security/acme-client/pkg-descr index 0f08eea38..b6dc6e05e 100644 --- a/security/acme-client/pkg-descr +++ b/security/acme-client/pkg-descr @@ -8,6 +8,15 @@ WWW: https://github.com/acmesh-official/acme.sh Plugin Changelog ================ +3.0 + +Added: +* add support for new ACME CA's: buypass, buypass_test, sslcom, zerossl (#2361) + +Changed: +* rename "Let's Encrypt Environment" to "ACME CA" (#2361) +* preserve old LE accounts/certs by adding a compatibility layer (#2361) + 2.6 Added: 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 ad0247d9e..b72241e64 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 @@ -12,10 +12,10 @@ - acmeclient.settings.environment - + acmeclient.settings.ca + dropdown - relaxed rate limits.
NOTE:Certificates signed by the staging environment are NOT valid. You need to forcefully re-sign (or delete and re-create) them after switching from staging to production environment.
]]>
+ 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 dc8f0d33f..5aa9e2ab2 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 @@ -1,7 +1,7 @@ setLoglevel(); - // Set Let's Encrypt environment - $this->setEnvironment(); + // Set ACME CA + $this->setCa(); // Store acme filenames $this->acme_args[] = LeUtils::execSafe('--home %s', self::ACME_HOME_DIR); @@ -66,7 +66,7 @@ class LeAccount extends LeCommon public function generateKey() { // Collect account information - $account_conf_dir = self::ACME_BASE_ACCOUNT_DIR . '/' . (string)$this->config->id . '_' . $this->environment; + $account_conf_dir = self::ACME_BASE_ACCOUNT_DIR . '/' . (string)$this->config->id . '_' . $this->ca_compat; $account_conf_file = $account_conf_dir . '/account.conf'; $account_key_file = $account_conf_dir . '/account.key'; $account_json_file = $account_conf_dir . '/account.json'; diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/Base.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/Base.php index b6a07a727..67ce269f2 100644 --- a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/Base.php +++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomation/Base.php @@ -1,7 +1,7 @@ * All rights reserved. @@ -63,8 +63,8 @@ abstract class Base extends \OPNsense\AcmeClient\LeCommon // Set log level $this->setLoglevel(); - // Set Let's Encrypt environment - $this->setEnvironment(); + // Set ACME CA + $this->setCa(); return true; } diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCertificate.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCertificate.php index 97b4d2364..bc84d49b3 100644 --- a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCertificate.php +++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCertificate.php @@ -74,8 +74,8 @@ class LeCertificate extends LeCommon // Set log level $this->setLoglevel(); - // Set Let's Encrypt environment - $this->setEnvironment(); + // Set ACME CA + $this->setCa(); // Handle special key types if ($this->config->keyLength == 'key_ec256' || $this->config->keyLength == 'key_ec384') { @@ -528,7 +528,7 @@ class LeCertificate extends LeCommon LeUtils::log('revoking certificate: ' . (string)$this->config->name); // Collect account information - $account_conf_dir = self::ACME_BASE_ACCOUNT_DIR . '/' . $this->account_id . '_' . $this->environment; + $account_conf_dir = self::ACME_BASE_ACCOUNT_DIR . '/' . $this->account_id . '_' . $this->ca_compat; $account_conf_file = $account_conf_dir . '/account.conf'; // Preparation to run acme client diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCommon.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCommon.php index 151445d0c..422a82508 100644 --- a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCommon.php +++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCommon.php @@ -83,7 +83,8 @@ abstract class LeCommon protected $cron; # Run from cron job protected $config; # AcmeClient config object protected $debug; # Debug logging (bool) - protected $environment; # Let's Encrypt environment (uses shortnames) + protected $ca; # ACME CA + protected $ca_compat; # ACME CA for compat with old LE CA names protected $force; # Force operation protected $model; # AcmeClient model object protected $uuid; # AcmeClient config object uuid @@ -136,12 +137,29 @@ abstract class LeCommon } /** - * set Let's Encrypt environment for acme.sh + * set ACME CA for acme.sh */ - public function setEnvironment() + public function setCa() { - $this->environment = (string)$this->model->getNodeByReference('settings.environment'); - $this->acme_args[] = $this->environment == 'stg' ? '--staging' : null; + $this->ca = (string)$this->model->getNodeByReference('settings.ca'); + $this->acme_args[] = LeUtils::execSafe('--server %s', $this->ca); + + // Evaluate how the CA should be represented in filenames. + // This is a compatibility layer. It ensures that old files that + // were generated for the Let's Encrypt Production/Staging CA + // can still be used. + switch ($this->ca) { + case 'letsencrypt': + $ca_compat = 'prod'; + break; + case 'letsencrypt_test': + $ca_compat = 'stg'; + break; + default: + $ca_compat = $this->ca; + break; + } + $this->ca_compat = $ca_compat; } /** diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/Base.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/Base.php index a69443228..0c2dcb317 100644 --- a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/Base.php +++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidation/Base.php @@ -1,7 +1,7 @@ * All rights reserved. @@ -73,8 +73,8 @@ abstract class Base extends \OPNsense\AcmeClient\LeCommon // Set log level $this->setLoglevel(); - // Set Let's Encrypt environment - $this->setEnvironment(); + // Set ACME CA + $this->setCa(); // Store acme hook switch ((string)$this->config->method) { @@ -141,8 +141,8 @@ abstract class Base extends \OPNsense\AcmeClient\LeCommon } } - // Use individual account config for each environment - $account_conf_dir = self::ACME_BASE_ACCOUNT_DIR . '/' . $this->account_id . '_' . $this->environment; + // Use individual account config for each CA + $account_conf_dir = self::ACME_BASE_ACCOUNT_DIR . '/' . $this->account_id . '_' . $this->ca_compat; $account_conf_file = $account_conf_dir . '/account.conf'; // Preparation to run acme client 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 29a998e7b..a105ce598 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 @@ -1,6 +1,6 @@ //OPNsense/AcmeClient - 2.1.0 + 3.0.0 A secure Let's Encrypt plugin @@ -27,13 +27,25 @@ N - Y + N prod Production Environment [default] Staging Environment + + Y + + + Buypass + Buypass Test CA + Let's Encrypt [default] + Let's Encrypt Test CA + SSL.com + ZeroSSL + + 43580 1024 diff --git a/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/Migrations/M3_0_0.php b/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/Migrations/M3_0_0.php new file mode 100644 index 000000000..a2f0262e5 --- /dev/null +++ b/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/Migrations/M3_0_0.php @@ -0,0 +1,54 @@ +settings->environment; + switch ($env) { + case 'prod': + $new_ca = 'letsencrypt'; + break; + case 'stg': + $new_ca = 'letsencrypt_test'; + break; + } + + // Set new CA + $model->settings->ca = $new_ca; + $model->settings->environment = null; // clear old value + } +} diff --git a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/settings.volt b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/settings.volt index 2d1b034e7..a77378f43 100644 --- a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/settings.volt +++ b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/settings.volt @@ -1,6 +1,6 @@ {# -Copyright (C) 2017-2019 Frank Wall +Copyright (C) 2017-2021 Frank Wall OPNsense® is Copyright © 2014-2015 by Deciso B.V. All rights reserved. @@ -247,7 +247,7 @@ POSSIBILITY OF SUCH DAMAGE.
- {{ lang._("Please read the official %sLet's Encrypt documentation%s before using this plugin. Otherwise you will easily hit its %srate limits%s and thus all your attempts to issue a certificate will fail.") | format('', '', '', '') }}{{ lang._("Please use Let's Encrypt's %sstaging servers%s when using this plugin for the first time or while testing a new challenge type. You will have to reissue your certificates when switching from staging to production servers to get valid certificates.") | format('', '') }} + {{ lang._("Please read the official %sLet's Encrypt documentation%s before using this plugin. It should give you a good overview about how the various ACME CAs work, so you do not hit their %srate limits%s and avoid common misconfigurations, which would let all your attempts to issue a certificate fail.") | format('', '', '', '') }}{{ lang._("Please use a %stest CA%s when using this plugin for the first time or while testing a new challenge type. Note that you will have to reissue your certificates when switching from a test to a production CA to get valid certificates.") | format('', '') }}
{{ lang._('Please use the %sissue tracker%s to report bugs or request new features.') | format('', '') }}
From 5e1210bb0df8be4855024d4653630c46200f95a5 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Sat, 31 Jul 2021 14:53:20 +0200 Subject: [PATCH 02/14] security/acme-client: rename to "ACME Client", refs #2361 --- security/acme-client/Makefile | 2 +- security/acme-client/pkg-descr | 1 + .../src/etc/inc/plugins.inc.d/acmeclient.inc | 4 ++-- .../OPNsense/AcmeClient/Api/SettingsController.php | 10 +++++----- .../OPNsense/AcmeClient/forms/dialogCertificate.xml | 8 ++++---- .../OPNsense/AcmeClient/forms/dialogValidation.xml | 6 +++--- .../OPNsense/AcmeClient/forms/settings.xml | 4 ++-- .../app/library/OPNsense/AcmeClient/LeAccount.php | 4 ++-- .../OPNsense/AcmeClient/LeAutomationInterface.php | 4 ++-- .../library/OPNsense/AcmeClient/LeCertificate.php | 12 ++++++------ .../mvc/app/library/OPNsense/AcmeClient/LeCommon.php | 2 +- .../OPNsense/AcmeClient/LeValidationInterface.php | 4 ++-- .../mvc/app/models/OPNsense/AcmeClient/ACL/ACL.xml | 6 +++--- .../app/models/OPNsense/AcmeClient/AcmeClient.xml | 2 +- .../mvc/app/models/OPNsense/AcmeClient/Menu/Menu.xml | 5 ++--- .../mvc/app/views/OPNsense/AcmeClient/accounts.volt | 4 ++-- .../opnsense/scripts/OPNsense/AcmeClient/lecert.php | 8 ++++---- .../service/conf/actions.d/actions_acmeclient.conf | 2 +- .../OPNsense/AcmeClient/lighttpd-acme-challenge.conf | 2 +- 19 files changed, 45 insertions(+), 45 deletions(-) diff --git a/security/acme-client/Makefile b/security/acme-client/Makefile index 97ee0b6ea..de8023fa3 100644 --- a/security/acme-client/Makefile +++ b/security/acme-client/Makefile @@ -1,6 +1,6 @@ PLUGIN_NAME= acme-client PLUGIN_VERSION= 2.6 -PLUGIN_COMMENT= Let's Encrypt client +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 b6dc6e05e..101894d32 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) Changed: +* rename plugin from "Let's Encrypt client" to "ACME Client" (#2361) * rename "Let's Encrypt Environment" to "ACME CA" (#2361) * preserve old LE accounts/certs by adding a compatibility layer (#2361) diff --git a/security/acme-client/src/etc/inc/plugins.inc.d/acmeclient.inc b/security/acme-client/src/etc/inc/plugins.inc.d/acmeclient.inc index 801a1fb07..92b8881e2 100644 --- a/security/acme-client/src/etc/inc/plugins.inc.d/acmeclient.inc +++ b/security/acme-client/src/etc/inc/plugins.inc.d/acmeclient.inc @@ -1,7 +1,7 @@ gettext('Let\'s Encrypt client'), + 'description' => gettext('ACME client'), 'pidfile' => '/var/run/lighttpd-acme-challenge.pid', 'configd' => array( 'restart' => array('acme-http-challenge restart'), diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/Api/SettingsController.php b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/Api/SettingsController.php index 3dee7cfb2..c8bef9805 100644 --- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/Api/SettingsController.php +++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/Api/SettingsController.php @@ -1,7 +1,7 @@ newAcl( "find_acme_challenge", - "Added by Let's Encrypt plugin", + "Added by ACME Client plugin", "path_beg", "0", array("path_beg" => "/.well-known/acme-challenge/") @@ -273,7 +273,7 @@ class SettingsController extends ApiMutableModelControllerBase $backend_uuid = $mdlHAProxy->newBackend( "1", "acme_challenge_backend", - "Added by Let's Encrypt plugin", + "Added by ACME Client plugin", "http", "source", "", @@ -283,7 +283,7 @@ class SettingsController extends ApiMutableModelControllerBase // Add a new HAProxy action $action_uuid = $mdlHAProxy->newAction( "redirect_acme_challenges", - "Added by Let's Encrypt plugin", + "Added by ACME Client plugin", "if", "", "and", @@ -298,7 +298,7 @@ class SettingsController extends ApiMutableModelControllerBase // Add a new HAProxy server $server_uuid = $mdlHAProxy->newServer( "acme_challenge_host", - "Added by Let's Encrypt plugin", + "Added by ACME Client plugin", "127.0.0.1", $acme_port, "active", diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogCertificate.xml b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogCertificate.xml index ee0eb8daf..a78b2f051 100644 --- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogCertificate.xml +++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogCertificate.xml @@ -27,24 +27,24 @@ select_multiple true -
NOTE:You need to forcefully re-issue the certificate if you change "Alt Names" after the certificate was signed by the Let's Encrypt Authority! Use the "issue" button in the Commands column in this case.
]]>
+
NOTE:You need to forcefully re-issue the certificate if you change "Alt Names" after the certificate was signed by the ACME CA! Use the "issue" button in the Commands column in this case.
]]>
Enter FQDN here. Finish with TAB. - + header certificate.account dropdown - + certificate.validationMethod dropdown - + certificate.autoRenewal diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogValidation.xml b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogValidation.xml index 527601cfd..4faa6b778 100644 --- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogValidation.xml +++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/forms/dialogValidation.xml @@ -21,7 +21,7 @@ validation.method dropdown - Set the Let's Encrypt challenge type. You'll have to add configuration for the selected challenge type below. + Set the ACME challenge type. You'll have to add configuration for the selected challenge type below. @@ -48,7 +48,7 @@ validation.http_opn_interface dropdown -
NOTE:This will ONLY work if the official IP addresses are LOCALLY configured on your OPNsense firewall.
]]>
+
NOTE:This will ONLY work if the official IP addresses are LOCALLY configured on your OPNsense firewall.
]]>
validation.http_opn_ipaddresses @@ -56,7 +56,7 @@ select_multiple true -
NOTE:This will ONLY work if the official IP addresses are LOCALLY configured on your OPNsense firewall.
]]>
+
NOTE:This will ONLY work if the official IP addresses are LOCALLY configured on your OPNsense firewall.
]]>
Enter IP addresses here. Finish each with TAB.
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 b72241e64..e5cea7414 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 @@ -3,7 +3,7 @@ acmeclient.settings.enabled checkbox - + acmeclient.settings.autoRenewal @@ -33,7 +33,7 @@ acmeclient.settings.challengePort text - + true 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 5aa9e2ab2..ad172033c 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 @@ -31,7 +31,7 @@ namespace OPNsense\AcmeClient; use OPNsense\Core\Config; /** - * Manage Let's Encrypt accounts with acme.sh + * Manage ACME CA accounts with acme.sh * @package OPNsense\AcmeClient */ class LeAccount extends LeCommon @@ -192,7 +192,7 @@ class LeAccount extends LeCommon } /** - * register account with Let's Encrypt + * register account with configured ACME CA * @return bool */ public function register() diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomationInterface.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomationInterface.php index 707b65aff..30607fd80 100644 --- a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomationInterface.php +++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeAutomationInterface.php @@ -1,7 +1,7 @@ object()->addChild('ca'); foreach (array_keys($ca) as $cacfg) { $newca->addChild($cacfg, (string)$ca[$cacfg]); @@ -251,7 +251,7 @@ class LeCertificate extends LeCommon // Collect required cert information $cert_cn = LeUtils::local_cert_get_cn($cert_content, false); - $cert['descr'] = (string)$cert_cn . ' (Let\'s Encrypt)'; + $cert['descr'] = (string)$cert_cn . ' (ACME Client)'; $cert['refid'] = $cert_refid; // Prepare certificate for import @@ -277,7 +277,7 @@ class LeCertificate extends LeCommon $newcert->addChild($certcfg, (string)$cert[$certcfg]); } } - LeUtils::log("${import_log_message} Let's Encrypt X.509 certificate: ${cert_cn}"); + LeUtils::log("${import_log_message} ACME X.509 certificate: ${cert_cn}"); /** * Step 3: update configuration @@ -300,7 +300,7 @@ class LeCertificate extends LeCommon } /** - * check if certificate is already issued by Let's Encrypt + * check if certificate is already issued by ACME CA * @return bool */ public function isIssued() diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCommon.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCommon.php index 422a82508..f8d765bd3 100644 --- a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCommon.php +++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCommon.php @@ -32,7 +32,7 @@ use OPNsense\Core\Config; use OPNsense\AcmeClient\LeUtils; /** - * Common constants and functions for all Let's Encrypt classes + * Common constants and functions for all ACME classes * @package OPNsense\AcmeClient */ abstract class LeCommon diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidationInterface.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidationInterface.php index 903486ffa..86c6be451 100644 --- a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidationInterface.php +++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeValidationInterface.php @@ -1,7 +1,7 @@ - - Services: Let's Encrypt + + Services: ACME Client ui/acmeclient/* api/acmeclient/* - + 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 a105ce598..5f0c4fd6c 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 @@ -1,7 +1,7 @@ //OPNsense/AcmeClient 3.0.0 - A secure Let's Encrypt plugin + A secure ACME Client plugin diff --git a/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/Menu/Menu.xml b/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/Menu/Menu.xml index 33a92cfb5..07b758fd0 100644 --- a/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/Menu/Menu.xml +++ b/security/acme-client/src/opnsense/mvc/app/models/OPNsense/AcmeClient/Menu/Menu.xml @@ -1,7 +1,6 @@ - - + @@ -13,6 +12,6 @@ - + diff --git a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt index 7a95eef4b..212d76673 100644 --- a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt +++ b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt @@ -1,6 +1,6 @@ {# -Copyright (C) 2017 Frank Wall +Copyright (C) 2017-2021 Frank Wall OPNsense® is Copyright © 2014-2015 by Deciso B.V. All rights reserved. @@ -300,7 +300,7 @@ POSSIBILITY OF SUCH DAMAGE. if (gridParams['register'] != undefined) { var uuid=$(this).data("row-id"); stdDialogConfirm('{{ lang._('Confirmation Required') }}', - '{{ lang._('Register the selected account with Lets Encrypt?') }}', + '{{ lang._('Register the selected account with the configured ACME CA?') }}', '{{ lang._('Yes') }}', '{{ lang._('Cancel') }}', function() { ajaxCall(url=gridParams['register'] + uuid,sendData={},callback=function(data,status){ // reload grid afterwards diff --git a/security/acme-client/src/opnsense/scripts/OPNsense/AcmeClient/lecert.php b/security/acme-client/src/opnsense/scripts/OPNsense/AcmeClient/lecert.php index 3558d44dc..76fb546cf 100755 --- a/security/acme-client/src/opnsense/scripts/OPNsense/AcmeClient/lecert.php +++ b/security/acme-client/src/opnsense/scripts/OPNsense/AcmeClient/lecert.php @@ -41,7 +41,7 @@ use OPNsense\AcmeClient\LeCertificate; const ABOUT = << 'run automations for the specified certificate', ], 'register' => [ - 'description' => 'register the specified account with Lets Encrypt', + 'description' => 'register the specified account with ACME CA', ], ]; @@ -76,7 +76,7 @@ const STATIC_OPTIONS = << "/var/etc/acme-client/challenges/.well-known/acme-challenge/" ) # Maximum idle time with nothing being written From 057e21c9a34b759f7e01e13c049b7cb7008af96c Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Sat, 31 Jul 2021 14:54:00 +0200 Subject: [PATCH 03/14] security/acme-client: bump version --- security/acme-client/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/security/acme-client/Makefile b/security/acme-client/Makefile index de8023fa3..aa8f7cc86 100644 --- a/security/acme-client/Makefile +++ b/security/acme-client/Makefile @@ -1,5 +1,5 @@ PLUGIN_NAME= acme-client -PLUGIN_VERSION= 2.6 +PLUGIN_VERSION= 3.0 PLUGIN_COMMENT= ACME Client PLUGIN_MAINTAINER= opnsense@moov.de PLUGIN_DEPENDS= acme.sh py${PLUGIN_PYTHON}-dns-lexicon From 53b20d2a17495e20d247efb4cd9b021ea7fdc685 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Sat, 31 Jul 2021 14:57:39 +0200 Subject: [PATCH 04/14] security/acme-client: remove obsolete account parameters --- security/acme-client/pkg-descr | 3 +++ .../OPNsense/AcmeClient/forms/dialogAccount.xml | 7 ------- .../mvc/app/models/OPNsense/AcmeClient/AcmeClient.xml | 11 ----------- 3 files changed, 3 insertions(+), 18 deletions(-) diff --git a/security/acme-client/pkg-descr b/security/acme-client/pkg-descr index 101894d32..0e3f1c9a2 100644 --- a/security/acme-client/pkg-descr +++ b/security/acme-client/pkg-descr @@ -18,6 +18,9 @@ Changed: * rename "Let's Encrypt Environment" to "ACME CA" (#2361) * preserve old LE accounts/certs by adding a compatibility layer (#2361) +Removed: +* remove obsolete account parameters: certificateAuthority, lastUpdate + 2.6 Added: 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 2800717bd..b8a2e2ebb 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,11 +23,4 @@ text Optional e-mail address for this account. - - account.certificateAuthority - - dropdown - - 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 5f0c4fd6c..99247de8f 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 @@ -144,21 +144,10 @@ N - - Y - letsencrypt - - Let's Encrypt CA - - N - - - N - N From 1e0e4dc323098531973f23b1271d5f8962819517 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Wed, 4 Aug 2021 12:19:19 +0200 Subject: [PATCH 05/14] security/acme-client: remove the legacy log file, refs #2366 --- security/acme-client/pkg-descr | 1 + .../app/library/OPNsense/AcmeClient/LeAccount.php | 2 +- .../mvc/app/library/OPNsense/AcmeClient/LeCommon.php | 12 ++++++------ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/security/acme-client/pkg-descr b/security/acme-client/pkg-descr index 0e3f1c9a2..337a667b3 100644 --- a/security/acme-client/pkg-descr +++ b/security/acme-client/pkg-descr @@ -17,6 +17,7 @@ Changed: * rename plugin from "Let's Encrypt client" to "ACME Client" (#2361) * rename "Let's Encrypt Environment" to "ACME CA" (#2361) * preserve old LE accounts/certs by adding a compatibility layer (#2361) +* remove the legacy log file and only rely on syslog logging (#2366) Removed: * remove obsolete account parameters: certificateAuthority, lastUpdate 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 ad172033c..afec980fd 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 @@ -73,7 +73,7 @@ class LeAccount extends LeCommon $account_ca_file = $account_conf_dir . '/ca.conf'; $acme_conf = array(); $acme_conf[] = "CERT_HOME='" . self::ACME_HOME_DIR . "'"; - $acme_conf[] = "LOG_FILE='" . self::ACME_LOG_FILE . "'"; + $acme_conf[] = "SYS_LOG='" . $this->acme_syslog . "'"; $acme_conf[] = "ACCOUNT_KEY_PATH='" . $account_key_file . "'"; $acme_conf[] = "ACCOUNT_JSON_PATH='" . $account_json_file . "'"; $acme_conf[] = "CA_CONF='" . $account_ca_file . "'"; diff --git a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCommon.php b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCommon.php index f8d765bd3..1863061d6 100644 --- a/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCommon.php +++ b/security/acme-client/src/opnsense/mvc/app/library/OPNsense/AcmeClient/LeCommon.php @@ -42,7 +42,6 @@ abstract class LeCommon public const ACME_BASE_CERT_DIR = '/var/etc/acme-client/certs'; public const ACME_BASE_CONFIG_DIR = '/var/etc/acme-client/configs'; public const ACME_HOME_DIR = '/var/etc/acme-client/home'; - public const ACME_LOG_FILE = '/var/log/acme.sh.log'; // Defaults for acme.sh public const ACME_ACCOUNT_KEY_LENGTH = 4096; @@ -61,6 +60,7 @@ abstract class LeCommon protected $acme_args = array(); # command line arguments to be passed to acme.sh protected $acme_env = array(); # environment variables to be used when running acme.sh protected $acme_keylength; # private key length in acme.sh compatible format + protected $acme_syslog; # syslog log level // Certificate details and configuration protected $cert_id; # AcmeClient certificate object ID @@ -173,34 +173,34 @@ abstract class LeCommon case 'extended': $this->acme_args[] = '--syslog 6'; $this->acme_args[] = '--log-level 2'; + $this->acme_syslog = 6; $this->debug = false; break; case 'debug': $this->acme_args[] = '--syslog 7'; $this->acme_args[] = '--debug'; + $this->acme_syslog = 7; $this->debug = true; break; case 'debug2': $this->acme_args[] = '--syslog 7'; $this->acme_args[] = '--debug 2'; + $this->acme_syslog = 7; $this->debug = true; break; case 'debug3': $this->acme_args[] = '--syslog 7'; $this->acme_args[] = '--debug 3'; + $this->acme_syslog = 7; $this->debug = true; break; default: $this->acme_args[] = '--syslog 6'; $this->acme_args[] = '--log-level 1'; + $this->acme_syslog = 6; $this->debug = false; break; } - - // Set log file - // NOTE: This log file is no longer exposed to the GUI. However, it may - // still turn out to be useful for debug purposes in rare egde cases. - $this->acme_args[] = LeUtils::execSafe('--log %s', self::ACME_LOG_FILE); } /** From e4684ec47eda70cd5376c0dfd7ffd4624c30dc06 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Wed, 4 Aug 2021 12:48:58 +0200 Subject: [PATCH 06/14] security/acme-client: update tooltip style, closes #2188 --- security/acme-client/pkg-descr | 1 + .../OPNsense/AcmeClient/certificates.volt | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/security/acme-client/pkg-descr b/security/acme-client/pkg-descr index 337a667b3..cd81cf072 100644 --- a/security/acme-client/pkg-descr +++ b/security/acme-client/pkg-descr @@ -18,6 +18,7 @@ Changed: * rename "Let's Encrypt Environment" to "ACME CA" (#2361) * preserve old LE accounts/certs by adding a compatibility layer (#2361) * remove the legacy log file and only rely on syslog logging (#2366) +* update tooltip style for 21.7 (#2188) Removed: * remove obsolete account parameters: certificateAuthority, lastUpdate diff --git a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt index c30891a76..fb90c8d15 100644 --- a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt +++ b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt @@ -59,13 +59,13 @@ POSSIBILITY OF SUCH DAMAGE. url: '/api/acmeclient/certificates/search', formatters: { "commands": function (column, row) { - return " " + - "" + - "" + - "" + - "" + - "" + - ""; + return " " + + "" + + "" + + "" + + "" + + "" + + ""; }, "rowtoggle": function (column, row) { if (parseInt(row[column.id], 2) == 1) { @@ -140,6 +140,9 @@ POSSIBILITY OF SUCH DAMAGE. */ var grid_certificates = $("#grid-certificates").bootgrid(gridopt).on("loaded.rs.jquery.bootgrid", function (e) { + // toggle all rendered tooltips (once for all) + $('.bootgrid-tooltip').tooltip(); + // scale footer on resize $(this).find("tfoot td:first-child").attr('colspan',$(this).find("th").length - 1); $(this).find('tr[data-row-id]').each(function(){ @@ -209,7 +212,6 @@ POSSIBILITY OF SUCH DAMAGE. * copy actions for items from opnsense_bootgrid_plugin.js */ grid_certificates.on("loaded.rs.jquery.bootgrid", function(){ - // edit dialog id to use var editDlg = $(this).attr('data-editDialog'); var gridId = $(this).attr('id'); From 8bc24bc9adc1212aeafdd8a3ddcfa54ebc46fdd0 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Wed, 4 Aug 2021 12:59:52 +0200 Subject: [PATCH 07/14] security/acme-client: add tooltips for account command buttons, refs #2188 While here, align tooltips with core UI by using capitalization. --- security/acme-client/pkg-descr | 1 + .../app/views/OPNsense/AcmeClient/accounts.volt | 11 +++++++---- .../views/OPNsense/AcmeClient/certificates.volt | 14 +++++++------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/security/acme-client/pkg-descr b/security/acme-client/pkg-descr index cd81cf072..d80dac31f 100644 --- a/security/acme-client/pkg-descr +++ b/security/acme-client/pkg-descr @@ -19,6 +19,7 @@ Changed: * preserve old LE accounts/certs by adding a compatibility layer (#2361) * remove the legacy log file and only rely on syslog logging (#2366) * update tooltip style for 21.7 (#2188) +* add tooltips for account command buttons (#2188) Removed: * remove obsolete account parameters: certificateAuthority, lastUpdate diff --git a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt index 212d76673..0f03c4b1d 100644 --- a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt +++ b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt @@ -53,10 +53,10 @@ POSSIBILITY OF SUCH DAMAGE. url: '/api/acmeclient/accounts/search', formatters: { "commands": function (column, row) { - return " " + - "" + - "" + - ""; + return " " + + "" + + "" + + ""; }, "rowtoggle": function (column, row) { if (parseInt(row[column.id], 2) == 1) { @@ -117,6 +117,9 @@ POSSIBILITY OF SUCH DAMAGE. */ var grid_accounts = $("#grid-accounts").bootgrid(gridopt).on("loaded.rs.jquery.bootgrid", function (e) { + // toggle all rendered tooltips (once for all) + $('.bootgrid-tooltip').tooltip(); + // scale footer on resize $(this).find("tfoot td:first-child").attr('colspan',$(this).find("th").length - 1); $(this).find('tr[data-row-id]').each(function(){ diff --git a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt index fb90c8d15..5c053a9d5 100644 --- a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt +++ b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/certificates.volt @@ -59,13 +59,13 @@ POSSIBILITY OF SUCH DAMAGE. url: '/api/acmeclient/certificates/search', formatters: { "commands": function (column, row) { - return " " + - "" + - "" + - "" + - "" + - "" + - ""; + return " " + + "" + + "" + + "" + + "" + + "" + + ""; }, "rowtoggle": function (column, row) { if (parseInt(row[column.id], 2) == 1) { From bc0b544b023e3703176bac634993cdf0ab47fdf0 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Thu, 5 Aug 2021 22:56:53 +0200 Subject: [PATCH 08/14] security/acme-client: add introduction pages --- security/acme-client/pkg-descr | 1 + .../AcmeClient/AccountsController.php | 5 +- .../OPNsense/AcmeClient/ActionsController.php | 5 +- .../AcmeClient/CertificatesController.php | 5 +- .../OPNsense/AcmeClient/IndexController.php | 5 +- .../AcmeClient/ValidationsController.php | 5 +- .../OPNsense/AcmeClient/forms/settings.xml | 6 +++ .../models/OPNsense/AcmeClient/AcmeClient.xml | 4 ++ .../views/OPNsense/AcmeClient/accounts.volt | 26 ++++++++-- .../views/OPNsense/AcmeClient/actions.volt | 26 ++++++++-- .../OPNsense/AcmeClient/certificates.volt | 44 +++++++++++------ .../views/OPNsense/AcmeClient/settings.volt | 49 +++++++++++++++---- .../OPNsense/AcmeClient/validations.volt | 25 ++++++++-- 13 files changed, 164 insertions(+), 42 deletions(-) diff --git a/security/acme-client/pkg-descr b/security/acme-client/pkg-descr index d80dac31f..b172474e3 100644 --- a/security/acme-client/pkg-descr +++ b/security/acme-client/pkg-descr @@ -12,6 +12,7 @@ Plugin Changelog Added: * add support for new ACME CA's: buypass, buypass_test, sslcom, zerossl (#2361) +* add introduction pages and an option to hide them 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/AccountsController.php b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/AccountsController.php index 374112c23..202b578fd 100644 --- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/AccountsController.php +++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/AccountsController.php @@ -1,7 +1,7 @@ view->formDialogAccount = $this->getForm("dialogAccount"); + // set additional view parameters + $mdlAcme = new \OPNsense\AcmeClient\AcmeClient(); + $this->view->showIntro = (string)$mdlAcme ->settings->showIntro; // choose template $this->view->pick('OPNsense/AcmeClient/accounts'); } diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/ActionsController.php b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/ActionsController.php index 002446342..fb438bff6 100644 --- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/ActionsController.php +++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/ActionsController.php @@ -1,7 +1,7 @@ view->formDialogAction = $this->getForm("dialogAction"); + // set additional view parameters + $mdlAcme = new \OPNsense\AcmeClient\AcmeClient(); + $this->view->showIntro = (string)$mdlAcme ->settings->showIntro; // choose template $this->view->pick('OPNsense/AcmeClient/actions'); } diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/CertificatesController.php b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/CertificatesController.php index 8e58c37ef..df9b8fd53 100644 --- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/CertificatesController.php +++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/CertificatesController.php @@ -1,7 +1,7 @@ view->formDialogCertificate = $this->getForm("dialogCertificate"); + // set additional view parameters + $mdlAcme = new \OPNsense\AcmeClient\AcmeClient(); + $this->view->showIntro = (string)$mdlAcme ->settings->showIntro; // choose template $this->view->pick('OPNsense/AcmeClient/certificates'); } diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/IndexController.php b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/IndexController.php index f13b7e9c1..59a0f966c 100644 --- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/IndexController.php +++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/IndexController.php @@ -1,7 +1,7 @@ view->settingsForm = $this->getForm("settings"); + // set additional view parameters + $mdlAcme = new \OPNsense\AcmeClient\AcmeClient(); + $this->view->showIntro = (string)$mdlAcme ->settings->showIntro; // pick the template to serve $this->view->pick('OPNsense/AcmeClient/settings'); } diff --git a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/ValidationsController.php b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/ValidationsController.php index 8c2f2a365..32a8e613b 100644 --- a/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/ValidationsController.php +++ b/security/acme-client/src/opnsense/mvc/app/controllers/OPNsense/AcmeClient/ValidationsController.php @@ -1,7 +1,7 @@ view->formDialogValidation = $this->getForm("dialogValidation"); + // set additional view parameters + $mdlAcme = new \OPNsense\AcmeClient\AcmeClient(); + $this->view->showIntro = (string)$mdlAcme ->settings->showIntro; // choose template $this->view->pick('OPNsense/AcmeClient/validations'); } 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 e5cea7414..770341a2c 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 @@ -29,6 +29,12 @@ dropdown + + acmeclient.settings.showIntro + + checkbox + + acmeclient.settings.challengePort 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 99247de8f..91183a3ea 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 @@ -121,6 +121,10 @@ debug 3 + + Y + 1 + diff --git a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt index 0f03c4b1d..dfa7eb6cf 100644 --- a/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt +++ b/security/acme-client/src/opnsense/mvc/app/views/OPNsense/AcmeClient/accounts.volt @@ -321,12 +321,28 @@ POSSIBILITY OF SUCH DAMAGE. -