Do not request www aliases when issuing SSL for subdomain sites.
Deploy Ladill Hosting / deploy (push) Successful in 41s
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:
@@ -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';
|
||||
$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 ($dnsIsManaged) {
|
||||
// We manage DNS, so www record exists - always include it
|
||||
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(
|
||||
|
||||
Reference in New Issue
Block a user