Blog

Domini personalizzati per SaaS: far usare ai clienti il proprio dominio con Cloudflare for SaaS

Fai usare ai clienti il loro dominio sul tuo SaaS con Cloudflare for SaaS: come funziona la validazione, quanto costa a ottobre 2026 e dove si inceppa.

Di Nicolás Cerón ·

Una fila di vetrine diverse su una strada di notte, con uno spaccato sotto il marciapiede che mostra cavi cremisi che collegano ogni negozio a un'unica sala macchine condivisa.

La risposta breve

Per far servire la tua app su un dominio del cliente, ad esempio portal.customer.com, registri quel dominio come custom hostname nella tua zona Cloudflare. Il cliente aggiunge un record CNAME che punta a te, Cloudflare verifica che controlli l'hostname, una certification authority emette i certificati e le richieste iniziano ad arrivare alla tua app.

A ottobre 2026, la pagina dei piani di Cloudflare for SaaS include 100 custom hostname nei piani Free, Pro e Business, indica 0,10 $ per ogni hostname aggiuntivo e limita questi piani a 50.000 hostname.

Due limiti condizionano ogni progetto. I clienti non possono puntare a te un dominio apex puro (customer.com) senza un add-on Enterprise a pagamento. E i custom hostname wildcard, i certificati personalizzati e la scelta della certification authority sono solo Enterprise. La configurazione su Cloudflare richiede pochi passaggi. Il lavoro di prodotto intorno richiede più tempo, e questa guida parla soprattutto di quello.

Che cos'è un custom hostname

Un custom hostname è un dominio di proprietà del cliente che Cloudflare instrada verso la tua zona. La guida alla configurazione prevede quattro elementi:

  • Zona SaaS. Il tuo dominio su Cloudflare, con Cloudflare for SaaS attivo. Per iniziare basta una zona sul piano Free.
  • Origine di fallback. Un record DNS con proxy, come proxy-fallback.yourapp.com, verso cui va il traffico dei custom hostname.
  • Target CNAME. Un nome facoltativo e più comprensibile a cui i clienti possono puntare, come customers.yourapp.com.
  • Custom hostname. Il dominio del cliente, creato via API o dashboard, con un proprio stato di validazione. Cloudflare emette due certificati per ciascuno: uno principale ECDSA P-256 e uno di fallback RSA a 2048 bit per i client più vecchi.

