Domande frequenti

Le seguenti informazioni rispondono alle domande frequenti sulla richiesta e l’implementazione del supporto CNAME in Target:

Posso fornire un certificato personalizzato (portare il certificato o il BYOC)?

Puoi fornire un certificato personalizzato. Tuttavia, Adobe sconsiglia questa procedura. La gestione del ciclo di vita del certificato SSL è più semplice sia per Adobe che per te se Adobe acquista e controlla il certificato. I certificati SSL devono essere rinnovati ogni anno. Pertanto, l’Assistenza clienti di Adobe deve contattarti ogni anno per ottenere un nuovo certificato in modo tempestivo. Alcuni clienti possono avere difficoltà a produrre un certificato rinnovato in modo tempestivo. L'implementazione di Target è a rischio alla scadenza del certificato perché i browser rifiutano le connessioni.

AVVERTENZA
Se richiedi un'implementazione Target di CNAME con certificato personale, sei responsabile della fornitura di certificati rinnovati all'Assistenza clienti di Adobe ogni anno. Consentendo la scadenza del certificato CNAME prima che Adobe possa distribuire un certificato rinnovato, si verifica un'interruzione per l'implementazione specifica di Target.

Quanto tempo manca alla scadenza del mio nuovo certificato SSL?

Tutti i certificati acquistati da Adobe sono validi per un anno. Per ulteriori informazioni, consulta l'articolo di DigiCert sui certificati a 1 anno.

Quali nomi host scegliere? Quanti nomi host scegliere per dominio?

Le implementazioni CNAME di Target richiedono un solo nome host per dominio sul certificato SSL e nel DNS del cliente. Adobe consiglia un nome host per dominio. Alcuni clienti richiedono più nomi host per dominio per i propri scopi (ad esempio, test nella gestione temporanea), che è supportato.

La maggior parte dei clienti sceglie un nome host come target.example.com. Adobe consiglia di seguire questa procedura, ma in ultima analisi la scelta è tua. Non richiedere un nome host di un record DNS esistente. Questa operazione causa un conflitto e ritarda il tempo di risoluzione della richiesta CNAME di Target.

Ho già un’implementazione CNAME per Adobe Analytics, posso usare lo stesso certificato o nome host?

No, Target richiede un nome host e un certificato separati.

La mia implementazione corrente di Target è interessata da ITP 2.x?

La versione 2.3 di Apple Intelligent Tracking Prevention (ITP) ha introdotto la funzione di mitigazione del cloaking CNAME, che è in grado di rilevare Target implementazioni CNAME e riduce la scadenza del cookie a sette giorni. Attualmente Target non dispone di alcuna soluzione alternativa per la mitigazione del cloaking CNAME di ITP. Per ulteriori informazioni su ITP, vedere Apple Intelligent Tracking Prevention (ITP) 2.x.

Che tipo di interruzioni del servizio posso aspettarmi quando viene implementata la mia implementazione CNAME?

Non si verifica alcuna interruzione del servizio quando il certificato viene distribuito (inclusi i rinnovi del certificato).

Tuttavia, dopo aver modificato il nome host nel codice di implementazione Target (serverDomain in at.js) nel nuovo nome host CNAME (target.example.com), i browser Web considerano i visitatori di ritorno come nuovi visitatori. I dati di profilo dei visitatori di ritorno andranno persi perché il cookie precedente non è accessibile con il vecchio nome host (clientcode.tt.omtrdc.net). Il cookie precedente non è accessibile a causa di modelli di sicurezza del browser. Questa interruzione si verifica solo al cut-over iniziale al nuovo CNAME. I rinnovi del certificato non hanno lo stesso effetto perché il nome host non cambia.

Quale tipo di chiave e algoritmo di firma del certificato sono utilizzati per l’implementazione del CNAME?

Per impostazione predefinita, tutti i certificati sono RSA SHA-256 e le chiavi sono RSA 2048 bit. Le dimensioni delle chiavi superiori a 2048 bit devono essere richieste esplicitamente tramite Customer Care.

Come posso verificare che la mia implementazione CNAME sia pronta per il traffico?

