dnssec-keygen 命令
用途
域名系统安全性扩展 (DNSSEC) 密钥生成工具。
语法
dnssec-keygen [-3] [-A 日期/偏移] [-a 算法] [-b 键值] [-C] [-c 类] [-D 日期/偏移] [-d 钻头] [-D sync 日期/偏移] [-E 引擎] [-f 国旗] [-G] [-g 发生器] [-h] [-I 日期/偏移] [-i 间隙] [-K 通讯录] [-k 政策] [-L ttl] [-l 文件] [-n 命名类型] [-P 日期/偏移] [-P sync 日期/偏移] [-p 规程] [-q] [-R 日期/偏移] [-S 密钥] [-s 力量] [-T rrtype] [-t 类型] [-V] [-v 夷为平地] [名字]
描述
dnssec-keygen命令为RFC 2535和RFC 4034 中定义的 DNSSEC(安全 DNS)生成密钥。 它还能生成用于RFC 2845 中定义的交易签名 (TSIG) 或RFC 2930 中定义的交易密钥 (TKEY) 的密钥。
在命令行中指定密钥的名称。 对于 DNSSEC 密钥,密钥的名称必须与生成密钥的区域名称一致。
标志
| 项 | 描述 |
|---|---|
| -3 | 使用支持 "NSEC3的算法生成 DNSSEC 密钥。 如果该选项与同时具有 "NSEC和 "NSEC3版本的算法一起使用,则选择 "NSEC3版本。 例如,"dnssec-keygen -3a RSASHA1指定NSEC3RSASHA1算法。 |
| -a 算法 | 选择加密算法。 对于 DNSSEC 密钥,算法值必须是以下任一值:
-T KEY的值必须是 Diffie-Hellman (DH)。 如果指定了该值,则也会自动设置 "-T KEY选项。这些值不区分大小写。 有时也支持缩写,如用 " 必须指定此参数,使用 -S 选项时除外,该选项从先行键复制算法。 在以前的版本中,可以生成 HMAC 算法作为 TSIG 密钥使用,但 BIND9.13.0 取消了这一功能。 使用 tsig-keygen 命令生成 TSIG 密钥。 |
| -b 密钥大小 | 指定密钥位数。 密钥大小的选择取决于所使用的算法。 RSA 密钥的范围必须是 1024-4096 位,DH 密钥的范围必须是 128-4096 位。 椭圆曲线算法不需要此参数。 如果未指定密钥大小,那么某些算法具有预定义的缺省值。 例如,用作 DNSSEC 区域签名密钥的 RSA 密钥默认大小为 1024 位。 用作密钥签名密钥(KSK,用 " |
| -C | 启用兼容模式,生成不含任何时序元数据的旧式密钥。 默认情况下,"dnssec-keygen命令会在与私钥一起存储的元数据中包含密钥的创建日期。 还可以设置其他日期,如发布日期、激活日期等。 包含这些数据的密钥可能与旧版本的 BIND 不兼容。 -C选项会抑制该数据。 |
| -c Class | 表示包含密钥的域名系统 (DNS) 记录必须具有指定的类。 如果未指定,那么使用类 IN。 |
| -d 位 | 以位为单位指定密钥大小。 对于 "RSASHA1、"NSEC3RSASA1、"RSASHA256和 "RSASHA512"算法,密钥大小必须在 1024-4096 位范围内,DH 大小必须在 128-4096 位范围内。 对于算法 ECDSAP256SHA256, ECDSAP384SHA384, ED25519和 ED448,将忽略此选项。 |
| -E 引擎 | 指定要使用的加密硬件 (如果适用)。 当 BIND 9 使用 "OpenSSL,构建时,需要将此选项设置为驱动加密加速器或硬件服务模块的 "OpenSSL引擎标识符(通常为 " |
| -f 标志 | 在 KEY 或 DNSKEY 记录的 flag 字段中设置指定标志。 唯一公认的标志是 KSK DNSKEY。 |
| -G | 生成密钥,但不发布密钥或使用密钥进行签名。 此选项与 -P 和 -A 标志不兼容。 |
| -g 生成器 | 表示生成 DH 密钥必须使用的生成器。 允许的值为 2 和 5。 如果没有指定生成器,则尽可能使用RFC 2539中的已知素数,否则默认值为 2。 |
| -h | 打印 "dnssec-keygen命令的选项和参数摘要。 |
| -K 目录 | 设置必须在其中写入密钥文件的目录。 |
| -k 策略 | 为特定 dnssec-policy 配置创建密钥。 如果策略使用多个密钥,那么 dnssec-keygen 命令将生成多个密钥。 此选项还会创建 .state 文件以跟踪密钥状态。 此选项根据 dnssec-policy 配置创建密钥。 因此,它不能与 "dnssec-keygen命令提供的其他选项同时使用。 |
| -L | 设置 DNSSEC 密钥转换为 DNSKEY 资源记录 (RR) 时使用的默认生存时间 (TTL)。 将密钥导入到区域时使用此 TTL ,除非已设置 DNSKEY RR。 在这种情况下,现有 TTL 优先。 如果未设置此值,且 DNSKEY RR 设置不存在,则 TTL 默认为 SOA TTL。 如果 TTL 的默认值设置为 "0或 "none,则与不设置 TTL 相同。 |
| -l 文件 | 此选项提供了一个配置文件,其中包含 dnssec-policy 语句 (将策略集与 -k 标志匹配)。 |
| -n 名称类型 | 指定密钥的所有者类型。 nametype的值必须是以下值之一:
ZONE。 |
| -pProtocol | 为生成的密钥设定协议值。 协议值范围为 0-255。 缺省值为 3 (DNSSEC)。 RFC 2535及其后续版本中列出了该参数的其他可能值。 |
| -q | 设置静音模式,抑制不必要的输出,包括进度指示。 如果不使用该选项交互运行 "dnssec-keygen命令来生成 Rivest-Shamir-Adleman (RSA) 或数字签名算法 (DSA) 密钥对,它会向 "stderr打印一串符号。 这表明密钥生成的进度。
|
| -S 键 | 创建一个新密钥,它是现有密钥的明确继承者。 密钥的名称、算法、大小和类型会被设置为与现有密钥匹配。 新密钥的激活日期设置为现有密钥的停用日期。 发布日期设置为激活日期减去发布前时间间隔 (缺省为 30 天)。 |
| -s 强度 | 指定密钥的强度值。 强度是一个范围在 0-15 之间的数字,目前在 DNSSEC 算法中没有定义用途。 |
| -T rrtype | 指定必须用于密钥的资源记录类型。 rrtype 必须是 DNSKEY 或 KEY。 使用 DNSSEC 算法时,默认值为 DNSKEY,但要使用 "SIG(0)密钥对时,可将该值更改为 KEY。 |
| -t Type | 指定密钥的使用。 类型必须是以下值之一:
AUTHCONF。 AUTH表示验证数据的能力,"CONF表示加密数据的能力。 |
| -V | 打印版本信息。 |
| -v 级别 | 设置调试级别。 |
计时标志
日期可以用 "YYYYMMDD或 "YYYYMMDDHHMMSS的格式表示。 如果参数以正号(+)或负号(-)开头,则被解释为从当前时间开始的偏移量。 如果偏移量后面有后缀 "y"、"mo"、"w"、"d"、"h"或 "mi",则偏移量的计算单位为年(定义为 365 个 24 小时日,忽略闰年)、月(定义为 30 个 24 小时日)、周、日、小时或分钟。 如果不使用后缀,那么将以秒为单位计算偏移量。 要明确阻止设置日期,请使用 "none、"never或 "unset。
| 项 | 描述 |
|---|---|
| -P 日期/偏移量 | 此选项设置必须将密钥发布到区域的日期。 在此日期之后,密钥将包含在区域中,但不会用于签署区域。 如果未设置此选项,并且未使用 -G 选项,那么缺省值为当前日期。 |
| -P sync 日期/偏移量 | 该选项设置了与该密钥相匹配的子委托签名者 (CDS) 和子域名服务器密钥 (CDNSKEY) 记录必须发布到区域的日期。 |
| -A 日期/偏移量 | 此选项设置必须激活密钥的日期。 在该日期之后,该密钥将包含在区域中,并用于对该区域进行签名。 如果未设置此选项,并且未使用 -G 选项,那么缺省值为当前日期。 如果设置了此选项,并且未设置 -P 标志,那么发布日期将设置为激活日期减去发布前时间间隔。 |
| -R 日期/偏移量 | 此选项设置必须撤销密钥的日期。 在该日期之后,该密钥将标记为已撤销。 密钥仍包含在区域中,并用于签署区域。 |
| -I 日期/偏移量 | 此选项设置必须撤销密钥的日期。 在该日期之后,密钥仍包含在区域中,但不用于签署区域。 |
| -D 日期/偏移量 | 此选项设置必须删除密钥的日期。 在该日期之后,该密钥不会包含在区域中。 不过,它可能会保留在密钥存储库中。 |
| -D sync 日期/偏移量 | 此选项设置必须删除与此键匹配的 CDS 和 CDNSKEY 记录的日期。 |
| -i interval | 此选项设置密钥的发布前时间间隔。 如果设置了该选项,则出版日期和激活日期会被指定的时间分隔开来。 如果指定了激活日期,但未指定发布日期,那么发布日期缺省为激活日期之前的指定时间。 相反,如果指定了发布日期,但未指定激活日期,那么会将激活设置为发布后的指定时间。 如果密钥是作为另一个密钥的明确继承者创建的,则默认的发布前间隔为 30 天,否则为 0 天。 与日期偏移一样,如果参数后面有后缀 " |
参数
| 项 | 描述 |
|---|---|
| 名称 | 命令行上指定的密钥的名称。 对于 DNSSEC 密钥,该名称必须与生成密钥的区域名称一致。 |
生成的密钥
Knnnn.+aaa+iiiii 的字符串打印到标准输出。 这是生成的密钥的标识字符串。nnnn是密钥名。aaa算法的数字表示。iiiii是密钥标识(或占地面积)。
.key文件包含 DNSKEY 或 KEY 记录。 使用 "named命令或 "dnssec-signzone -S命令签署区域时,会自动包含 DNSKEY 记录。 在其他情况下,可手动或通过 $INCLUDE 语句将 .key 文件插入区域文件。
.private 文件中包含特定于算法的字段。 为了安全起见,此文件没有常规的读许可权。
示例
dnssec-keygen -a ECDSAP256SHA256 example.comKexample.com.+013+26160在此示例中, dnssec-keygen 命令将创建文件 Kexample.com.+013+26160.key 和 Kexample.com.+013+26160.private。
dnssec-keygen -a ECDSAP256SHA256 -f KSK example.com