CNAME 및 Target

작업 지침 Adobe Client Care 에서 CNAME(표준 이름) 지원을 구현하려면 Adobe Target. CNAME을 사용하여 광고 차단 문제 또는 ITP 관련(Intelligent Tracking Prevention) 쿠키 정책을 처리합니다. CNAME을 사용하면 Adobe이 소유한 도메인이 아니라 고객이 소유한 도메인에 호출됩니다.

Target에서 CNAME 지원 요청

  1. SSL 인증서에 필요한 호스트 이름 목록을 확인합니다(아래 FAQ 참조).

  2. 각 호스트 이름에 대해 일반 을 가리키는 DNS에 CNAME 레코드를 만듭니다 Target 호스트 이름 clientcode.tt.omtrdc.net.

    예를 들어 클라이언트 코드가 "cnamecustomer"이고 제안된 호스트 이름이 인 경우 target.example.com: DNS CNAME 레코드는 다음과 유사합니다.

    code language-none
    target.example.com.  IN  CNAME  cnamecustomer.tt.omtrdc.net.
    
    note warning
    WARNING
    Adobe의 인증 기관인 DigiCert는 이 단계가 완료될 때까지 인증서를 발급할 수 없습니다. 따라서 이 단계가 완료될 때까지 Adobe이 CNAME 구현에 대한 요청을 이행할 수 없습니다.
  3. 이 양식 작성 다음을 수행할 때 포함 cname 지원을 요청하는 Adobe Client Care 티켓을 엽니다.:

    • Adobe Target client code:

    • SSL 인증서 호스트 이름(예: target.example.com target.example.org):

    • SSL 인증서 구매자(Adobe이 적극 권장됨, FAQ 참조): Adobe/고객

    • 고객이 "자체 인증서 가져오기"(BYOC)라고도 하는 인증서를 구입할 경우 다음 추가 세부 정보를 작성하십시오.

      • 인증서 조직(예: Company Inc):
      • 인증서 조직 단위(선택 사항, 예: 마케팅):
      • 인증서 국가(예: 미국):
      • 인증서 주/지역(예: 캘리포니아):
      • 인증서 도시(예: 산호세):
  4. Adobe이 인증서를 구매하는 경우 Adobe은 DigiCert와 협력하여 Adobe의 프로덕션 서버에 인증서를 구매하고 배포합니다.

    고객이 인증서(BYOC)를 구매하는 경우 Adobe 클라이언트 지원에서 CSR(인증서 서명 요청)을 보냅니다. 선택한 인증 기관을 통해 인증서를 구입할 때는 CSR을 사용하십시오. 인증서가 발급되면 인증서의 사본과 중간 인증서를 배포를 위해 Adobe Client Care로 보냅니다.

    Adobe Client Care는 구현이 준비되면 알려줍니다.

  5. 업데이트 serverDomain 설명서 을 새 CNAME 호스트 이름으로 변경하고 설정합니다. overrideMboxEdgeServerfalse 설명서 at.js 구성에서 "페이지 로드 깜박임 억제"를 참조하십시오.

자주 묻는 질문

다음 정보는 Target에서 CNAME 지원 요청 및 구현에 대해 자주 묻는 질문과 대답합니다.

자체 인증서를 제공할 수 있습니까(자체 인증서 또는 BYOC 가져오기)?

고유한 인증서를 제공할 수 있습니다. 그러나 Adobe은 이 방법을 권장하지 않습니다. Adobe이 인증서를 구매하고 제어하는 경우 Adobe 및 사용자 모두에서 SSL 인증서 라이프사이클을 보다 쉽게 관리할 수 있습니다. SSL 인증서는 매년 갱신해야 합니다. 따라서 Adobe 클라이언트 지원팀은 적시에 새 인증서를 받기 위해 매년 귀하에게 연락해야 합니다. 일부 고객은 갱신된 인증서를 적시에 생산하는 데 어려움을 겪을 수 있습니다. 사용자 Target 브라우저가 연결을 거부하므로 인증서가 만료되면 구현이 위태로워집니다.

WARNING
을(를) 요청하는 경우 Target 자체 인증서 가져오기 CNAME 구현에서는 매년 Adobe Client Care에 갱신된 인증서를 제공해야 합니다. Adobe이 갱신된 인증서를 배포하기 전에 CNAME 인증서가 만료되도록 허용하면 특정 인증서가 중단됩니다 Target 구현.

새 SSL 인증서가 만료될 때까지 얼마나 걸립니까?

모든 Adobe 구매 인증서는 1년 동안 유효합니다. 다음을 참조하십시오 1년 인증서에 대한 DigiCert의 문서 추가 정보.

어떤 호스트 이름을 선택해야 합니까? 도메인당 몇 개의 호스트 이름을 선택해야 합니까?

