Do not request www aliases when issuing SSL for subdomain sites.
Deploy Ladill Hosting / deploy (push) Successful in 41s

Certbot was including www.data.example.com for managed DNS subdomains, which NXDOMAIN and failed the whole certificate.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-13 17:18:27 +00:00
co-authored by Cursor
parent ebacc3e409
commit 335c0fea61
@@ -1032,22 +1032,28 @@ NGINX;
]);
}
// Build domain list - include www if we manage DNS or if it resolves
// Build domain list include www only for apex sites when it exists.
// Subdomains like data.example.com must not request www.data.example.com
// (NXDOMAIN), or the whole certificate fails.
$domainArgs = ' -d ' . escapeshellarg($domain);
$wwwDomain = "www.{$domain}";
$domainModel = $site->domain_id ? $site->domain()->first() : null;
$dnsIsManaged = $domainModel && $domainModel->dns_mode === 'managed';
if ($dnsIsManaged) {
// We manage DNS, so www record exists - always include it
$dnsIsManaged = $domainModel && (
(string) $domainModel->dns_mode === 'managed'
|| (method_exists($domainModel, 'usesManagedDns') && $domainModel->usesManagedDns())
);
$isSubdomainSite = ($site->type === 'subdomain') || str_starts_with(strtolower((string) $site->type), 'sub');
if ($isSubdomainSite) {
Log::info('SSL: Skipping www alias for subdomain site', ['domain' => $domain]);
} elseif ($dnsIsManaged) {
$domainArgs .= ' -d ' . escapeshellarg($wwwDomain);
Log::info("SSL: Including www subdomain (managed DNS)", ['domain' => $domain, 'www' => $wwwDomain]);
Log::info('SSL: Including www subdomain (managed DNS)', ['domain' => $domain, 'www' => $wwwDomain]);
} elseif ($this->domainResolvesToServer($wwwDomain)) {
// Manual DNS - only include www if it resolves
$domainArgs .= ' -d ' . escapeshellarg($wwwDomain);
Log::info("SSL: Including www subdomain (resolves)", ['domain' => $domain, 'www' => $wwwDomain]);
Log::info('SSL: Including www subdomain (resolves)', ['domain' => $domain, 'www' => $wwwDomain]);
} else {
Log::info("SSL: Skipping www subdomain (manual DNS, does not resolve)", ['domain' => $domain, 'www' => $wwwDomain]);
Log::info('SSL: Skipping www subdomain (manual DNS, does not resolve)', ['domain' => $domain, 'www' => $wwwDomain]);
}
$result = $this->runLocalAdminOperationOrRemote(