Perguntas frequentes

As informações a seguir respondem às perguntas frequentes sobre a solicitação e a implementação do suporte CNAME no Target:

Posso fornecer meu próprio certificado (Traga seu próprio certificado ou BYOC)?

Você pode fornecer seu próprio certificado. No entanto, a Adobe não recomenda essa prática. O gerenciamento do ciclo de vida do certificado SSL é mais fácil para a Adobe e para você, caso a Adobe compre e controle o certificado. Os certificados SSL devem ser renovados todos os anos. Portanto, o Atendimento ao cliente da Adobe deve entrar em contato com você todos os anos para obter um novo certificado em tempo hábil. Alguns clientes podem ter dificuldade em produzir um certificado renovado em tempo hábil. A implementação do Target fica comprometida quando o certificado expira porque os navegadores recusam conexões.

AVISO
Se você solicitar uma implementação CNAME com o seu próprio certificado Target, será responsável por fornecer certificados renovados ao Atendimento ao cliente da Adobe todos os anos. Permitir que seu certificado CNAME expire antes que a Adobe possa implantar um certificado renovado resulta em uma interrupção para sua implementação específica do Target.

Quanto tempo até meu novo certificado SSL expirar?

Todos os certificados adquiridos pela Adobe são válidos por um ano. Consulte o artigo da DigiCert sobre certificados de 1 ano para obter mais informações.

Quais nomes de host devo escolher? Quantos nomes de host por domínio devo escolher?

As implementações de CNAME do Target exigem apenas um nome de host por domínio no certificado SSL e no DNS do cliente. A Adobe recomenda um nome de host por domínio. Alguns clientes exigem mais nomes de host por domínio para suas próprias finalidades (teste em preparo, por exemplo), que são compatíveis.

A maioria dos clientes escolhe um nome de host como target.example.com. A Adobe recomenda seguir essa prática, mas a escolha é sua. Não solicitar um nome de host de um registro DNS existente. Isso causa um conflito e atrasa a resolução da solicitação CNAME Target.

Já tenho uma implementação CNAME para o Adobe Analytics. Posso usar o mesmo certificado ou nome de host?

Não, Target requer um nome de host e um certificado separados.

Minha implementação atual do Target é afetada pela ITP 2.x?

A Apple Intelligent Tracking Prevention (ITP) versão 2.3 apresentou o recurso de Mitigação de Camuflagem CNAME, que pode detectar Target implementações CNAME e reduz a expiração do cookie para sete dias. No momento, Target não tem uma solução alternativa para a Mitigação de Camuflagem CNAME da ITP. Para obter mais informações sobre a ITP, consulte Apple Intelligent Tracking Prevention (ITP) 2.x.

Que tipo de interrupção de serviço posso esperar quando minha implementação CNAME é implantada?

Não há interrupção do serviço quando o certificado é implantado (incluindo renovações de certificado).

No entanto, depois de alterar o nome do host no código de implementação Target (serverDomain na at.js) para o novo nome de host CNAME (target.example.com), os navegadores da Web tratam os visitantes recorrentes como novos visitantes. Os dados de perfil dos visitantes retornados são perdidos porque o cookie anterior está inacessível sob o nome de host antigo (clientcode.tt.omtrdc.net). O cookie anterior está inacessível devido aos modelos de segurança do navegador. Essa interrupção ocorre somente na transição inicial para o novo CNAME. As renovações de certificado não têm o mesmo efeito, pois o nome do host não é alterado.

Qual tipo de chave e algoritmo de assinatura de certificado é usado para minha implementação CNAME?

Todos os certificados são RSA SHA-256 e as chaves são RSA 2048-bit, por padrão. Tamanhos de chaves maiores que 2048 bits devem ser solicitados explicitamente através de Customer Care.

Como posso validar se minha implementação CNAME está pronta para o tráfego?

Use o seguinte conjunto de comandos (no terminal de linha de comando macOS ou Linux, usando bash e curl >=7.49):

  1. Copie e cole esta função bash no terminal ou cole a função no arquivo de script de inicialização bash (geralmente ~/.bash_profile ou ~/.bashrc) para que a função esteja disponível nas sessões de terminal:

    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. Cole este comando (substituindo target.example.com pelo seu nome de host):

    adobeTargetCnameValidation target.example.com
    

    Se a implementação estiver pronta, você verá a saída como abaixo. A parte importante é que todas as linhas de status de validação mostram em vez de 🚫. Cada fragmento CNAME da borda do Target deve mostrar CN=target.example.com, que corresponde ao nome de host principal no certificado solicitado (nomes de host SAN adicionais no certificado não são impressos nesta saída).

    $ 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
    
OBSERVAÇÃO
Se esse comando de validação falhar na validação de DNS, mas você já tiver feito as alterações necessárias no DNS, talvez seja necessário aguardar a propagação completa das atualizações de DNS. Os registros DNS têm um TTL (time-to-live) associado que determina o tempo de expiração do cache para as respostas DNS desses registros. Como resultado, talvez seja necessário aguardar pelo menos tanto tempo quanto seus TTLs. Você pode usar o comando dig target.example.com ou a Caixa de Ferramentas do G Suite para pesquisar seus TTLs específicos. Para verificar a propagação DNS pelo mundo, consulte whatsmydns.net.