Se la tua app gira su Cloudflare Workers, la piattaforma su cui costruisce Dardo, il Worker può fare da origine di fallback. Una route */* intercetta le richieste di ogni custom hostname e il tuo codice legge l'header Host per individuare il tenant. Cloudflare offre anche metadati personalizzati per hostname, ma è un add-on Enterprise a pagamento: con gli altri piani quella ricerca resta nel tuo database, ad esempio D1.

Come funziona il flusso

  1. Il cliente inserisce un dominio nelle impostazioni della tua app. Il backend lo normalizza e chiama l'endpoint Create Custom Hostname indicando un metodo di validazione del certificato.
  2. Il cliente aggiunge il record DNS che gli mostri, ad esempio portal.customer.com CNAME customers.yourapp.com.
  3. Cloudflare verifica la proprietà dell'hostname. La validazione in tempo reale parte quando compare il CNAME e può causare un breve downtime. La pre-validazione usa un record TXT o un token HTTP prima delle modifiche DNS, per i domini già attivi. La pre-validazione non è supportata quando anche la zona del cliente è su Cloudflare (configurazione "Orange-to-Orange").
  4. La certification authority verifica il controllo del dominio ed emette i certificati.
  5. L'hostname è pronto quando status e ssl.status sono entrambi active e il DNS punta al tuo target. Cloudflare avverte che un handshake TLS può riuscire prima che ssl.status diventi active, quindi considera l'endpoint dei dettagli del custom hostname come fonte di verità.

Metodi di validazione del certificato

La guida alla validazione di Cloudflare offre queste opzioni:

MetodoCosa fa il clienteFunziona prima del cambio DNSNote
HTTP, automaticoAggiunge solo il CNAMENoIl più semplice. Cloudflare lo suggerisce quando i clienti "possono tollerare qualche minuto di downtime".
HTTP, manualeNiente se il dominio punta già a te; altrimenti pubblica il tuo token sul server attualeSìUtile quando il dominio è attivo presso un altro provider.
TXTAggiunge un record TXT che gli fornisciSìObbligatorio per gli hostname wildcard.
Delegated DCVAggiunge una sola volta un CNAME _acme-challengeSìPermette a Cloudflare di rinnovare tutti i certificati futuri. Un record TXT _acme-challenge esistente lo blocca.

La validazione non aspetta all'infinito. Cloudflare ritenta la validazione dell'hostname 75 volte in sette giorni e, secondo il suo programma di backoff, "se la validazione non riesce, il custom hostname verrà eliminato". Anche i token dei certificati scadono: dopo 7 giorni con Let's Encrypt e dopo 14 giorni con Google Trust Services o SSL.com.

Quanto costa, a ottobre 2026

FreeProBusinessEnterprise
Hostname inclusi100100100Personalizzato
Prezzo per hostname aggiuntivo$0.10$0.10$0.10Personalizzato
Hostname massimi50,00050,00050,000Illimitati (oltre 50.000 contatta le vendite)
Custom hostname wildcardNoNoNoSì
Certificati personalizzati e CA selezionabileNoNoNoSì
Apex proxying / BYOIPNoNoNoAdd-on a pagamento
Metadati personalizzatiNoNoNoAdd-on a pagamento

La pagina dei piani riporta 0,10 $ senza indicare il periodo. L'annuncio del 2022 di Cloudflare lo descriveva come una riduzione del prezzo "da 2 $ a 0,10 $ al mese". Con quella tariffa mensile, 1.000 domini dei clienti significano 900 oltre i 100 inclusi, cioè 90 $ al mese.

Due regole di fatturazione contano per la progettazione del prodotto. Secondo la pagina su quote e fatturazione di Cloudflare, ogni hostname viene conteggiato finché non lo elimini, compresi gli "hostname in attesa di validazione o attivazione". Inoltre i piani non Enterprise hanno una soglia di applicazione via API oltre la quale i nuovi hostname vengono rifiutati.

Dove si inceppa

Domini apex

La guida alla configurazione di Cloudflare è esplicita: "Per impostazione predefinita, usare un record A per puntare al target non è una configurazione supportata". La maggior parte dei provider DNS non consente un CNAME alla radice di un dominio, quindi i clienti devono usare un sottodominio come www.customer.com o app.customer.com. L'apex proxying assegna al tuo account prefissi IP statici così i clienti possono usare un record A, ma è un add-on Enterprise con un costo a parte. Senza, chiedi ai clienti un sottodominio e spiega come inoltrare il dominio nudo verso di esso dal loro provider DNS.

Certification authority e record CAA

Il riferimento sulle certification authority di Cloudflare elenca Let's Encrypt (certificati da 90 giorni), Google Trust Services e SSL.com (14, 30 o 90 giorni) per i custom hostname. Scegliere la CA è solo Enterprise; altrimenti Cloudflare usa quella predefinita e controlla prima i record CAA. Se i record CAA del cliente non consentono quella CA, l'emissione fallisce con "CAA records block issuance" e solo il cliente può risolvere. Le ricerche CAA seguono le catene di CNAME, quindi contano anche i record CAA del tuo dominio target. La guida alla risoluzione dei problemi elenca gli altri errori lato cliente: DNSSEC non funzionante e server DNS che rispondono SERVFAIL.

Rinnovi

I certificati dei custom hostname durano 90 giorni e possono essere rinnovati 30 giorni prima della scadenza. Gli hostname attivi non wildcard si rinnovano automaticamente via HTTP. Se un hostname non è più attivo, ad esempio perché il cliente ha cambiato il DNS, il cliente deve inserire un nuovo token e sta a te inviarglielo. I wildcard si possono rinnovare solo tramite TXT, ed è ciò che Delegated DCV automatizza.

Clienti con un'altra CDN o su Cloudflare

Cloudflare dichiara che i custom hostname che usano un'altra CDN non sono compatibili quando quella CDN nasconde i record DNS. I clienti con domini su Cloudflare pongono il problema opposto: se se ne vanno e tu non elimini il loro hostname, può continuare a instradare verso il tuo servizio anche dopo che hanno cambiato DNS.

Worker davanti ai percorsi di validazione

Se un Worker è la tua origine di fallback, deve lasciar passare invariati /.well-known/pki-validation/* e /.well-known/acme-challenge/*. Una route catch-all che risponde con la pagina 404 della tua app interrompe la validazione HTTP.

Il lavoro di prodotto intorno

  • Controllo dei piani. Decidi quali dei tuoi piani includono domini personalizzati e quanti, e verificalo prima di chiamare Cloudflare. Quota e soglia di Cloudflare sono tetti massimi, non il tuo listino.
  • Schermata di onboarding. Un solo campo. Converti in minuscolo, rimuovi protocollo e percorso, rifiuta i domini apex nudi a meno che tu non abbia acquistato l'apex proxying e rifiuta il nome della tua zona, che secondo Cloudflare non va mai creato come custom hostname. Poi mostra il record esatto da aggiungere, con un pulsante per copiarlo.
  • Due stati in linguaggio semplice. Hostname e certificato si validano separatamente, quindi mostra entrambi. Traduci ssl.validation_errors in istruzioni: "I record CAA del tuo dominio non consentono la nostra certification authority; aggiungi questo record" è meglio di "pending_validation". La risposta di creazione potrebbe non includere ancora i record di validazione, quindi richiedi di nuovo l'hostname dopo una breve attesa. Le notifiche webhook di Cloudflare segnalano gli eventi di validazione ed emissione, meglio del polling.
  • Monitoraggio dei rinnovi. Un job giornaliero che segnala gli hostname con certificato non attivo o con DNS che non punta più a te, così il tuo team lo sa prima del cliente.
  • Pulizia. Elimina gli hostname che non si validano mai e quelli dei clienti che se ne vanno. Entrambi vengono fatturati finché non li elimini.
  • Isolamento dei tenant. Individua il tenant solo dagli hostname attivi nel tuo database. Se i tenant ricevono anche sottodomini del tuo dominio, la documentazione sui domini di Vercel segnala che un cookie impostato da un tenant sul dominio padre raggiunge anche gli altri, quindi tieni dashboard e login su un dominio separato.
  • Playbook di supporto. Una breve pagina per il tuo team che associa ogni errore a chi lo risolve: CNAME mancante, CAA, DNSSEC e SERVFAIL spettano al cliente; token, rate limit della CA e route del Worker spettano a te.

È il tipo di lavoro che Dardo svolge nello sviluppo di web app, e i portali clienti in white label sono il contesto in cui i domini personalizzati vengono richiesti più spesso.

Alternative: Vercel e Netlify

Se la tua app gira già altrove, entrambi gli host gestiscono i domini dei clienti, con limiti propri documentati a ottobre 2026.

Cloudflare for SaaSVercelNetlify
Limiti di domini100 inclusi, fino a 50.000 su Free, Pro e Business50 per progetto su Hobby; "Unlimited" su Pro ed Enterprise, con limiti soft di 100.000 e 1.000.000"Consigliamo di assegnare non più di 50 alias di dominio a un sito"
Domini apexAdd-on EnterpriseRecord A verso il valore indicato nella scheda del dominio del progettoALIAS, ANAME o CNAME flattening, oppure un record A come alternativa
CertificatiAutomatici, due per hostname; certificati personalizzati su EnterpriseAutomatici dopo la verifica del dominio; certificati personalizzati su EnterpriseLet's Encrypt automatico; certificati personalizzati rinnovati a mano
WildcardEnterpriseRichiedono i nameserver di Vercel o un _acme-challenge delegatoAutomatici per i domini su Netlify DNS
Pensato perMolti domini di clienti su una sola zonaPiattaforme multi-tenant con API REST e SDKAl massimo qualche decina di domini per sito

Il supporto apex di Vercel è la differenza più netta: i clienti possono puntarvi un dominio nudo con un record A. Nota che il piano Hobby è limitato a "uso personale e non commerciale" secondo le linee guida sul fair use di Vercel, quindi un SaaS a pagamento parte dal piano Pro. La raccomandazione di Netlify di 50 alias rende questa piattaforma poco adatta a un singolo deployment che serve centinaia di domini di clienti.

Quando costruirlo

Se te lo chiedono due o tre clienti, aggiungi i loro hostname dalla dashboard di Cloudflare e tieni una checklist. Costruisci il flusso self-service quando i domini personalizzati diventano parte di un piano che vendi o di un'offerta white label. Se i clienti hanno bisogno di domini apex nudi o di wildcard su larga scala, parla con Cloudflare di Enterprise prima di progettare intorno ai limiti.

Se vuoi quel flusso integrato nel tuo prodotto, con stati, avvisi e note di supporto descritti sopra, raccontaci della tua app.