CNAME和Target
有关使用Adobe客户关怀在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)),请填写以下其他详细信息:
- 证书组织(示例:Example 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客户关怀团队以进行部署。
当您的实施准备就绪时,Adobe客户关怀会通知您。
-
将
serverDomain(文档)更新为新的CNAME主机名,并在您的at.js配置中将overrideMboxEdgeServer设置为false(文档)。
常见问题解答
以下信息回答了有关在Target中请求和实施CNAME支持的常见问题:
我可以提供我自己的证书(自带证书或BYOC)吗?
您可以提供自己的证书。 但是,Adobe强烈建议不要使用此做法。 如果Adobe购买并控制证书,则Adobe和您都可以更轻松地管理SSL证书生命周期。 SSL证书生命周期将只会变得更短(请参阅有关证书生命周期的下一部分)。 因此,Adobe客户关怀团队每次都必须与您联系,才能及时获取新证书。 当证书生命周期将减少到仅47天时,THis将会成为一个挑战。 当证书过期时,由于浏览器拒绝连接,您的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过期时间减少到7天。 当前Target没有ITP的CNAME遮蔽缓解解决方法。 有关ITP的更多信息,请参阅Apple智能防跟踪(ITP) 2.x。
部署我的CNAME实施时,可能会出现哪种服务中断?
部署证书时没有服务中断(包括证书续订)。
但是,在将Target实施代码( at.js中的serverDomain)中的主机名更改为新的CNAME主机名(target.example.com)后,Web浏览器会将回访访客视为新访客。 回访访客的配置文件数据丢失,因为旧主机名(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以下。