Target CNAME 구현에는 SSL 인증서와 고객 DNS에서 도메인당 하나의 호스트 이름만 필요합니다. Adobe은 도메인당 하나의 호스트 이름을 권장합니다. 일부 고객은 자체 목적(예: 스테이징에서 테스트)을 위해 도메인당 더 많은 호스트 이름을 필요로 하는데, 이는 지원됩니다.

대부분의 고객은 다음과 같은 호스트 이름을 선택합니다. target.example.com. Adobe은 이 방법을 따를 것을 권장하지만, 선택은 결국 귀하의 것입니다. 기존 DNS 레코드의 호스트 이름을 요청하지 마십시오. 이렇게 하면 충돌이 발생하고 문제 해결 시간이 지연됩니다. Target CNAME 요청.

Adobe Analytics에 대한 CNAME 구현이 이미 있습니다. 동일한 인증서 또는 호스트 이름을 사용할 수 있습니까?

아니요, Target 에는 별도의 호스트 이름과 인증서가 필요합니다.

의 현재 구현입니다 Target itp 2.x의 영향을 받습니까?

Apple ITP(Intelligent Tracking Prevention) 버전 2.3에서는 감지 가능한 CNAME 클로킹 완화 기능을 도입했습니다 Target CNAME을 구현하고 쿠키의 만료를 7일로 줄입니다. 현재 Target 는 ITP의 CNAME 클로킹 완화에 대한 해결 방법이 없습니다. ITP에 대한 자세한 내용은 Apple ITP(Intelligent Tracking Prevention) 2.x.

CNAME 구현이 배포될 때 예상되는 서비스 중단 유형은 무엇입니까?

인증서가 배포되면(인증서 갱신 포함) 서비스가 중단되지 않습니다.

하지만 의 호스트 이름을 변경한 후에는 Target 구현 코드 (serverDomain at.js에서 새 CNAME 호스트 이름(target.example.com) 웹 브라우저에서는 재방문자를 새 방문자로 처리합니다. 이전 쿠키는 이전 호스트 이름( )에서 액세스할 수 없으므로 재방문자의 프로필 데이터가 손실됩니다.clientcode.tt.omtrdc.net). 브라우저 보안 모델로 인해 이전 쿠키에 액세스할 수 없습니다. 이 중단은 새 CNAME에 대한 초기 컷오버 시에만 발생합니다. 호스트 이름이 변경되지 않으므로 인증서 갱신에는 동일한 효과가 없습니다.

내 CNAME 구현에 사용되는 키 유형 및 인증서 서명 알고리즘은 무엇입니까?

모든 인증서는 RSA SHA-256이며 키는 기본적으로 RSA 2048비트입니다. 2048비트보다 큰 키 크기는 현재 지원되지 않습니다.

CNAME 구현이 트래픽에 대해 준비되었는지 어떻게 확인할 수 있습니까?

