1. 引言
本文档中描述的EPP映射指定了在共享的中央存储库中配置和管理DNS安全扩展的机制。通过该映射交换的信息可以从存储库中提取出来,并用于发布RFC4034 [RFC4034]中描述的DNSSEC委托签名者(DS
,Delegation Signer)资源记录(RRs
,resource records)。
本文件废止RFC4310 [RFC4310];因此,本文档中定义的secDNS-1.1与secDNS-1.0 [RFC4310]不一致。淘汰RFC4310 [RFC4310]的动机包括:
- 解决了基于非唯一的<secDNS:keyTag>元素删除DS数据的问题。客户机应该显式地指定要删除的DS数据,方法是使用所有四个保证惟一的<secDNS:dsData>元素。
- 在单个命令中添加和删除<secDNS:dsData>元素的功能。这使得它与RFC5731 [RFC5731]一致。
- 澄清和纠正<secDNS:chg>元素的用法。RFC4310 [RFC4310]定义了<secDNS:chg>元素作为DS数据的替换。这与RFC5731 [RFC5731]不一致,其中<domain:chg>元素用于更改域属性的值。
- 增加对4.2节中描述的“厚”DNSSEC服务器的关键数据接口的支持,这些服务器只接受关键数据并生成相关的DS数据。
1.1 本文档中的约定
secDNS-1.0是urn:ietf:params:xml:ns:secDNS-1.0的缩写,secDNS-1.1是urn:ietf:params:xml:ns:secDNS-1.1的缩写。
2. 从RFC4310中迁移
本节包括客户端和服务器在从secdn -1.0 [RFC4310]迁移到secdn -1.1时使用的实现建议。
由于本文档反对RFC4310 [RFC4310],如果服务器在EPP问询中同时宣布支持secDNS-1.0 [RFC4310]和secDNS-1.1,那么支持这两个版本的客户端应该更喜欢secDNS-1.1。
服务器应该执行以下操作来帮助客户端从secdn -1.0 [RFC4310]迁移到本文档中定义的secdn -1.1。
- 服务器从secDNS-1.0 [RFC4310]迁移到secDNS-1.1应该支持两个版本(即, secDNS-1.0和secDNS-1.1)。
- 服务器在响应<domain:info>响应时返回的<secDNS:infData>元素的版本应该依赖于使用以下映射的EPP <login>命令中包含的客户端<extURI>元素(指示secDNS扩展):
- 如果urn:ietf:params:xml:ns:secDNS-1.1作为一个元素包含在EPP命令中,而不管urn:ietf:params:xml:ns:secDNS-1.0是否也作为一个<extURI>元素包含在EPP <login>命令中。
- 如果urn:ietf:params:xml:ns: secdn -1.0,而不是urn:ietf:params:xml:ns: secdn -1.1,则返回<secDNS:infData>元素的secdn -1.0版本。
- 如果urn:ietf:params:xml:ns: secdn -1.0和urn:ietf:params:xml:ns: secdn -1.1都没有作为<extURI>元素包含在EPP <login>命令中,那么不要返回<secDNS:infData>元素。
3. 对象属性
该扩展为EPP域名映射添加了额外的元素[RFC5731]。这里只描述那些新元素。
3.1 授权签名者信息
DS信息由DNS服务器发布,以指示子区域是数字签名的,并且父区域将所指示的密钥识别为子区域的有效区域密钥。DS资源记录(RR)包含四个字段:一个key tag字段、一个八字节组的key algorithm number、一个识别摘要算法的八字节组的和一个digest字段。具体字段格式见RFC4034 [RFC4034]。
3.1.1 公钥信息
客户端提供的公钥信息映射到RFC4034 [RFC4034]第2.2节中描述的DNSKEY RR表示字段格式。一个DNSKEY RR包含四个字段:flags、一个八字节组协议、一个算法数字八字节组和一个公钥。
3.2 布尔运算
布尔值必须用W3C XML Schema建议书第2部分中描述的XML模式格式表示。
3.3 签名最长使用期
最大签名生命期(maxSigLife)是一个可选的
子选项,用于生成签名后的秒数,此时子节点提供的DS信息上的父节点签名将过期(最大签名生命期(maxSigLife)是一个可选的子选项,用于记录生成签名后,父节点在子节点提供的DS信息上的签名距离过期的秒数)。maxSigLife值应用于DS RRset上的RRSIG资源记录(RR)。有关RRSIG资源记录(RR)的信息,请参阅RFC4034 [RFC4034]的第3节。
最大签名生命周期使用<secDNS: maxSigLife>元素表示。maxSigLife值必须以秒
为单位表示,使用扩展的XML模式“int”格式
。允许负数的基本“int”格式在W3C XML Schema建议[W3C. rec-xmlschema -2-20010502]的第2部分中进行了描述。此格式进一步限制为强制最小值为1
。
如果客户端不提供maxSigLife,或者服务器不支持客户端指定的maxSigLife值,则应用服务器操作符的默认签名过期策略(使用带外机制确定)。
4. DS数据接口和Key数据接口
本文档描述了客户端可以为域名创建、添加和删除DS信息或关键数据信息的操作场景。服务器可以支持两种不同形式的接口。第一个称为“DS数据接口”,其中客户端负责创建DS信息,并在执行添加和删除操作时需要传递DS信息。服务器需要传递<domain:info>响应的DS信息。第二个是“key数据接口”,客户端负责在执行添加和删除操作时传递关键数据信息。服务器负责传递<domain:info>响应的key数据信息。
服务器必须在单个命令或响应中支持一种形式的接口,其中<secDNS:dsData>和<secDNS:keyData>不能混合使用,除非<secDNS:keyData>是<secDNS:dsData>的子元素,用于服务器验证。服务器必须支持在所有<secDNS:create>、<secDNS:update>和<secDNS:infData>元素之间只使用一种形式的接口,除非在过渡期间(transition period),在此期间服务器可能同时支持这两种接口。例如,在过渡期间,服务器可能在每个域的基础上支持DS数据接口或关键数据接口,并允许客户端迁移到目标接口。客户端可以替代使用的接口利用 < secDNS: rem > < secDNS:all>true< / secDNS:all> < / secDNS: rem >元素删除旧接口的所有数据,并利用< secDNS:add>添加数据使用新接口(< secDNS: dsData > DS数据接口和< secDNS: keyData >key数据接口)。如果服务器接收到使用不受支持的接口的命令,则服务器必须返回一个EPP错误结果代码2306。
4.1 DS数据接口
DS数据接口依赖于使用<secDNS:dsData>元素来创建、添加、删除和<domain:info> 响应。与DS信息相关的密钥数据可以由客户端提供,但是服务器没有义务使用密钥数据。服务器操作员也可以发出带外(out-of-band)DNS查询来从注册域的顶点检索关键数据,以评估接收到的DS信息。建议子区域操作符在DNS树中在线保存此关键数据,以便允许父区域管理员根据需要验证数据。关键数据应具有RFC3757 [RFC3757]和RFC4034 [RFC4034]中描述的安全入口点(SEP)位。
<secDNS:dsData>元素包含以下子元素 :
- 一个<secDNS:keyTag>元素,它包含一个key tag值,如RFC4034 [RFC4034]的5.1.1节所述。<secDNS:keyTag> 元素用unsignedShort类型表示[W3C.REC-xmlschema-2-20010502]。
- 一个<secDNS:alg>元素,它包含RFC4034 [RFC4034]的5.1.2节中描述的算法值。
- 一个<secDNS:digestType>元素,它包含一个摘要类型值,如RFC4034 [RFC4034]的5.1.3节所述。
- 一个<secDNS:digest>元素,它包含RFC4034 [RFC4034]的5.1.4节中描述的摘要值。<secDNS: digest>元素表示为一个hexBinary [W3C.REC-xmlschema-2-20010502]。
- 一个可选的<secDNS:keyData>元素,它描述了用于服务器验证的DS哈希计算中作为输入的关键数据。元素包含4.2节中定义的子元素。
4.2 Key数据接口
Key Data接口依赖于使用<secDNS:keyData>元素来创建、添加、删除和<domain:info>响应。DS信息不是由客户机提供的,而是由服务器生成的。用于DS生成的属性基于服务器策略,其中只有key数据在客户机和服务器之间传递。
<secDNS:keyData>元素包含以下子元素:
- 一个<secDNS:flags>元素,它包含RFC4034 [RFC4034]的2.1.1节中描述的一个flags字段值。
- 一个<secDNS:protocol>元素,它包含一个协议字段值,如RFC4034 [RFC4034]的2.1.2节所述。
- 一个<secDNS:alg>元素,它包含RFC4034 [RFC4034]的2.1.3节中描述的算法编号字段值。
- 一个<secDNS:pubKey>元素,它包含一个已编码的公钥字段值,如RFC4034 [RFC4034]的2.1.4节所述。<secDNS:pubKey>元素表示为base64Binary [W3C]。rect -xmlschema-2-20010502],最小长度为1。
4.3 DS数据接口和Key数据接口示例
使用secdn -1.1 DS数据接口创建的示例:
<secDNS:dsData>
<secDNS:keyTag>12345</secDNS:keyTag>
<secDNS:alg>3</secDNS:alg>
<secDNS:digestType>1</secDNS:digestType>
<secDNS:digest>49FD46E6C4B45C55D4AC</secDNS:digest>
</secDNS:dsData>
Example use of secDNS-1.1 DS Data Interface with option key data for
a create:
<secDNS:dsData>
<secDNS:keyTag>12345</secDNS:keyTag>
<secDNS:alg>3</secDNS:alg>
<secDNS:digestType>1</secDNS:digestType>
<secDNS:digest>49FD46E6C4B45C55D4AC</secDNS:digest>
<secDNS:keyData>
<secDNS:flags>257</secDNS:flags>
<secDNS:protocol>3</secDNS:protocol>
<secDNS:alg>1</secDNS:alg>
<secDNS:pubKey>AQPJ4Q==</secDNS:pubKey>
</secDNS:keyData>
</secDNS:dsData>
使用secdn -1.1密钥数据接口创建的示例:
<secDNS:keyData>
<secDNS:flags>257</secDNS:flags>
<secDNS:protocol>3</secDNS:protocol>
<secDNS:alg>1</secDNS:alg>
<secDNS:pubKey>AQPJ4Q==</secDNS:pubKey>
</secDNS:keyData>
5 EPP命令映射
5.1 EPP查询(Query)命令
5.1.1 < check >
此扩展不向EPP <check>命令或EPP域映射[RFC5731]中描述的<check>响应添加任何元素。
5.1.2 < info >
该扩展没有向EPP域映射[RFC5731]中描述的EPP <info>命令添加任何元素。但是,为<info>响应定义了其他元素。
当<info>命令被成功处理时,EPP <resData>元素必须包含EPP域映射[RFC5731]中描述的子元素。此外,EPP <extension>元素应该包含一个子元素<secDNS:infData>元素,如果域对象具有与此扩展关联的数据并基于服务器策略,则该元素将标识扩展名称空间。<secDNS:infData>元素包含以下子元素:
- 一个可选的<secDNS:maxSigLife>元素,它指示子元素在签名生成之后的秒数的首选项,此时子元素提供的DS信息上的父元素签名将过期。maxSigLife在第3.3节中进行了描述。
- 一个或多个<secDNS:dsData>元素或<secDNS:keyData>元素,但不是两个,如第4节中定义的那样。dsData>元素描述了客户端为域提供的委托签名者(DS)数据。<secDNS:keyData>元素描述了客户端为域提供的密钥数据。dsData>元素的子元素在4.1节中进行了描述。在4.2节中描述了<secDNS:keyData>元素的子元素。
示例<info>响应,用于使用DS数据接口的安全委托:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S: <response>
S: <result code="1000">
S: <msg>Command completed successfully</msg>
S: </result>
S: <resData>
S: <domain:infData
S: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
S: <domain:name>example.com</domain:name>
S: <domain:roid>EXAMPLE1-REP</domain:roid>
S: <domain:status s="ok"/>
S: <domain:registrant>jd1234</domain:registrant>
S: <domain:contact type="admin">sh8013</domain:contact>
S: <domain:contact type="tech">sh8013</domain:contact>
S: <domain:ns>
S: <domain:hostObj>ns1.example.com</domain:hostObj>
S: <domain:hostObj>ns2.example.com</domain:hostObj>
S: </domain:ns>
S: <domain:host>ns1.example.com</domain:host>
S: <domain:host>ns2.example.com</domain:host>
S: <domain:clID>ClientX</domain:clID>
S: <domain:crID>ClientY</domain:crID>
S: <domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>
S: <domain:upID>ClientX</domain:upID>
S: <domain:upDate>1999-12-03T09:00:00.0Z</domain:upDate>
S: <domain:exDate>2005-04-03T22:00:00.0Z</domain:exDate>
S: <domain:trDate>2000-04-08T09:00:00.0Z</domain:trDate>
S: <domain:authInfo>
S: <domain:pw>2fooBAR</domain:pw>
S: </domain:authInfo>
S: </domain:infData>
S: </resData>
S: <extension>
S: <secDNS:infData
S: xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
S: <secDNS:dsData>
S: <secDNS:keyTag>12345</secDNS:keyTag>
S: <secDNS:alg>3</secDNS:alg>
S: <secDNS:digestType>1</secDNS:digestType>
S: <secDNS:digest>49FD46E6C4B45C55D4AC</secDNS:digest>
S: </secDNS:dsData>
S: </secDNS:infData>
S: </extension>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54322-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
示例<info>响应,用于使用DS数据接口和可选密钥数据的安全委托:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S: <response>
S: <result code="1000">
S: <msg>Command completed successfully</msg>
S: </result>
S: <resData>
S: <domain:infData
S: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
S: <domain:name>example.com</domain:name>
S: <domain:roid>EXAMPLE1-REP</domain:roid>
S: <domain:status s="ok"/>
S: <domain:registrant>jd1234</domain:registrant>
S: <domain:contact type="admin">sh8013</domain:contact>
S: <domain:contact type="tech">sh8013</domain:contact>
S: <domain:ns>
S: <domain:hostObj>ns1.example.com</domain:hostObj>
S: <domain:hostObj>ns2.example.com</domain:hostObj>
S: </domain:ns>
S: <domain:host>ns1.example.com</domain:host>
S: <domain:host>ns2.example.com</domain:host>
S: <domain:clID>ClientX</domain:clID>
S: <domain:crID>ClientY</domain:crID>
S: <domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>
S: <domain:upID>ClientX</domain:upID>
S: <domain:upDate>1999-12-03T09:00:00.0Z</domain:upDate>
S: <domain:exDate>2005-04-03T22:00:00.0Z</domain:exDate>
S: <domain:trDate>2000-04-08T09:00:00.0Z</domain:trDate>
S: <domain:authInfo>
S: <domain:pw>2fooBAR</domain:pw>
S: </domain:authInfo>
S: </domain:infData>
S: </resData>
S: <extension>
S: <secDNS:infData
S: xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
S: <secDNS:maxSigLife>604800</secDNS:maxSigLife>
S: <secDNS:dsData>
S: <secDNS:keyTag>12345</secDNS:keyTag>
S: <secDNS:alg>3</secDNS:alg>
S: <secDNS:digestType>1</secDNS:digestType>
S: <secDNS:digest>49FD46E6C4B45C55D4AC</secDNS:digest>
S: <secDNS:keyData>
S: <secDNS:flags>257</secDNS:flags>
S: <secDNS:protocol>3</secDNS:protocol>
S: <secDNS:alg>1</secDNS:alg>
S: <secDNS:pubKey>AQPJ4Q==</secDNS:pubKey>
S: </secDNS:keyData>
S: </secDNS:dsData>
S: </secDNS:infData>
S: </extension>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54322-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
示例<info>响应,用于使用密钥数据接口的安全委托:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
S: <response>
S: <result code="1000">
S: <msg>Command completed successfully</msg>
S: </result>
S: <resData>
S: <domain:infData
S: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
S: <domain:name>example.com</domain:name>
S: <domain:roid>EXAMPLE1-REP</domain:roid>
S: <domain:status s="ok"/>
S: <domain:registrant>jd1234</domain:registrant>
S: <domain:contact type="admin">sh8013</domain:contact>
S: <domain:contact type="tech">sh8013</domain:contact>
S: <domain:ns>
S: <domain:hostObj>ns1.example.com</domain:hostObj>
S: <domain:hostObj>ns2.example.com</domain:hostObj>
S: </domain:ns>
S: <domain:host>ns1.example.com</domain:host>
S: <domain:host>ns2.example.com</domain:host>
S: <domain:clID>ClientX</domain:clID>
S: <domain:crID>ClientY</domain:crID>
S: <domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>
S: <domain:upID>ClientX</domain:upID>
S: <domain:upDate>1999-12-03T09:00:00.0Z</domain:upDate>
S: <domain:exDate>2005-04-03T22:00:00.0Z</domain:exDate>
S: <domain:trDate>2000-04-08T09:00:00.0Z</domain:trDate>
S: <domain:authInfo>
S: <domain:pw>2fooBAR</domain:pw>
S: </domain:authInfo>
S: </domain:infData>
S: </resData>
S: <extension>
S: <secDNS:infData
S: xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
S: <secDNS:keyData>
S: <secDNS:flags>257</secDNS:flags>
S: <secDNS:protocol>3</secDNS:protocol>
S: <secDNS:alg>1</secDNS:alg>
S: <secDNS:pubKey>AQPJ4Q==</secDNS:pubKey>
S: </secDNS:keyData>
S: </secDNS:infData>
S: </extension>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54322-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
如果由于任何原因无法处理<info>命令,则必须返回一个EPP错误响应。
5.1.3 < transfer >
此扩展不向EPP <transfer>命令或EPP域映射[RFC5731]中描述的<transfer>响应添加任何元素。
5.2 EPP转换(Transform)命令
5.2.1 < create >
该扩展为EPP域映射[RFC5731]中描述的EPP <create>命令定义了额外的元素。没有为EPP <create>响应定义额外的元素。
EPP <create>命令提供了一个转换操作,允许客户端创建域对象。如果客户端希望将此扩展中定义的数据关联到域对象,除了EPP命令元素中描述EPP域映射(RFC5731),该命令必须包含一个<extension>元素,<extension>元素必须包含一个子元素<secDNS:create>用于标识扩展名称空间。<secDNS:create>元素包含以下子元素:
- 一个可选的<secDNS:maxSigLife>元素,它指示子元素在签名生成之后的秒数的首选项,此时子元素提供的DS信息上的父元素签名将过期。maxSigLife在第3.3节中进行了描述。如果服务器不支持<secDNS:maxSigLife>元素,则必须返回2102错误。
- 0个或多个<secDNS:dsData>元素或<secDNS:keyData>元素,但不是两个都有,如第4节中定义的那样。<dsData>元素的子元素在4.1节中进行了描述。在4.2节中描述了<secDNS:keyData>元素的子元素。
使用DS数据接口用于安全委托的<create>命令
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C: <command>
C: <create>
C: <domain:create
C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C: <domain:name>example.com</domain:name>
C: <domain:period unit="y">2</domain:period>
C: <domain:ns>
C: <domain:hostObj>ns1.example.com</domain:hostObj>
C: <domain:hostObj>ns2.example.com</domain:hostObj>
C: </domain:ns>
C: <domain:registrant>jd1234</domain:registrant>
C: <domain:contact type="admin">sh8013</domain:contact>
C: <domain:contact type="tech">sh8013</domain:contact>
C: <domain:authInfo>
C: <domain:pw>2fooBAR</domain:pw>
C: </domain:authInfo>
C: </domain:create>
C: </create>
C: <extension>
C: <secDNS:create
C: xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
C: <secDNS:maxSigLife>604800</secDNS:maxSigLife>
C: <secDNS:dsData>
C: <secDNS:keyTag>12345</secDNS:keyTag>
C: <secDNS:alg>3</secDNS:alg>
C: <secDNS:digestType>1</secDNS:digestType>
C: <secDNS:digest>49FD46E6C4B45C55D4AC</secDNS:digest>
C: </secDNS:dsData>
C: </secDNS:create>
C: </extension>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
使用DS数据接口和可选密钥数据用于安全委托的<create>命令示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C: <command>
C: <create>
C: <domain:create
C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C: <domain:name>example.com</domain:name>
C: <domain:period unit="y">2</domain:period>
C: <domain:ns>
C: <domain:hostObj>ns1.example.com</domain:hostObj>
C: <domain:hostObj>ns2.example.com</domain:hostObj>
C: </domain:ns>
C: <domain:registrant>jd1234</domain:registrant>
C: <domain:contact type="admin">sh8013</domain:contact>
C: <domain:contact type="tech">sh8013</domain:contact>
C: <domain:authInfo>
C: <domain:pw>2fooBAR</domain:pw>
C: </domain:authInfo>
C: </domain:create>
C: </create>
C: <extension>
C: <secDNS:create
C: xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
C: <secDNS:maxSigLife>604800</secDNS:maxSigLife>
C: <secDNS:dsData>
C: <secDNS:keyTag>12345</secDNS:keyTag>
C: <secDNS:alg>3</secDNS:alg>
C: <secDNS:digestType>1</secDNS:digestType>
C: <secDNS:digest>49FD46E6C4B45C55D4AC</secDNS:digest>
C: <secDNS:keyData>
C: <secDNS:flags>257</secDNS:flags>
C: <secDNS:protocol>3</secDNS:protocol>
C: <secDNS:alg>1</secDNS:alg>
C: <secDNS:pubKey>AQPJ4Q==</secDNS:pubKey>
C: </secDNS:keyData>
C: </secDNS:dsData>
C: </secDNS:create>
C: </extension>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
使用密钥数据接口,用于安全委托<create>命令示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C: <command>
C: <create>
C: <domain:create
C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C: <domain:name>example.com</domain:name>
C: <domain:period unit="y">2</domain:period>
C: <domain:ns>
C: <domain:hostObj>ns1.example.com</domain:hostObj>
C: <domain:hostObj>ns2.example.com</domain:hostObj>
C: </domain:ns>
C: <domain:registrant>jd1234</domain:registrant>
C: <domain:contact type="admin">sh8013</domain:contact>
C: <domain:contact type="tech">sh8013</domain:contact>
C: <domain:authInfo>
C: <domain:pw>2fooBAR</domain:pw>
C: </domain:authInfo>
C: </domain:create>
C: </create>
C: <extension>
C: <secDNS:create
C: xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
C: <secDNS:keyData>
C: <secDNS:flags>257</secDNS:flags>
C: <secDNS:protocol>3</secDNS:protocol>
C: <secDNS:alg>1</secDNS:alg>
C: <secDNS:pubKey>AQPJ4Q==</secDNS:pubKey>
C: </secDNS:keyData>
C: </secDNS:create>
C: </extension>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
当<create>命令被成功处理后,EPP响应将在EPP域映射[RFC5731]中描述。
5.2.2 < delete >
此扩展不向EPP\ 命令或EPP域映射[RFC5731]中描述的<delete>响应添加任何元素。
5.2.3 < renew >
此扩展不向EPP <renew>命令或EPP域映射[RFC5731]中描述的<renew>响应添加任何元素。
5.2.4 < transfer >
此扩展不向EPP <transfer>命令或EPP域映射[RFC5731]中描述的<transfer>响应添加任何元素。
5.2.5 < update >
该扩展为EPP域映射[RFC5731]中描述的EPP<update>命令定义了额外的元素。没有为EPP <update>响应定义额外的元素。
EPP <update>命令提供了一个转换操作,允许客户端修改域对象的属性。除了EPP命令元素中描述EPP域映射,该命令必须包含一个<extension>元素,和<extension>元素必须包含一个孩子<secDNS:update>元素标识扩展名称空间如果客户机想要更新这个扩展中定义的域对象的数据。<secDNS:update>元素包含一个<secDNS:add>元素,用于向委托添加安全信息;<secDNS:rem>元素,用于从委托中删除安全信息;或者<secDNS:chg>元素,用于更改现有的安全信息。必须提供至少一个<secDNS:add>, <secDNS:rem>,或<secDNS:chg>元素。<secDNS:rem>和<secDNS:add> elements的顺序很重要,在添加新元素之前,服务器必须先删除现有元素。
<secDNS:update>元素还包含一个可选的“urgent”属性,客户机可以使用该属性要求服务器操作员完成并实现高优先级的更新请求。该属性接受第3.2节中描述的布尔值;默认值为boolean false。“High priority”相对于使用带外机制确定的标准服务器操作员策略。如果“urgent”属性指定为boolean true值,而服务器不支持它,则服务器必须返回一个EPP错误结果代码2102。如果服务器支持“加急”属性,并且不能高优先级完成紧急更新(以布尔值true的“urgent”属性表示),则服务器必须返回2306的EPP错误结果代码。
<secDNS:update>元素包含以下子元素:
-
一个可选的<secDNS:rem>元素,它包含一个<secDNS:all>元素,或一个或多个<secDNS:dsData>元素或<secDNS:keyData>元素,这些元素用于从委托中删除安全数据。
<secDNS:all>元素用于删除所有值为boolean true的DS和键数据。布尔值false将不起任何作用。删除所有DS信息可能会使父节点失去将委托委托给子节点区域的能力。
<secDNS:dsData>元素是DS数据接口的一部分,用于唯一地定义要删除的DS记录,方法是使用所有四个元素——保证唯一的<secDNS:keyTag>、<secDNS:alg>、<secDNS:digestType>和<secDNS:digest>。
<secDNS:keyData>元素是密钥数据接口的一部分,用于惟一地定义要删除的密钥数据,方法是使用保证惟一的四个元素——<secDNS:flags>、<secDNS:protocol>、<secDNS:alg>和<secDNS:pubKey>。可以为每个键创建多个DS记录,因此删除一个键可以删除多个DS记录。
-
一个可选的<secDNS:add>元素,用于向现有集合添加安全信息。<secDNS:add>元素必须包含一个或多个<secDNS:dsData>或<secDNS:keyData>元素。dsData>元素的子元素在4.1节中进行了描述。在4.2节中描述了<secDNS:keyData>元素的子元素。
-
一个可选的<secDNS:chg>元素,其中包含要更改的安全信息。一个<secDNS:chg>元素包含下面的子元素:
- 一个可选的<secDNS:maxSigLife>元素,它指示子元素在签名生成之后的秒数的首选项,此时子元素提供的DS信息上的父元素签名将过期。maxSigLife在第3.3节中进行了描述。如果服务器不支持<secDNS:maxSigLife>元素,则必须返回2102错误。
使用DS数据接口添加和删除DS数据的<update>命令示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C: <command>
C: <update>
C: <domain:update
C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C: <domain:name>example.com</domain:name>
C: </domain:update>
C: </update>
C: <extension>
C: <secDNS:update
C: xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
C: <secDNS:rem>
C: <secDNS:dsData>
C: <secDNS:keyTag>12345</secDNS:keyTag>
C: <secDNS:alg>3</secDNS:alg>
C: <secDNS:digestType>1</secDNS:digestType>
C: <secDNS:digest>38EC35D5B3A34B33C99B</secDNS:digest>
C: </secDNS:dsData>
C: </secDNS:rem>
C: <secDNS:add>
C: <secDNS:dsData>
C: <secDNS:keyTag>12346</secDNS:keyTag>
C: <secDNS:alg>3</secDNS:alg>
C: <secDNS:digestType>1</secDNS:digestType>
C: <secDNS:digest>38EC35D5B3A34B44C39B</secDNS:digest>
C: </secDNS:dsData>
C: </secDNS:add>
C: </secDNS:update>
C: </extension>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
更新最大签名时间(maxSigLife)的<update>命令:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C: <command>
C: <update>
C: <domain:update
C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C: <domain:name>example.com</domain:name>
C: </domain:update>
C: </update>
C: <extension>
C: <secDNS:update
C: xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
C: <secDNS:chg>
C: <secDNS:maxSigLife>605900</secDNS:maxSigLife>
C: </secDNS:chg>
C: </secDNS:update>
C: </extension>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
使用密钥数据接口添加和删除密钥数据,并设置maxSigLife的<update>命令:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C: <command>
C: <update>
C: <domain:update
C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C: <domain:name>example.com</domain:name>
C: </domain:update>
C: </update>
C: <extension>
C: <secDNS:update
C: xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
C: <secDNS:rem>
C: <secDNS:keyData>
C: <secDNS:flags>257</secDNS:flags>
C: <secDNS:protocol>3</secDNS:protocol>
C: <secDNS:alg>1</secDNS:alg>
C: <secDNS:pubKey>AQPJ4QQQ</secDNS:pubKey>
C: </secDNS:keyData>
C: </secDNS:rem>
C: <secDNS:add>
C: <secDNS:keyData>
C: <secDNS:flags>257</secDNS:flags>
C: <secDNS:protocol>3</secDNS:protocol>
C: <secDNS:alg>1</secDNS:alg>
C: <secDNS:pubKey>AQPJ4Q==</secDNS:pubKey>
C: </secDNS:keyData>
C: </secDNS:add>
C: <secDNS:chg>
C: <secDNS:maxSigLife>605900</secDNS:maxSigLife>
C: </secDNS:chg>
C: </secDNS:update>
C: </extension>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
使用DS数据接口删除具有<secDNS:dsData>的DS数据的<update>命令示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C: <command>
C: <update>
C: <domain:update
C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C: <domain:name>example.com</domain:name>
C: </domain:update>
C: </update>
C: <extension>
C: <secDNS:update
C: xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
C: <secDNS:rem>
C: <secDNS:dsData>
C: <secDNS:keyTag>12346</secDNS:keyTag>
C: <secDNS:alg>3</secDNS:alg>
C: <secDNS:digestType>1</secDNS:digestType>
C: <secDNS:digest>38EC35D5B3A34B44C39B</secDNS:digest>
C: </secDNS:dsData>
C: </secDNS:rem>
C: </secDNS:update>
C: </extension>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
使用<secDNS:rem>和<secDNS:all>删除所有DS和关键数据的 <update>命令示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C: <command>
C: <update>
C: <domain:update
C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C: <domain:name>example.com</domain:name>
C: </domain:update>
C: </update>
C: <extension>
C: <secDNS:update urgent="true"
C: xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.0">
C: <secDNS:rem>
C: <secDNS:all>true</secDNS:all>
C: </secDNS:rem>
C: </secDNS:update>
C: </extension>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
使用DS数据接口替换所有DS数据的<update>命令:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
C: <command>
C: <update>
C: <domain:update
C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
C: <domain:name>example.com</domain:name>
C: </domain:update>
C: </update>
C: <extension>
C: <secDNS:update urgent="true"
C: xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1">
C: <secDNS:rem>
C: <secDNS:all>true</secDNS:all>
C: </secDNS:rem>
C: <secDNS:add>
C: <secDNS:dsData>
C: <secDNS:keyTag>12346</secDNS:keyTag>
C: <secDNS:alg>3</secDNS:alg>
C: <secDNS:digestType>1</secDNS:digestType>
C: <secDNS:digest>38EC35D5B3A34B44C39B</secDNS:digest>
C: </secDNS:dsData>
C: </secDNS:add>
C: </secDNS:update>
C: </extension>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
当扩展的<update>命令被成功处理后,EPP响应将在EPP域映射[RFC5731]中描述。