From a6dc6304fdb5eaf73cbd7d670fcdb737723a7072 Mon Sep 17 00:00:00 2001 From: Riddhesh Sanghvi Date: Tue, 30 Jun 2026 15:47:04 +0530 Subject: [PATCH 1/3] fix(ssl): include ACME error message in operator-facing warnings --- src/helper/Site_Letsencrypt.php | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/helper/Site_Letsencrypt.php b/src/helper/Site_Letsencrypt.php index 0669eaf1..87255cd2 100644 --- a/src/helper/Site_Letsencrypt.php +++ b/src/helper/Site_Letsencrypt.php @@ -405,7 +405,7 @@ public function check( Array $domains, $wildcard = false, $preferred_challenge = $authorizationChallengeToCleanup[] = $authorizationChallenge; } catch ( \Exception $e ) { \EE::debug( $e->getMessage() ); - \EE::warning( 'Challenge Authorization failed. Check logs and check if your domain is pointed correctly to this server.' ); + \EE::warning( 'Challenge Authorization failed (' . $e->getMessage() . '). Check logs and check if your domain is pointed correctly to this server.' ); $site_name = $domains[0]; $site_name = str_replace( '*.', '', $site_name ); @@ -641,18 +641,14 @@ private function executeRenewal( $domain, array $alternativeNames, $force = fals return true; } catch ( \Exception $e ) { - \EE::warning( 'A critical error occured during certificate renewal' ); + \EE::warning( 'A critical error occurred during certificate renewal: ' . $e->getMessage() ); \EE::debug( print_r( $e, true ) ); - - \EE::warning( 'Challenge Authorization failed. Check logs and check if your domain is pointed correctly to this server.' ); \EE::log( 'You can fix the issue and re-run: ee site ssl-verify ' . $domains[0] ); return false; } catch ( \Throwable $e ) { - \EE::warning( 'A critical error occured during certificate renewal' ); + \EE::warning( 'A critical error occurred during certificate renewal: ' . $e->getMessage() ); \EE::debug( print_r( $e, true ) ); - - \EE::warning( 'Challenge Authorization failed. Check logs and check if your domain is pointed correctly to this server.' ); \EE::log( 'You can fix the issue and re-run: ee site ssl-verify ' . $domains[0] ); return false; From 09f102eb040208994585d3963c42761a1f4e7b2a Mon Sep 17 00:00:00 2001 From: Riddhesh Sanghvi Date: Thu, 24 Sep 2026 10:39:51 +0000 Subject: [PATCH 2/3] fix(ssl): avoid undefined $domains in renewal failure hint When renewal fails before the order is loaded (e.g. the stored certificate or key pair can't be read), $domains is not yet set, so the "re-run ee site ssl-verify" hint printed an empty site name plus PHP undefined-variable warnings. Use $domain, which is always set and equals $domains[0]. --- src/helper/Site_Letsencrypt.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/helper/Site_Letsencrypt.php b/src/helper/Site_Letsencrypt.php index 87255cd2..0f8745bf 100644 --- a/src/helper/Site_Letsencrypt.php +++ b/src/helper/Site_Letsencrypt.php @@ -643,13 +643,13 @@ private function executeRenewal( $domain, array $alternativeNames, $force = fals } catch ( \Exception $e ) { \EE::warning( 'A critical error occurred during certificate renewal: ' . $e->getMessage() ); \EE::debug( print_r( $e, true ) ); - \EE::log( 'You can fix the issue and re-run: ee site ssl-verify ' . $domains[0] ); + \EE::log( 'You can fix the issue and re-run: ee site ssl-verify ' . $domain ); return false; } catch ( \Throwable $e ) { \EE::warning( 'A critical error occurred during certificate renewal: ' . $e->getMessage() ); \EE::debug( print_r( $e, true ) ); - \EE::log( 'You can fix the issue and re-run: ee site ssl-verify ' . $domains[0] ); + \EE::log( 'You can fix the issue and re-run: ee site ssl-verify ' . $domain ); return false; } From c89bfa64a9263ec06b85fde3e1364eec4a720e8f Mon Sep 17 00:00:00 2001 From: Riddhesh Sanghvi Date: Thu, 24 Sep 2026 10:40:13 +0000 Subject: [PATCH 3/3] fix(ssl): include ACME error in order request failure warning authorize() swallowed the requestOrder() exception without logging it anywhere, so new-order failures (rate limits, rejected identifiers, account errors), which Let's Encrypt reports at order creation, still showed only the generic "local environment" warning. Append the exception message as the other SSL warnings now do. --- src/helper/Site_Letsencrypt.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helper/Site_Letsencrypt.php b/src/helper/Site_Letsencrypt.php index 0f8745bf..fbb60520 100644 --- a/src/helper/Site_Letsencrypt.php +++ b/src/helper/Site_Letsencrypt.php @@ -208,7 +208,7 @@ public function authorize( Array $domains, $wildcard = false, $preferred_challen try { $order = $this->client->requestOrder( $domains ); } catch ( \Exception $e ) { - \EE::warning( 'It seems you\'re in local environment or using non-public domain, please check logs. Skipping letsencrypt.' ); + \EE::warning( 'Let\'s Encrypt order request failed (' . $e->getMessage() . '). It seems you\'re in local environment or using non-public domain, please check logs. Skipping letsencrypt.' ); \EE::log( 'You can fix the issue and re-run: ee site ssl-verify ' . $domains[0] ); return false;