macOS 또는 Linux 명령줄 터미널에서 bash 및 curl >=7.49를 사용하여 다음 명령 세트를 사용합니다.

  1. 이 bash 함수를 복사하여 터미널에 붙여넣거나 함수를 bash 시작 스크립트 파일에 붙여넣습니다(일반적으로 ~/.bash_profile 또는 ~/.bashrc) 따라서 터미널 세션에서 기능을 사용할 수 있습니다.

    code language-none
    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="31 32 34 35 36 37 38"
      local edgeDomain="tt.omtrdc.net"
      local edgeFormat="mboxedge%d%s.$edgeDomain"
      local shardFormat="-alb%02d"
      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 sslLabsUrl="https://ssllabs.com/ssltest/analyze.html?hideResults=on&latest&d=$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 edge
      local shard
      local currEdgeShard
      local dnsOutput
      local cnameExists
      local endToEndTestSucceeded
      local curlResult
    
      for shard in $(seq $shards); do
        if [ "$shardsFoundCount" -eq 0 ]; then
          for edge in $edges; do
            if [ "$shard" -eq 1 ]; then
              currEdgeShard="$(printf "$edgeFormat" "$edge" "")"
            else
              currEdgeShard="$(
                printf "$edgeFormat" "$edge" "$(
                  printf -- "$shardFormat" "$shard"
                )"
              )"
            fi
            curlResult="$(curl -vsm20 --connect-to "$hostname:443:$currEdgeShard:443" "$url" 2>&1)"
            if grep -q "$curlValidation" <<< "$curlResult"; then
              shardsFound+=" $currEdgeShard"
              if grep -q "$curlResponseValidation" <<< "$curlResult"; then
                shardsFoundCount=$((shardsFoundCount+1))
                shardsFoundOutput+="\n\n$miniRule $success $hostname [edge shard: $currEdgeShard] $miniRule\n"
              else
                shardsFoundOutput+="\n\n$miniRule $failure $hostname [edge shard: $currEdgeShard] $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
        fi
      done
    
      echo
      echo "$horizontalRule"
      echo
      echo "$service validation for hostname $hostname:"
      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
    
      curlResult="$(curl -vsm20 "$url" 2>&1)"
      if grep -q "$curlValidation" <<< "$curlResult"; then
        if grep -q "$curlResponseValidation" <<< "$curlResult"; then
          echo -en "$success $hostname passes TLS and HTTP response validation"
          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 --" \
            "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 -- "
        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 Labs ($sslLabsUrl):"
          echo ""
          echo "$horizontalRule"
          echo "$curlResult" | sed 's/^/    /g'
          echo "$horizontalRule"
          echo ""
        else
          echo "the required DNS CNAME record is missing, see above"
        fi
      fi
    
      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, including detailed browser/client support,"
          echo "  see SSL Labs (click the first IP address if prompted):"
          echo ""
          echo "    $info  $sslLabsUrl"
          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"
        if bc -l <<< "$(cut -d. -f1,2 <<< "$curlVersion") $curlVersionRequired" 2>/dev/null | grep -q 0; then
          echo -n " -- insufficient curl version installed: $curlVersion, but this script requires curl version" \
            "$curlVersionRequired because it uses the curl --connect-to flag to bypass DNS and directly test" \
            "each Adobe Target edge shards' SNI confirguation for $hostname"
        fi
        if [ -n "$shardsFoundOutput" ]; then
          echo -e ":\n$shardsFoundOutput"
        fi
        echo
      fi
      echo
      echo "$horizontalRule"
      echo
    }
    
  2. 이 명령 붙여넣기(바꾸기) target.example.com 호스트 이름 포함):

    code language-none
    adobeTargetCnameValidation target.example.com
    

    구현이 준비되면 아래와 같은 출력이 표시됩니다. 중요한 부분은 모든 유효성 검사 상태 줄에 보다 🚫. 각 Target 에지 CNAME 분할에 CN=target.example.com: 요청된 인증서의 기본 호스트 이름과 일치합니다(인증서의 추가 SAN 호스트 이름은 이 출력에 인쇄되지 않음).

    code language-none
    $ 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
    ✅ target.example.com passes shard validation for the following 7 edge shards:
    
    ===== ✅ target.example.com [edge shard: mboxedge31-alb02.tt.omtrdc.net] =====
    *  expire date: Jul 22 23:59:59 2022 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert 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: mboxedge32-alb02.tt.omtrdc.net] =====
    *  expire date: Jul 22 23:59:59 2022 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert 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: mboxedge34-alb02.tt.omtrdc.net] =====
    *  expire date: Jul 22 23:59:59 2022 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert 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: mboxedge35-alb02.tt.omtrdc.net] =====
    *  expire date: Jul 22 23:59:59 2022 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert 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: mboxedge36-alb02.tt.omtrdc.net] =====
    *  expire date: Jul 22 23:59:59 2022 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert 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: mboxedge37-alb02.tt.omtrdc.net] =====
    *  expire date: Jul 22 23:59:59 2022 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert 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: mboxedge38-alb02.tt.omtrdc.net] =====
    *  expire date: Jul 22 23:59:59 2022 GMT
    *  issuer: C=US; O=DigiCert Inc; CN=DigiCert 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, including detailed browser/client support,
      see SSL Labs (click the first IP address if prompted):
    
        🔎  https://ssllabs.com/ssltest/analyze.html?hideResults=on&latest&d=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
    
    ==========================================================
    
NOTE
DNS 유효성 검사 시 이 유효성 검사 명령이 실패하지만 이미 필요한 DNS 변경 사항을 적용한 경우에는 DNS 업데이트가 완전히 전파될 때까지 기다려야 할 수 있습니다. DNS 레코드에 연결된 TTL (time-to-live) 이는 해당 레코드의 DNS 회신에 대한 캐시 만료 시간을 나타냅니다. 따라서 TTL만큼 기다려야 할 수도 있습니다. 다음을 사용할 수 있습니다. dig target.example.com 명령 또는 g Suite Toolbox 특정 TTL을 조회합니다. 전 세계 DNS 전파를 확인하려면 다음을 참조하십시오. whatsmydns.net.

CNAME으로 옵트아웃 링크를 사용하는 방법

CNAME을 사용하는 경우 옵트아웃 링크에 "client="가 포함되어야 합니다.clientcode 매개 변수(예: )
https://my.cname.domain/optout?client=clientcode.

바꾸기 clientcode 클라이언트 코드를 사용하여 연결할 텍스트나 이미지를 옵트아웃 URL.

알려진 제한 사항

  • CNAME 및 at.js 1.x가 있는 경우 QA 모드는 서드파티 쿠키를 기반으로 하므로 고정되지 않습니다. 해결 방법은 탐색하는 각 URL에 미리보기 매개 변수를 추가하는 것입니다. CNAME 및 at.js 2.x가 있는 경우 QA 모드는 고정적입니다.
  • CNAME을 사용하는 경우 쿠키 헤더의 크기가 Target 호출이 증가합니다. Adobe은 쿠키 크기를 8KB 미만으로 유지하는 것을 권장합니다.
recommendation-more-help
6906415f-169c-422b-89d3-7118e147c4e3