Blame src/danetool-args.def

Packit aea12f
AutoGen Definitions options;
Packit aea12f
prog-name     = danetool;
Packit aea12f
prog-title    = "GnuTLS DANE tool";
Packit aea12f
prog-desc     = "Generate DANE TLSA RR entries.";
Packit aea12f
detail    = "Tool to generate and check DNS resource records for the DANE protocol.";
Packit aea12f
short-usage   = "danetool --[tlsa-rr|check] [options]
Packit aea12f
danetool --help for additional usage instructions.\n";
Packit aea12f
explain       = "";
Packit aea12f
Packit aea12f
#define  INFILE_OPT    0
Packit aea12f
#define  OUTFILE_OPT   1
Packit aea12f
#define  VERBOSE_OPT 1
Packit aea12f
#include args-std.def
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = load-pubkey;
Packit aea12f
    descrip   = "Loads a public key file";
Packit aea12f
    arg-type  = string;
Packit aea12f
    doc = "This can be either a file or a PKCS #11 URL";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = load-certificate;
Packit aea12f
    descrip   = "Loads a certificate file";
Packit aea12f
    arg-type  = string;
Packit aea12f
    doc = "This can be either a file or a PKCS #11 URL";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = dlv;
Packit aea12f
    descrip   = "Sets a DLV file";
Packit aea12f
    arg-type  = string;
Packit aea12f
    doc = "This sets a DLV file to be used for DNSSEC verification.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = hash;
Packit aea12f
    arg-type  = string;
Packit aea12f
    descrip   = "Hash algorithm to use for signing";
Packit aea12f
    doc = "Available hash functions are SHA1, RMD160, SHA256, SHA384, SHA512.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = check;
Packit aea12f
    arg-type  = string;
Packit aea12f
    descrip   = "Check a host's DANE TLSA entry";
Packit aea12f
    doc = "Obtains the DANE TLSA entry from the given hostname and prints information. Note that the actual certificate of the host can be provided using --load-certificate, otherwise danetool will connect to the server to obtain it. The exit code on verification success will be zero.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = check-ee;
Packit aea12f
    descrip   = "Check only the end-entity's certificate";
Packit aea12f
    doc = "Checks the end-entity's certificate only. Trust anchors or CAs are not considered.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = check-ca;
Packit aea12f
    descrip   = "Check only the CA's certificate";
Packit aea12f
    doc = "Checks the trust anchor's and CA's certificate only. End-entities are not considered.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = tlsa-rr;
Packit aea12f
    descrip   = "Print the DANE RR data on a certificate or public key";
Packit aea12f
    flags_must = host;
Packit aea12f
    doc = "This command prints the DANE RR data needed to enable DANE on a DNS server.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = host;
Packit aea12f
    descrip   = "Specify the hostname to be used in the DANE RR";
Packit aea12f
    arg-type  = string;
Packit aea12f
    arg-name  = "Hostname";
Packit aea12f
    doc = "This command sets the hostname for the DANE RR.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = proto;
Packit aea12f
    descrip   = "The protocol set for DANE data (tcp, udp etc.)";
Packit aea12f
    arg-type  = string;
Packit aea12f
    arg-name  = "Protocol";
Packit aea12f
    doc = "This command specifies the protocol for the service set in the DANE data.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = port;
Packit aea12f
    arg-type  = string;
Packit aea12f
    descrip   = "The port or service to connect to, for DANE data";
Packit aea12f
    default-value = "443";
Packit aea12f
    doc      = "";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = app-proto;
Packit aea12f
    aliases   = starttls-proto;
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = starttls-proto;
Packit aea12f
    descrip   = "The application protocol to be used to obtain the server's certificate (https, ftp, smtp, imap, ldap, xmpp, lmtp, pop3, nntp, sieve, postgres)";
Packit aea12f
    arg-type  = string;
Packit aea12f
    doc = "When the server's certificate isn't provided danetool will connect to the server to obtain the certificate. In that case it is required to know the protocol to talk with the server prior to initiating the TLS handshake.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = ca;
Packit aea12f
    descrip   = "Whether the provided certificate or public key is a Certificate Authority";
Packit aea12f
    doc      = "Marks the DANE RR as a CA certificate if specified.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = x509;
Packit aea12f
    descrip   = "Use the hash of the X.509 certificate, rather than the public key";
Packit aea12f
    doc      = "This option forces the generated record to contain the hash of the full X.509 certificate. By default only the hash of the public key is used.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = local;
Packit aea12f
    aliases   = domain;
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = domain;
Packit aea12f
    descrip   = "The provided certificate or public key is issued by the local domain";