Utilizza il seguente set di comandi (nel terminale della riga di comando macOS o Linux, utilizzando bash e curl >=7.49):

  1. Copiare e incollare la funzione bash nel terminale o incollarla nel file dello script di avvio bash (in genere ~/.bash_profile o ~/.bashrc) in modo che la funzione sia disponibile nelle sessioni terminale:

    function adobeTargetCnameValidation {
      local hostname="$1"
    
      if [ -z "$hostname" ]; then
        echo "ERROR: no hostname specified"
        return 1
      fi
    
      local service="Adobe Target CNAME implementation"
      local edges="41 42 44 45 46 47 48"
      local edgeDomain="tt.omtrdc.net"
      local edgeFormat="mboxedge%d%s.$edgeDomain"
      local poolDomain="pool.data.adobedc.net"
      local shards=5
      local shardsFoundCount=0
      local shardsFound=""
      local shardsFoundOutput=""
      local curlRegex="subject:.*CN=|expire date:|issuer:"
      local curlValidation="SSL certificate verify ok"
      local curlResponseValidation='"OK"'
      local curlEndpoint="/uptime?mboxClient=uptime3"
      local url="https://$hostname$curlEndpoint"
      local sslShopperUrl="https://www.sslshopper.com/ssl-checker.html#hostname=$hostname"
      local success="✅"
      local failure="🚫"
      local info="🔎"
      local rule="="
      local horizontalRule="$(seq ${COLUMNS:-30} | xargs printf "$rule%.0s")"
      local miniRule="$(seq 5 | xargs printf "$rule%.0s")"
      local curlVersion="$(curl --version | head -1 | cut -d' ' -f2)"
      local curlVersionRequired=7.49
      local edgeCount="$(wc -w <<< "$edges" | tr -d ' ')"
      local cnameExists=""
      local endToEndTestSucceeded=""
    
      for region in IRL1 IND1 SIN OR SYD VA TYO; do
        local currShard="${region}-${poolDomain}"
        local curlResult="$(curl -vsm20 --connect-to "$hostname:443:$currShard:443" "$url" 2>&1)"
    
        if grep -q "$curlValidation" <<< "$curlResult"; then
          shardsFound+=" $currShard"
    
          if grep -q "$curlResponseValidation" <<< "$curlResult"; then
            shardsFoundCount=$((shardsFoundCount+1))
            shardsFoundOutput+="\n\n$miniRule $success $hostname [edge shard: $currShard] $miniRule\n"
          else
            shardsFoundOutput+="\n\n$miniRule $failure $hostname [edge shard: $currShard] $miniRule\n"
          fi
    
          shardsFoundOutput+="$(grep -E "$curlRegex" <<< "$curlResult" | sort)"
    
          if ! grep -q "$curlResponseValidation" <<< "$curlResult"; then
            shardsFoundOutput+="\nERROR: unexpected HTTP response from this shard using $url"
          fi
        fi
      done
    
      echo
      echo "$horizontalRule"
      echo
      echo "$service validation for hostname $hostname:"
    
      local dnsOutput="$(dig -t CNAME +short "$hostname" 2>&1)"
      if grep -qFi ".$edgeDomain" <<< "$dnsOutput"; then
        echo "$success $hostname passes DNS CNAME validation"
        cnameExists=true
      else
        echo -n "$failure $hostname FAILED DNS CNAME validation -- "
        if [ -n "$dnsOutput" ]; then
          echo -e "$dnsOutput is not in the subdomain $edgeDomain"
        else
          echo "required DNS CNAME record pointing to <target-client-code>.$edgeDomain not found"
        fi
      fi
    
      for region in IRL1 IND1 SIN OR SYD VA TYO; do
        local curlResult="$(curl -vsm20 --connect-to "$hostname:443:${region}-pool.data.adobedc.net:443" "https://$hostname$curlEndpoint" 2>&1)"
    
        if grep -q "$curlValidation" <<< "$curlResult"; then
          if grep -q "$curlResponseValidation" <<< "$curlResult"; then
            echo -en "$success $hostname passes TLS and HTTP response validation for region $region"
            if [ -n "$cnameExists" ]; then
              echo
            else
              echo " -- the DNS CNAME is not pointing to the correct subdomain for ${service}s with Adobe-managed certificates" \
                "(bring-your-own-certificate implementations don't have this requirement), but this test passes as configured"
            fi
            endToEndTestSucceeded=true
          else
            echo -n "$failure $hostname FAILED HTTP response validation for region $region --" \
              "unexpected response from $url -- "
            if [ -n "$cnameExists" ]; then
              echo "DNS is NOT pointing to the correct shard, notify Adobe Client Care"
            else
              echo "the required DNS CNAME record is missing, see above"
            fi
          fi
        else
          echo -n "$failure $hostname FAILED TLS validation for region $region -- "
          if [ -n "$cnameExists" ]; then
            echo "DNS is likely NOT pointing to the correct shard or there's a validation issue with the certificate or" \
              "protocols, see curl output below and optionally SSL Shopper ($sslShopperUrl):"
            echo ""
            echo "$horizontalRule"
            echo "$curlResult" | sed 's/^/    /g'
            echo "$horizontalRule"
            echo ""
          else
            echo "the required DNS CNAME record is missing, see above"
          fi
        fi
      done
    
      if [ "$shardsFoundCount" -ge "$edgeCount" ]; then
        echo -n "$success $hostname passes shard validation for the following $shardsFoundCount edge shards:"
        echo -e "$shardsFoundOutput"
        echo
    
        if [ -n "$cnameExists" ] && [ -n "$endToEndTestSucceeded" ]; then
          echo "$horizontalRule"
          echo ""
          echo "  For additional TLS/SSL validation, see SSL Shopper:"
          echo ""
          echo "    $info  $sslShopperUrl"
          echo ""
          echo "  To check DNS propagation around the world, see whatsmydns.net:"
          echo ""
          echo "    $info  DNS A records:     https://whatsmydns.net/#A/$hostname"
          echo "    $info  DNS CNAME record:  https://whatsmydns.net/#CNAME/$hostname"
        fi
      else
        echo -n "$failure $hostname FAILED shard validation -- shards found: $shardsFoundCount," \
          "expected: $edgeCount"
        echo ""
      fi
    
      echo
      echo "$horizontalRule"
      echo
    }
    
  2. Incolla questo comando (sostituendo target.example.com con il tuo nome host):

    adobeTargetCnameValidation target.example.com
    

    Se l’implementazione è pronta, viene visualizzato un output simile al seguente. La parte importante è che tutte le righe dello stato di convalida mostrano anziché 🚫. Ogni partizione CNAME edge di Target deve mostrare CN=target.example.com, che corrisponde al nome host primario nel certificato richiesto (in questo output non vengono stampati nomi host SAN aggiuntivi nel certificato).

    $ adobeTargetCnameValidation target.example.com
    
    ==========================================================
    
    Adobe Target CNAME implementation validation for hostname target.example.com:
    ✅ target.example.com passes DNS CNAME validation
    ✅ target.example.com passes TLS and HTTP response validation for region IRL1
    ✅ target.example.com passes TLS and HTTP response validation for region IND1
    ✅ target.example.com passes TLS and HTTP response validation for region SIN
    ✅ target.example.com passes TLS and HTTP response validation for region OR
    ✅ target.example.com passes TLS and HTTP response validation for region SYD
    ✅ target.example.com passes TLS and HTTP response validation for region VA
    ✅ target.example.com passes TLS and HTTP response validation for region TYO
    ✅ target.example.com passes shard validation for the following 7 edge shards:
    
    ===== ✅ target.example.com [edge shard: IRL1-pool.data.adobedc.net] =====
    *  expire date: Feb 20 23:59:59 2026 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert Global G2 TLS RSA SHA256 2020 CA1
    *  subject: C=US; ST=California; L=San Jose; O=Adobe Systems Incorporated; CN=target.example.com
    
    ===== ✅ target.example.com [edge shard: IND1-pool.data.adobedc.net] =====
    *  expire date: Feb 20 23:59:59 2026 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert Global G2 TLS RSA SHA256 2020 CA1
    *  subject: C=US; ST=California; L=San Jose; O=Adobe Systems Incorporated; CN=target.example.com
    
    ===== ✅ target.example.com [edge shard: SIN-pool.data.adobedc.net] =====
    *  expire date: Feb 20 23:59:59 2026 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert Global G2 TLS RSA SHA256 2020 CA1
    *  subject: C=US; ST=California; L=San Jose; O=Adobe Systems Incorporated; CN=target.example.com
    
    ===== ✅ target.example.com [edge shard: OR-pool.data.adobedc.net] =====
    *  expire date: Feb 20 23:59:59 2026 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert Global G2 TLS RSA SHA256 2020 CA1
    *  subject: C=US; ST=California; L=San Jose; O=Adobe Systems Incorporated; CN=target.example.com
    
    ===== ✅ target.example.com [edge shard: SYD-pool.data.adobedc.net] =====
    *  expire date: Feb 20 23:59:59 2026 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert Global G2 TLS RSA SHA256 2020 CA1
    *  subject: C=US; ST=California; L=San Jose; O=Adobe Systems Incorporated; CN=target.example.com
    
    ===== ✅ target.example.com [edge shard: VA-pool.data.adobedc.net] =====
    *  expire date: Feb 20 23:59:59 2026 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert Global G2 TLS RSA SHA256 2020 CA1
    *  subject: C=US; ST=California; L=San Jose; O=Adobe Systems Incorporated; CN=target.example.com
    
    ===== ✅ target.example.com [edge shard: TYO-pool.data.adobedc.net] =====
    *  expire date: Feb 20 23:59:59 2026 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert Global G2 TLS RSA SHA256 2020 CA1
    *  subject: C=US; ST=California; L=San Jose; O=Adobe Systems Incorporated; CN=target.example.com
    
    ==========================================================
    
    For additional TLS/SSL validation, see SSL Shopper:
    
        🔎  https://www.sslshopper.com/ssl-checker.html#hostname=target.example.com
    
    To check DNS propagation around the world, see whatsmydns.net:
    
        🔎  DNS A records:     https://whatsmydns.net/#A/target.example.com
        🔎  DNS CNAME record:  https://whatsmydns.net/#CNAME/target.example.com
    
NOTA
Se il comando di convalida non riesce durante la convalida DNS ma sono già state apportate le modifiche DNS necessarie, potrebbe essere necessario attendere la propagazione completa degli aggiornamenti DNS. Ai record DNS è associato un valore TTL (time-to-live) che determina la scadenza della cache per le risposte DNS di tali record. Di conseguenza, potrebbe essere necessario attendere almeno tanto quanto i TTL. Puoi utilizzare il comando dig target.example.com o la Casella degli strumenti di G Suite per cercare i TTL specifici. Per verificare la propagazione del DNS in tutto il mondo, vedere whatsmydns.net.