CNAME和Target
使用Adobe Client Care在Adobe Target中實作CNAME (規範名稱)支援的說明。 使用CNAME來處理廣告封鎖問題或ITP相關(智慧型追蹤預防) Cookie政策。 使用CNAME時,會呼叫客戶擁有的網域,而非Adobe擁有的網域。
在Target中要求CNAME支援
-
決定您的SSL憑證所需的主機名稱清單(請參閱底下的常見問題集)。
-
填寫此表單,並在您開啟要求CNAME支援的 Adobe 客戶服務票證時加入它:
-
Adobe Target使用者端代碼:
-
SSL憑證主機名稱(範例:
target.example.com target.example.org): -
SSL憑證購買者(Adobe強烈建議使用,請參閱常見問題集): Adobe/customer
-
如果客戶購買憑證(也稱為「自帶憑證」,BYOC),請填寫以下其他詳細資料:
- 憑證組織(範例:範例Company Inc):
- 憑證組織單位(選用,例如:行銷):
- 憑證國家/地區(範例:美國):
- 憑證州/地區(範例:加州):
- 憑證城市(範例:聖荷西):
-
-
對於每個主機名稱要求,Adobe會建立實作,並傳回CNAME記錄名稱供您建立,該名稱將包含尾碼為
tt.omtrdc.net的隨機字串例如,如果您要求
target.example.com,我們會以abcdefgh.tt.omtrdc.net的格式傳回CNAME。 您的DNS CNAME記錄應該類似於:code language-none target.example.com. IN CNAME abcdefgh.tt.omtrdc.net.note important IMPORTANT Adobe的憑證授權單位DigiCert必須等到此步驟完成才能核發憑證。 因此,在此步驟完成之前,Adobe無法完成您的CNAME實作要求。 -
如果Adobe正在購買憑證,Adobe會與DigiCert合作,在Adobe的生產伺服器上購買並部署您的憑證。
如果客戶正在購買憑證(BYOC),Adobe客戶服務會將憑證簽署要求(CSR)傳送給您。 透過您選擇的憑證授權單位購買憑證時,請使用CSR 。 發行憑證後,請將憑證復本及任何中繼憑證傳送至Adobe Client Care以進行部署。
當您的實作準備就緒時,Adobe Client Care會通知您。
-
將
serverDomain(檔案)更新為新的CNAME主機名稱,並在您的at.js設定中將overrideMboxEdgeServer設定為false(檔案)。
常見問題集
下列資訊回答有關在Target中請求和實作CNAME支援的常見問題:
我可以提供我自己的憑證(自備憑證或BYOC)嗎?
您可以提供自己的憑證。 但是,Adobe強烈建議不要使用此作法。 如果Adobe購買並控制憑證,則Adobe和您都能更輕鬆地管理SSL憑證生命週期。 SSL憑證存留期只會變得更短(請參閱下一個有關憑證存留期的區段)。 因此,Adobe Client Care每次都必須與您連絡,才能及時取得新憑證。 當憑證存留期將減少到只有47天時,這項工作將變成一項挑戰。 憑證過期時,因為瀏覽器拒絕連線,所以您的Target實作已受到危害。
我的新SSL憑證要多久才會過期?
作為憑證授權單位主要計畫的一部分,所有憑證存留期範圍將會縮短。 針對Adobe的憑證提供者DigiCert,將套用下列排程:
直到2026年3月15日,TLS憑證的存留期上限為398天。
自2026年3月15日起,TLS憑證的存留期上限為200天。
自2027年3月15日起,TLS憑證的生命週期上限為100天。
自2029年3月15日起,TLS憑證的存留期上限為47天。
如需詳細資訊,請參閱DigiCert關於縮短憑證存留時間的文章
我應該選擇哪些主機名稱? 每個網域應該選擇幾個主機名稱?
Target CNAME實作只需要SSL憑證和客戶DNS中每個網域一個主機名稱。 Adobe建議每個網域使用一個主機名稱。 有些客戶出於其自身目的(例如在測試環境中測試)而要求每個網域有更多主機名稱,此做法受到支援。
大多數客戶選擇類似target.example.com的主機名稱。 Adobe建議您遵循此作法,但最終選擇權歸您。 請勿要求現有DNS記錄的主機名稱。 這樣做會造成衝突,並延遲解決Target CNAME要求的時間。
我已有Adobe Analytics的CNAME實作,可以使用相同的憑證或主機名稱嗎?
否,Target需要個別的主機名稱和憑證。
我目前的Target實作是否會受到ITP 2.x影響?
Apple智慧型追蹤預防(ITP) 2.3版匯入了CNAME遮蔽緩解功能,此功能可偵測Adobe Target CNAME實作,並將Cookie的有效期縮短為七天。 目前Target沒有ITP CNAME遮罩緩解的因應措施。 如需有關ITP的詳細資訊,請參閱Apple智慧型追蹤預防(ITP) 2.x。
部署CNAME實作時,可能會發生哪些服務中斷?
部署憑證時沒有服務中斷(包括憑證續約)。
不過,當您將Target實作程式碼( at.js中的serverDomain)中的主機名稱變更為新的CNAME主機名稱(target.example.com)後,網頁瀏覽器會將回頭的訪客視為新訪客。 回訪訪客的設定檔資料遺失,因為舊主機名稱(clientcode.tt.omtrdc.net)下的先前Cookie無法存取。 由於瀏覽器安全模式的緣故,無法存取先前的Cookie。 這種中斷只會在初次切換至新CNAME時發生。 憑證更新不會產生相同的效果,因為主機名稱不會變更。
我的CNAME實作使用什麼金鑰型別和憑證簽章演演算法?
所有憑證預設為RSA SHA-256,金鑰則為RSA 2048位元。 應透過客戶服務明確要求大於2048位元的金鑰大小。
如何驗證我的CNAME實作準備好進行流量?
使用以下命令集(在macOS或Linux命令列終端機中,使用bash和curl >=7.49):
- 將此Bash函式複製並貼到您的終端機中,或將函式貼到您的Bash啟動指令碼檔案中(通常是
~/.bash_profile或~/.bashrc),以便該函式可在終端機工作階段中使用:
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
}
-
貼上此命令(將
target.example.com取代為您的主機名稱):code language-none adobeTargetCnameValidation target.example.com如果實作準備就緒,您會看到如下所示的輸出。 重要的一點是,所有驗證狀態行都顯示
✅而非🚫。 每個Target邊緣CNAME分片都應該顯示CN=target.example.com,這符合要求的憑證上的主要主機名稱(憑證上的其他SAN主機名稱不會列印在此輸出中)。
$ 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
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模式沒有粘性,因為它是以協力廠商Cookie為基礎。 因應措施是將預覽引數新增到您導覽到的每個URL中。 有CNAME和at.js 2.x時,QA模式會很粘滯。
- 使用CNAME時,Target呼叫的Cookie標頭大小更有可能增加。 Adobe建議將Cookie大小保持在8 KB以下。