dnssec-keygen -a algorithm -b keysize [-c class] [-e] [-g generator] [-h]
-n nametype [-p protocol-value] [-r randomdev] [-s
strength-value] [-t type] [-v level] name
DESCRIPTION
dnssec-keygen generates keys for DNSSEC, Secure DNS, as defined in
RFC2535. It also generates keys for use in Transaction Signatures, TSIG,
which is defined in RFC2845.
A short summary of the options and arguments to dnssec-keygen is printed
by the -h (help) option.
The -a, -b, and -n options and their arguments must be supplied when gen
erating keys. The domain name that the key has to be generated for is
given by name.
The choice of encryption algorithm is selected by the -a option to
dnssec-keygen. algorithm must be one of RSAMD5, DH, DSA or HMAC-MD5 to
indicate that an RSA, Diffie-Hellman, Digital Signature Algorithm or
HMAC-MD5 key is required. An argument of RSA can also be given, which is
equivalent to RSAMD5. The argument identifying the encryption algorithm
is case-insensitive. DNSSEC specifies DSA as a mandatory algorithm and
RSA as a recommended one. Implementations of TSIG must support HMAC-MD5.
The number of bits in the key is determined by the keysize argument fol
lowing the -b option. The choice of key size depends on the algorithm
that is used. RSA keys must be between 512 and 2048 bits. Diffie-Hell
man keys must be between 128 and 4096 bits. For DSA, the key size must
be between 512 and 1024 bits and a multiple of 64. The length of an
HMAC-MD5 key can be between 1 and 512 bits.
The -n option specifies how the generated key will be used. nametype can
be either ZONE, HOST, ENTITY, or USER to indicate that the key will be
used for signing a zone, host, entity or user respectively. In this con
text HOST and ENTITY are identical. nametype is case-insensitive.
The -c option specifies that the when creating a KEY record, the speci
fied class should be used instead of IN.
The -e option can only be used when generating RSA keys. It tells
dnssec-keygen to use a large exponent. When creating Diffie-Hellman
keys, the -g option selects the Diffie-Hellman generator generator that
is to be used. The only supported values value of generator are 2 and 5.
If no Diffie-Hellman generator is supplied, a known prime from RFC2539
will be used if possible; otherwise 2 will be used as the generator.
The -p option sets the protocol value for the generated key to protocol-
value. The default is 2 (email) for keys of type USER and 3 (DNSSEC) for
all other key types. Other possible values for this argument are listed
in RFC2535 and its successors.
dnssec-keygen uses random numbers to seed the process of generating keys.
If the system does not have a /dev/random device that can be used for
generating random numbers, dnssec-keygen will prompt for keyboard input
and use the time intervals between keystrokes to provide randomness. The
-r option overrides this behaviour, making dnssec-keygen use randomdev as
NOCONF. The default is AUTHCONF. If type is AUTHCONF the key can be used
for authentication and confidentialty. Setting type to NOAUTHCONF indi
cates that the key cannot be used for authentication or confidentialty.
A value of NOAUTH means the key can be used for confidentiality but not
for authentication. Similarly, NOCONF defines that the key cannot be
used for confidentiality though it can be used for authentication.
The -v option can be used to make dnssec-keygen more verbose. As the de
bugging/tracing level level increases, dnssec-keygen generates increas
ingly detailed reports about what it is doing. The default level is ze
ro.
GENERATED KEYS
When dnssec-keygen completes it prints a string of the form
Knnnn.+aaa+iiiii on the standard output. This is an identification
string for the key it has generated. These strings can be supplied as
arguments to dnssec-makekeyset(8).
The nnnn. part is the dot-terminated domain name given by name. The
DNSSEC algorithm identifier is indicated by aaa - 001 for RSA, 002 for
Diffie-Hellman, 003 for DSA or 157 for HMAC-MD5. iiiii is a five-digit
number identifying the key.
dnssec-keygen creates two files. The file names are adapted from the key
identification string above. They have names of the form:
Knnnn.+aaa+iiiii.key and Knnnn.+aaa+iiiii.private. These contain the pub
lic and private parts of the key respectively. The files generated by
dnssec-keygen obey this naming convention to make it easy for the signing
tool dnssec-signzone(8) to identify which file(s) have to be read to find
the necessary key(s) for generating or validating signatures.
The .key file contains a KEY resource record that can be inserted into a
zone file with a $INCLUDE statement. The private part of the key is in
the .private file. It contains details of the encryption algorithm that
was used and any relevant parameters: prime number, exponent, modulus,
subprime, etc. For obvious security reasons, this file does not have
general read permission. The private part of the key is used by dnssec-
signzone(8) to generate signatures and the public part is used to verify
the signatures. Both .key and .private key files are generated for sym
metric encryption algorithm such as HMAC-MD5, even though the public and
private key are equivalent.
EXAMPLE
To generate a 768-bit DSA key for the domain example.com, the following
command would be issued:
# dnssec-keygen -a DSA -b 768 -n ZONE example.com
Kexample.com.+003+26160
dnssec-keygen has printed the key identification string
Kexample.com.+003+26160, indicating a DSA key with identifier 26160. It
will also have created the files Kexample.com.+003+26160.key and
Kexample.com.+003+26160.private containing respectively the public and
private keys for the generated DSA key.
FILES
are too long for most UNIX systems.
BIND9 Jun 30, 2000 3
Man(1) output converted with
man2html