Packit aea12f
    enabled;
Packit aea12f
    disable   = "no";
Packit aea12f
    doc      = "DANE distinguishes certificates and public keys offered via the DNSSEC to trusted and local entities. This flag indicates that this is a domain-issued certificate, meaning that there could be no CA involved.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = local-dns;
Packit aea12f
    descrip   = "Use the local DNS server for DNSSEC resolving";
Packit aea12f
    disabled;
Packit aea12f
    disable   = "no";
Packit aea12f
    doc       = "This option will use the local DNS server for DNSSEC.
Packit aea12f
This is disabled by default due to many servers not allowing DNSSEC.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = insecure;
Packit aea12f
    descrip   = "Do not verify any DNSSEC signature";
Packit aea12f
    doc = "Ignores any DNSSEC signature verification results.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = inder;
Packit aea12f
    descrip   = "Use DER format for input certificates and private keys";
Packit aea12f
    disabled;
Packit aea12f
    disable   = "no";
Packit aea12f
    doc       = "The input files will be assumed to be in DER or RAW format. 
Packit aea12f
Unlike options that in PEM input would allow multiple input data (e.g. multiple 
Packit aea12f
certificates), when reading in DER format a single data structure is read.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = inraw;
Packit aea12f
    aliases   = inder;
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = print-raw;
Packit aea12f
    descrip   = "Print the received DANE data in raw format";
Packit aea12f
    disabled;
Packit aea12f
    disable   = "no";
Packit aea12f
    doc = "This option will print the received DANE data.";
Packit aea12f
};
Packit aea12f
Packit aea12f
flag = {
Packit aea12f
    name      = quiet;
Packit aea12f
    descrip   = "Suppress several informational messages";
Packit aea12f
    doc      = "In that case on the exit code can be used as an indication of verification success";
Packit aea12f
};
Packit aea12f
Packit aea12f
Packit aea12f
Packit aea12f
doc-section = {
Packit aea12f
  ds-type = 'SEE ALSO';
Packit aea12f
  ds-format = 'texi';
Packit aea12f
  ds-text   = <<-_EOT_
Packit aea12f
    certtool (1)
Packit aea12f
_EOT_;
Packit aea12f
};
Packit aea12f
Packit aea12f
doc-section = {
Packit aea12f
  ds-type = 'EXAMPLES';
Packit aea12f
  ds-format = 'texi';
Packit aea12f
  ds-text   = <<-_EOT_
Packit aea12f
@subheading DANE TLSA RR generation
Packit aea12f
Packit aea12f
To create a DANE TLSA resource record for a certificate (or public key) 
Packit aea12f
that was issued localy and may or may not be signed by a CA use the following command.
Packit aea12f
@example
Packit aea12f
$ danetool --tlsa-rr --host www.example.com --load-certificate cert.pem
Packit aea12f
@end example
Packit aea12f
Packit aea12f
To create a DANE TLSA resource record for a CA signed certificate, which will
Packit aea12f
be marked as such use the following command.
Packit aea12f
@example
Packit aea12f
$ danetool --tlsa-rr --host www.example.com --load-certificate cert.pem \
Packit aea12f
  --no-domain
Packit aea12f
@end example
Packit aea12f
Packit aea12f
The former is useful to add in your DNS entry even if your certificate is signed 
Packit aea12f
by a CA. That way even users who do not trust your CA will be able to verify your
Packit aea12f
certificate using DANE.
Packit aea12f
Packit aea12f
In order to create a record for the CA signer of your certificate use the following.
Packit aea12f
@example
Packit aea12f
$ danetool --tlsa-rr --host www.example.com --load-certificate cert.pem \
Packit aea12f
  --ca --no-domain
Packit aea12f
@end example
Packit aea12f
Packit aea12f
To read a server's DANE TLSA entry, use:
Packit aea12f
@example
Packit aea12f
$ danetool --check www.example.com --proto tcp --port 443
Packit aea12f
@end example
Packit aea12f
Packit aea12f
To verify an HTTPS server's DANE TLSA entry, use:
Packit aea12f
@example
Packit aea12f
$ danetool --check www.example.com --proto tcp --port 443 --load-certificate chain.pem
Packit aea12f
@end example
Packit aea12f
Packit aea12f
To verify an SMTP server's DANE TLSA entry, use:
Packit aea12f
@example
Packit aea12f
$ danetool --check www.example.com --proto tcp --starttls-proto=smtp --load-certificate chain.pem
Packit aea12f
@end example
Packit aea12f
_EOT_;
Packit aea12f
};
Packit aea12f
Packit aea12f