差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
notes:d:dnssec-authorative [2015/06/26 07:18] delphijnotes:d:dnssec-authorative [2020/02/14 06:44] (当前版本) – [DANE] delphij
行 157: 行 157:
 ==== DANE ==== ==== DANE ====
  
 +DANE记录可以从证书中提取公钥来生成。DANE记录有4个字段:
  
-待续+  * 用途 Usage 字段,允许的数值有: 
 +    * 0 - PKIX-TA: Certificate Authority Constraint 指定一个CA,服务器必须使用该CA签发的证书,并且受用户信任。 
 +    * 1 - PKIX-EE: Service Certificate Constraint 指定服务器证书,服务器必须使用这个证书,并且该证书必须通过PKIX的验证。 
 +    * 2 - DANE-TA: Trust Anchor Assertion 指定一个CA,服务器必须使用该CA签发的证书,但该证书不必为用户信任。 
 +    * 3 - DANE-EE: Domain Issued Certificate 指定服务器证书,服务器必须使用这个证书,但证书不必通过PKIX验证。 
 +  * 选择器 Selector 字段,允许的数值有: 
 +    * 0 - Cert: Use full certificate 使用整的证书。 
 +    * 1 - SPKI: Use subject public key 只使用证书的公钥部分。 
 +  * 匹配类型 Matching Type 字段,允许的数值有: 
 +    * 0 - Full: No Hash 不进行hash。(并无必要,通常应选择以下两种之一) 
 +    * 1 - SHA-256: SHA-256 hash。(回应尺寸小,但计算较慢) 
 +    * 2 - SHA-512: SHA-512 hash(回应尺寸大,但计算较快) 
 +  * TLSA 数据(参见下面的生成命令)
  
 +举个例子:3 1 2 表示我们的 TLSA 记录将指明服务器所用的证书的公钥的 SHA-512 hash。用途字段(目前是3)选1时,客户端需要进行更严格一些的验证(例如确认域名匹配等)。
 +
 +TLSA 数据是根据上述选择器指定的内容产生的,通常来说我们匹配公钥的SHA-512 hash就可以了,下面的命令可以生成需要的数据。
 +
 +<code bash>
 +openssl x509 -noout -pubkey -in domainname.cer | \
 +  openssl rsa -pubin -outform DER | sha512 | \
 +  tr "a-f" "A-F"
 +</code>
 +
 +最后将数据写到DNS TLSA记录里。BIND的写法类似下面这样:
 +
 +<code>
 +_443._tcp.www.example.org TLSA (3 1 2 <上面命令生成的结果>)
 +</code>
 ===== 参考文献 ===== ===== 参考文献 =====
  
   * NIST Publication SP-800-81 [[http://csrc.nist.gov/publications/PubsSPs.html|NIST SP]]   * NIST Publication SP-800-81 [[http://csrc.nist.gov/publications/PubsSPs.html|NIST SP]]
   * [[https://deepthought.isc.org/article/AA-00711/0/In-line-Signing-With-NSEC3-in-BIND-9.9-A-Walk-through.html|ISC KB AA-00711 In-line Signing With NSEC3 in BIND 9.9+ -- A Walk-through]]   * [[https://deepthought.isc.org/article/AA-00711/0/In-line-Signing-With-NSEC3-in-BIND-9.9-A-Walk-through.html|ISC KB AA-00711 In-line Signing With NSEC3 in BIND 9.9+ -- A Walk-through]]