Blame src/certtool-args.def

Packit 549fdc
AutoGen Definitions options;
Packit 549fdc
prog-name     = certtool;
Packit 549fdc
prog-title    = "GnuTLS certificate tool";
Packit 549fdc
prog-desc     = "Manipulate certificates and private keys.";
Packit 549fdc
detail    = "Tool to parse and generate X.509 certificates, requests and private keys.
Packit 549fdc
It can be used interactively or non interactively by
Packit 549fdc
specifying the template command line option.
Packit 549fdc
Packit 549fdc
The tool accepts files or supported URIs via the --infile option. In case PIN
Packit 549fdc
is required for URI access you can provide it using the environment variables GNUTLS_PIN 
Packit 549fdc
and GNUTLS_SO_PIN.
Packit 549fdc
";
Packit 549fdc
short-usage   = "certtool [options]\ncerttool --help for usage instructions.\n";
Packit 549fdc
explain       = "";
Packit 549fdc
Packit 549fdc
#define  INFILE_OPT    1
Packit 549fdc
#define  OUTFILE_OPT   1
Packit 549fdc
#define  VERBOSE_OPT 1
Packit 549fdc
#include args-std.def
Packit 549fdc
Packit 549fdc
//----------------------------------------
Packit 549fdc
flag = {
Packit 549fdc
    name = cert_options;
Packit 549fdc
    documentation;
Packit 549fdc
    descrip = "Certificate related options";
Packit 549fdc
};
Packit 549fdc
//----------------------------------------
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = certificate-info;
Packit 549fdc
    value     = i;
Packit 549fdc
    descrip   = "Print information on the given certificate";
Packit 549fdc
    doc       = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = pubkey-info;
Packit 549fdc
    descrip   = "Print information on a public key";
Packit 549fdc
    doc = "The option combined with --load-request, --load-pubkey, --load-privkey and --load-certificate will extract the public key of the object in question.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = generate-self-signed;
Packit 549fdc
    value     = s;
Packit 549fdc
    descrip   = "Generate a self-signed certificate";
Packit 549fdc
    doc = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = generate-certificate;
Packit 549fdc
    value     = c;
Packit 549fdc
    descrip   = "Generate a signed certificate";
Packit 549fdc
    doc = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = generate-proxy;
Packit 549fdc
    descrip   = "Generates a proxy certificate";
Packit 549fdc
    doc = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = update-certificate;
Packit 549fdc
    value     = u;
Packit 549fdc
    descrip   = "Update a signed certificate";
Packit 549fdc
    doc = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = fingerprint;
Packit 549fdc
    descrip   = "Print the fingerprint of the given certificate";
Packit 549fdc
    doc       = "This is a simple hash of the DER encoding of the certificate. It can be combined with the --hash parameter. However, it is recommended for identification to use the key-id which depends only on the certificate's key.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = key-id;
Packit 549fdc
    descrip   = "Print the key ID of the given certificate";
Packit 549fdc
    doc       = "This is a hash of the public key of the given certificate. It identifies the key uniquely, remains the same on a certificate renewal and depends only on signed fields of the certificate.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = certificate-pubkey;
Packit 549fdc
    descrip   = "Print certificate's public key";
Packit 549fdc
    doc       = "This option is deprecated as a duplicate of --pubkey-info";
Packit 549fdc
    deprecated;
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = v1;
Packit 549fdc
    descrip   = "Generate an X.509 version 1 certificate (with no extensions)";
Packit 549fdc
    doc = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = sign-params;
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    descrip   = "Sign a certificate with a specific signature algorithm";
Packit 549fdc
    doc = "This option can be combined with --generate-certificate, to sign the certificate with
Packit 549fdc
a specific signature algorithm variant. The only option supported is 'RSA-PSS', and should be
Packit 549fdc
specified when the signer does not have a certificate which is marked for RSA-PSS use only.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
Packit 549fdc
//----------------------------------------
Packit 549fdc
flag = {
Packit 549fdc
    name = crq_options;
Packit 549fdc
    documentation;
Packit 549fdc
    descrip = "Certificate request related options";
Packit 549fdc
};
Packit 549fdc
//----------------------------------------
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = crq-info;
Packit 549fdc
    descrip   = "Print information on the given certificate request";
Packit 549fdc
    doc       = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = generate-request;
Packit 549fdc
    value     = q;
Packit 549fdc
    descrip   = "Generate a PKCS #10 certificate request";
Packit 549fdc
    flags_cant = infile;
Packit 549fdc
    doc = "Will generate a PKCS #10 certificate request. To specify a private key use --load-privkey.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = no-crq-extensions;
Packit 549fdc
    descrip   = "Do not use extensions in certificate requests";
Packit 549fdc
    doc       = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
//----------------------------------------
Packit 549fdc
flag = {
Packit 549fdc
    name = pkcs12_options;
Packit 549fdc
    documentation;
Packit 549fdc
    descrip = "PKCS#12 file related options";
Packit 549fdc
};
Packit 549fdc
//----------------------------------------
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = p12-info;
Packit 549fdc
    descrip   = "Print information on a PKCS #12 structure";
Packit 549fdc
    doc       = "This option will dump the contents and print the metadata of the provided PKCS #12 structure.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = p12-name;
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    descrip   = "The PKCS #12 friendly name to use";
Packit 549fdc
    doc = "The name to be used for the primary certificate and private key in a PKCS #12 file.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = to-p12;
Packit 549fdc
    descrip   = "Generate a PKCS #12 structure";
Packit 549fdc
    doc = "It requires a certificate, a private key and possibly a CA certificate to be specified.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
Packit 549fdc
//----------------------------------------
Packit 549fdc
flag = {
Packit 549fdc
    name = key_options;
Packit 549fdc
    documentation;
Packit 549fdc
    descrip = "Private key related options";
Packit 549fdc
};
Packit 549fdc
//----------------------------------------
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = key-info;
Packit 549fdc
    value     = k;
Packit 549fdc
    descrip   = "Print information on a private key";
Packit 549fdc
    doc = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = p8-info;
Packit 549fdc
    descrip   = "Print information on a PKCS #8 structure";
Packit 549fdc
    doc       = "This option will print information about encrypted PKCS #8 structures. That option does not require the decryption of the structure.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = to-rsa;
Packit 549fdc
    descrip   = "Convert an RSA-PSS key to raw RSA format";
Packit 549fdc
    doc = "It requires an RSA-PSS key as input and will output a raw RSA
Packit 549fdc
key. This command is necessary for compatibility with applications that
Packit 549fdc
cannot read RSA-PSS keys.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = generate-privkey;
Packit 549fdc
    value     = p;
Packit 549fdc
    descrip   = "Generate a private key";
Packit 549fdc
    doc = "When generating RSA-PSS private keys, the --hash option will
Packit 549fdc
restrict the allowed hash for the key; in the same keys the --salt-size
Packit 549fdc
option is also acceptable.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = bits;
Packit 549fdc
    arg-type  = number;
Packit 549fdc
    descrip   = "Specify the number of bits for key generation";
Packit 549fdc
    doc      = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = curve;
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    descrip   = "Specify the curve used for EC key generation";
Packit 549fdc
    doc      = "Supported values are secp192r1, secp224r1, secp256r1, secp384r1 and secp521r1.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = sec-param;
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    arg-name  = "Security parameter";
Packit 549fdc
    descrip   = "Specify the security level [low, legacy, medium, high, ultra]";
Packit 549fdc
    doc      = "This is alternative to the bits option.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = to-p8;
Packit 549fdc
    descrip   = "Convert a given key to a PKCS #8 structure";
Packit 549fdc
    doc = "This needs to be combined with --load-privkey.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = pkcs8;
Packit 549fdc
    value     = 8;
Packit 549fdc
    descrip   = "Use PKCS #8 format for private keys";
Packit 549fdc
    doc = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = provable;
Packit 549fdc
    descrip   = "Generate a private key or parameters from a seed using a provable method";
Packit 549fdc
    doc = "This will use the FIPS PUB186-4 algorithms (i.e., Shawe-Taylor) for provable key generation.
Packit 549fdc
When specified the private keys or parameters will be generated from a seed, and can be
Packit 549fdc
later validated with --verify-provable-privkey to be correctly generated from the seed. You may
Packit 549fdc
specify --seed or allow GnuTLS to generate one (recommended). This option can be combined with
Packit 549fdc
--generate-privkey or --generate-dh-params.
Packit 549fdc
Packit 549fdc
That option applies to RSA and DSA keys. On the DSA keys the PQG parameters
Packit 549fdc
are generated using the seed, and on RSA the two primes.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = verify-provable-privkey;
Packit 549fdc
    descrip   = "Verify a private key generated from a seed using a provable method";
Packit 549fdc
    doc = "This will use the FIPS-186-4 algorithms for provable key generation. You may specify --seed or use the seed stored in the private key structure.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = seed;
Packit 549fdc
    descrip   = "When generating a private key use the given hex-encoded seed";
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    doc = "The seed acts as a security parameter for the private key, and
Packit 549fdc
thus a seed size which corresponds to the security level of the private key
Packit 549fdc
should be provided (e.g., 256-bits seed).";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
Packit 549fdc
//----------------------------------------
Packit 549fdc
flag = {
Packit 549fdc
    name = crl_options;
Packit 549fdc
    documentation;
Packit 549fdc
    descrip = "CRL related options";
Packit 549fdc
};
Packit 549fdc
//----------------------------------------
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = crl-info;
Packit 549fdc
    value     = l;
Packit 549fdc
    descrip   = "Print information on the given CRL structure";
Packit 549fdc
    doc       = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = generate-crl;
Packit 549fdc
    descrip   = "Generate a CRL";
Packit 549fdc
    doc = "This option generates a Certificate Revocation List. When combined with --load-crl it would use the loaded CRL as base for the generated (i.e., all revoked certificates in the base will be copied to the new CRL).";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = verify-crl;
Packit 549fdc
    descrip   = "Verify a Certificate Revocation List using a trusted list";
Packit 549fdc
    doc = "The trusted certificate list must be loaded with --load-ca-certificate.";
Packit 549fdc
    flags-must = load-ca-certificate;
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
//----------------------------------------
Packit 549fdc
flag = {
Packit 549fdc
    name = cert_verify_options;
Packit 549fdc
    documentation;
Packit 549fdc
    descrip = "Certificate verification related options";
Packit 549fdc
};
Packit 549fdc
//----------------------------------------
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = verify-chain;
Packit 549fdc
    value     = e;
Packit 549fdc
    descrip   = "Verify a PEM encoded certificate chain";
Packit 549fdc
    doc = "Verifies the validity of a certificate chain. That is, an ordered set of
Packit 549fdc
    certificates where each one is the issuer of the previous, and the first is
Packit 549fdc
    the end-certificate to be validated. In a proper chain the last certificate
Packit 549fdc
    is a self signed one. It can be combined with --verify-purpose or --verify-hostname.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = verify;
Packit 549fdc
    descrip   = "Verify a PEM encoded certificate (chain) against a trusted set";
Packit 549fdc
    doc = "The trusted certificate list can be loaded with --load-ca-certificate. If no
Packit 549fdc
certificate list is provided, then the system's trusted certificate list is used. Note that
Packit 549fdc
during verification multiple paths may be explored. On a successful verification
Packit 549fdc
the successful path will be the last one. It can be combined with --verify-purpose or --verify-hostname.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = verify-hostname;
Packit 549fdc
    descrip   = "Specify a hostname to be used for certificate chain verification";
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    doc = "This is to be combined with one of the verify certificate options.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = verify-email;
Packit 549fdc
    descrip   = "Specify a email to be used for certificate chain verification";
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    doc = "This is to be combined with one of the verify certificate options.";
Packit 549fdc
    flags-cant = verify-hostname;
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = verify-purpose;
Packit 549fdc
    descrip   = "Specify a purpose OID to be used for certificate chain verification";
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    doc = "This object identifier restricts the purpose of the certificates to be verified. Example purposes are 1.3.6.1.5.5.7.3.1 (TLS WWW), 1.3.6.1.5.5.7.3.4 (EMAIL) etc. Note that a CA certificate without a purpose set (extended key usage) is valid for any purpose.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = verify-allow-broken;
Packit 549fdc
    descrip   = "Allow broken algorithms, such as MD5 for verification";
Packit 549fdc
    doc = "This can be combined with --p7-verify, --verify or --verify-chain.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
//----------------------------------------
Packit 549fdc
flag = {
Packit 549fdc
    name = pkcs7_options;
Packit 549fdc
    documentation;
Packit 549fdc
    descrip = "PKCS#7 structure options";
Packit 549fdc
};
Packit 549fdc
//----------------------------------------
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = p7-generate;
Packit 549fdc
    descrip   = "Generate a PKCS #7 structure";
Packit 549fdc
    doc       = "This option generates a PKCS #7 certificate container structure. To add certificates in the structure use --load-certificate and --load-crl.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = p7-sign;
Packit 549fdc
    descrip   = "Signs using a PKCS #7 structure";
Packit 549fdc
    doc       = "This option generates a PKCS #7 structure containing a signature for the provided data from infile. The data are stored within the structure. The signer certificate has to be specified using --load-certificate and --load-privkey. The input to --load-certificate can be a list of certificates. In case of a list, the first certificate is used for signing and the other certificates are included in the structure.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = p7-detached-sign;
Packit 549fdc
    descrip   = "Signs using a detached PKCS #7 structure";
Packit 549fdc
    doc       = "This option generates a PKCS #7 structure containing a signature for the provided data from infile. The signer certificate has to be specified using --load-certificate and --load-privkey. The input to --load-certificate can be a list of certificates. In case of a list, the first certificate is used for signing and the other certificates are included in the structure.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = p7-include-cert;
Packit 549fdc
    disable   = "no";
Packit 549fdc
    enabled;
Packit 549fdc
    descrip   = "The signer's certificate will be included in the cert list.";
Packit 549fdc
    doc       = "This options works with --p7-sign or --p7-detached-sign and will include or exclude the signer's certificate into the generated signature.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = p7-time;
Packit 549fdc
    disable   = "no";
Packit 549fdc
    disabled;
Packit 549fdc
    descrip   = "Will include a timestamp in the PKCS #7 structure";
Packit 549fdc
    doc       = "This option will include a timestamp in the generated signature";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = p7-show-data;
Packit 549fdc
    disable   = "no";
Packit 549fdc
    disabled;
Packit 549fdc
    descrip   = "Will show the embedded data in the PKCS #7 structure";
Packit 549fdc
    doc       = "This option can be combined with --p7-verify or --p7-info and will display the embedded signed data in the PKCS #7 structure.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = p7-info;
Packit 549fdc
    descrip   = "Print information on a PKCS #7 structure";
Packit 549fdc
    doc       = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = p7-verify;
Packit 549fdc
    descrip   = "Verify the provided PKCS #7 structure";
Packit 549fdc
    doc       = "This option verifies the signed PKCS #7 structure. The certificate list to use for verification can be specified with --load-ca-certificate. When no certificate list is provided, then the system's certificate list is used. Alternatively a direct signer can be provided using --load-certificate. A key purpose can be enforced with the --verify-purpose option, and the --load-data option will utilize detached data.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = smime-to-p7;
Packit 549fdc
    descrip   = "Convert S/MIME to PKCS #7 structure";
Packit 549fdc
    doc       = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
Packit 549fdc
Packit 549fdc
//----------------------------------------
Packit 549fdc
flag = {
Packit 549fdc
    name = other_options;
Packit 549fdc
    documentation;
Packit 549fdc
    descrip = "Other options";
Packit 549fdc
};
Packit 549fdc
//----------------------------------------
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = generate-dh-params;
Packit 549fdc
    descrip   = "Generate PKCS #3 encoded Diffie-Hellman parameters";
Packit 549fdc
    doc = "The will generate random parameters to be used with
Packit 549fdc
Diffie-Hellman key exchange. The output parameters will be in PKCS #3
Packit 549fdc
format. Note that it is recommended to use the --get-dh-params option
Packit 549fdc
instead.";
Packit 549fdc
    deprecated;
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = get-dh-params;
Packit 549fdc
    descrip   = "List the included PKCS #3 encoded Diffie-Hellman parameters";
Packit 549fdc
    doc = "Returns stored DH parameters in GnuTLS. Those parameters returned
Packit 549fdc
are defined in RFC7919, and can be considered standard parameters for a TLS
Packit 549fdc
key exchange. This option is provided for old applications which require
Packit 549fdc
DH parameters to be specified; modern GnuTLS applications should not require
Packit 549fdc
them.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = dh-info;
Packit 549fdc
    descrip   = "Print information PKCS #3 encoded Diffie-Hellman parameters";
Packit 549fdc
    doc = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = load-privkey;
Packit 549fdc
    descrip   = "Loads a private key file";
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    doc = "This can be either a file or a PKCS #11 URL";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = load-pubkey;
Packit 549fdc
    descrip   = "Loads a public key file";
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    doc = "This can be either a file or a PKCS #11 URL";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = load-request;
Packit 549fdc
    descrip   = "Loads a certificate request file";
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    doc = "This option can be used with a file";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = load-certificate;
Packit 549fdc
    descrip   = "Loads a certificate file";
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    doc = "This option can be used with a file";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = load-ca-privkey;
Packit 549fdc
    descrip   = "Loads the certificate authority's private key file";
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    doc = "This can be either a file or a PKCS #11 URL";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = load-ca-certificate;
Packit 549fdc
    descrip   = "Loads the certificate authority's certificate file";
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    doc = "This can be either a file or a PKCS #11 URL";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = load-crl;
Packit 549fdc
    descrip   = "Loads the provided CRL";
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    doc = "This option can be used with a file";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = load-data;
Packit 549fdc
    descrip   = "Loads auxiliary data";
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    doc = "This option can be used with a file";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = password;
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    descrip   = "Password to use";
Packit 549fdc
    doc   = "You can use this option to specify the password in the command line instead of reading it from the tty. Note, that the command line arguments are available for view in others in the system. Specifying password as '' is the same as specifying no password.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = null-password;
Packit 549fdc
    descrip   = "Enforce a NULL password";
Packit 549fdc
    doc   = "This option enforces a NULL password. This is different than the empty or no password in schemas like PKCS #8.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = empty-password;
Packit 549fdc
    descrip   = "Enforce an empty password";
Packit 549fdc
    doc   = "This option enforces an empty password. This is different than the NULL or no password in schemas like PKCS #8.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = hex-numbers;
Packit 549fdc
    descrip   = "Print big number in an easier format to parse";
Packit 549fdc
    doc   = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = cprint;
Packit 549fdc
    descrip   = "In certain operations it prints the information in C-friendly format";
Packit 549fdc
    doc   = "In certain operations it prints the information in C-friendly format, suitable for including into C programs.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = rsa;
Packit 549fdc
    descrip   = "Generate RSA key";
Packit 549fdc
    doc = "When combined with --generate-privkey generates an RSA private key.";
Packit 549fdc
    description = "This option is equivalent to '--key-type rsa'.";
Packit 549fdc
    deprecated;
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = dsa;
Packit 549fdc
    descrip   = "Generate DSA key";
Packit 549fdc
    doc = "When combined with --generate-privkey generates a DSA private key.";
Packit 549fdc
    description = "This option is equivalent to '--key-type dsa'.";
Packit 549fdc
    deprecated;
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = ecc;
Packit 549fdc
    descrip   = "Generate ECC (ECDSA) key";
Packit 549fdc
    doc = "When combined with --generate-privkey generates an elliptic curve private key to be used with ECDSA.";
Packit 549fdc
    description = "This option is equivalent to '--key-type ecdsa'.";
Packit 549fdc
    deprecated;
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = ecdsa;
Packit 549fdc
    aliases   = ecc;
Packit 549fdc
    deprecated;
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = key-type;
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    descrip   = "Specify the key type to use on key generation";
Packit 549fdc
    doc = "This option can be combined with --generate-privkey, to specify
Packit 549fdc
    the key type to be generated. Valid options are, 'rsa', 'rsa-pss',
Packit 549fdc
'dsa', 'ecdsa', and 'ed25519'.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = hash;
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    descrip   = "Hash algorithm to use for signing";
Packit 549fdc
    doc = "Available hash functions are SHA1, RMD160, SHA256, SHA384, SHA512, SHA3-224, SHA3-256, SHA3-384, SHA3-512.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = salt-size;
Packit 549fdc
    arg-type  = number;
Packit 549fdc
    descrip   = "Specify the RSA-PSS key default salt size";
Packit 549fdc
    doc = "Typical keys shouldn't set or restrict this option.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = inder;
Packit 549fdc
    descrip   = "Use DER format for input certificates, private keys, and DH parameters ";
Packit 549fdc
    disabled;
Packit 549fdc
    disable   = "no";
Packit 549fdc
    doc       = "The input files will be assumed to be in DER or RAW format. 
Packit 549fdc
Unlike options that in PEM input would allow multiple input data (e.g. multiple 
Packit 549fdc
certificates), when reading in DER format a single data structure is read.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = inraw;
Packit 549fdc
    aliases   = inder;
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = outder;
Packit 549fdc
    descrip   = "Use DER format for output certificates, private keys, and DH parameters";
Packit 549fdc
    disabled;
Packit 549fdc
    disable   = "no";
Packit 549fdc
    doc       = "The output will be in DER or RAW format.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = outraw;
Packit 549fdc
    aliases   = outder;
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = disable-quick-random;
Packit 549fdc
    descrip   = "No effect";
Packit 549fdc
    doc      = "";
Packit 549fdc
    deprecated;
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = template;
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    descrip   = "Template file to use for non-interactive operation";
Packit 549fdc
    doc   = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = stdout-info;
Packit 549fdc
    descrip   = "Print information to stdout instead of stderr";
Packit 549fdc
    doc = "";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = ask-pass;
Packit 549fdc
    disabled;
Packit 549fdc
    descrip   = "Enable interaction for entering password when in batch mode.";
Packit 549fdc
    doc   = "This option will enable interaction to enter password when in batch mode. That is useful when the template option has been specified.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = pkcs-cipher;
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    arg-name  = "Cipher";
Packit 549fdc
    descrip   = "Cipher to use for PKCS #8 and #12 operations";
Packit 549fdc
    doc   = "Cipher may be one of 3des, 3des-pkcs12, aes-128, aes-192, aes-256, rc2-40, arcfour.";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
flag = {
Packit 549fdc
    name      = provider;
Packit 549fdc
    arg-type  = string;
Packit 549fdc
    descrip   = "Specify the PKCS #11 provider library";
Packit 549fdc
    doc      = "This will override the default options in /etc/gnutls/pkcs11.conf";
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
doc-section = {
Packit 549fdc
  ds-type = 'SEE ALSO';
Packit 549fdc
  ds-format = 'texi';
Packit 549fdc
  ds-text   = <<-_EOT_
Packit 549fdc
    p11tool (1)
Packit 549fdc
_EOT_;
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
doc-section = {
Packit 549fdc
  ds-type = 'EXAMPLES';
Packit 549fdc
  ds-format = 'texi';
Packit 549fdc
  ds-text   = <<-_EOT_
Packit 549fdc
@subheading Generating private keys
Packit 549fdc
To create an RSA private key, run:
Packit 549fdc
@example
Packit 549fdc
$ certtool --generate-privkey --outfile key.pem --rsa
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
To create a DSA or elliptic curves (ECDSA) private key use the
Packit 549fdc
above command combined with 'dsa' or 'ecc' options.
Packit 549fdc
Packit 549fdc
@subheading Generating certificate requests
Packit 549fdc
To create a certificate request (needed when the certificate is  issued  by
Packit 549fdc
another party), run:
Packit 549fdc
@example
Packit 549fdc
certtool --generate-request --load-privkey key.pem \
Packit 549fdc
   --outfile request.pem
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
If the private key is stored in a smart card you can generate
Packit 549fdc
a request by specifying the private key object URL.
Packit 549fdc
@example
Packit 549fdc
$ ./certtool --generate-request --load-privkey "pkcs11:..." \
Packit 549fdc
  --load-pubkey "pkcs11:..." --outfile request.pem
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
Packit 549fdc
@subheading Generating a self-signed certificate
Packit 549fdc
To create a self signed certificate, use the command:
Packit 549fdc
@example
Packit 549fdc
$ certtool --generate-privkey --outfile ca-key.pem
Packit 549fdc
$ certtool --generate-self-signed --load-privkey ca-key.pem \
Packit 549fdc
   --outfile ca-cert.pem
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
Note that a self-signed certificate usually belongs to a certificate
Packit 549fdc
authority, that signs other certificates.
Packit 549fdc
Packit 549fdc
@subheading Generating a certificate
Packit 549fdc
To generate a certificate using the previous request, use the command:
Packit 549fdc
@example
Packit 549fdc
$ certtool --generate-certificate --load-request request.pem \
Packit 549fdc
   --outfile cert.pem --load-ca-certificate ca-cert.pem \
Packit 549fdc
   --load-ca-privkey ca-key.pem
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
To generate a certificate using the private key only, use the command:
Packit 549fdc
@example
Packit 549fdc
$ certtool --generate-certificate --load-privkey key.pem \
Packit 549fdc
   --outfile cert.pem --load-ca-certificate ca-cert.pem \
Packit 549fdc
   --load-ca-privkey ca-key.pem
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
@subheading Certificate information
Packit 549fdc
To view the certificate information, use:
Packit 549fdc
@example
Packit 549fdc
$ certtool --certificate-info --infile cert.pem
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
@subheading PKCS #12 structure generation
Packit 549fdc
To generate a PKCS #12 structure using the previous key and certificate,
Packit 549fdc
use the command:
Packit 549fdc
@example
Packit 549fdc
$ certtool --load-certificate cert.pem --load-privkey key.pem \
Packit 549fdc
   --to-p12 --outder --outfile key.p12
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
Some tools (reportedly web browsers) have problems with that file
Packit 549fdc
because it does not contain the CA certificate for the certificate.
Packit 549fdc
To work around that problem in the tool, you can use the
Packit 549fdc
--load-ca-certificate parameter as follows:
Packit 549fdc
Packit 549fdc
@example
Packit 549fdc
$ certtool --load-ca-certificate ca.pem \
Packit 549fdc
  --load-certificate cert.pem --load-privkey key.pem \
Packit 549fdc
  --to-p12 --outder --outfile key.p12
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
@subheading Obtaining Diffie-Hellman parameters
Packit 549fdc
To obtain the RFC7919 parameters for Diffie-Hellman key exchange, use the command:
Packit 549fdc
@example
Packit 549fdc
$ certtool --get-dh-params --outfile dh.pem --sec-param medium
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
@subheading Verifying a certificate
Packit 549fdc
To verify a certificate in a file against the system's CA trust store
Packit 549fdc
use the following command:
Packit 549fdc
@example
Packit 549fdc
$ certtool --verify --infile cert.pem
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
It is also possible to simulate hostname verification with the following
Packit 549fdc
options:
Packit 549fdc
@example
Packit 549fdc
$ certtool --verify --verify-hostname www.example.com --infile cert.pem
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
Packit 549fdc
@subheading Proxy certificate generation
Packit 549fdc
Proxy certificate can be used to delegate your credential to a
Packit 549fdc
temporary, typically short-lived, certificate.  To create one from the
Packit 549fdc
previously created certificate, first create a temporary key and then
Packit 549fdc
generate a proxy certificate for it, using the commands:
Packit 549fdc
Packit 549fdc
@example
Packit 549fdc
$ certtool --generate-privkey > proxy-key.pem
Packit 549fdc
$ certtool --generate-proxy --load-ca-privkey key.pem \
Packit 549fdc
  --load-privkey proxy-key.pem --load-certificate cert.pem \
Packit 549fdc
  --outfile proxy-cert.pem
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
@subheading Certificate revocation list generation
Packit 549fdc
To create an empty Certificate Revocation List (CRL) do:
Packit 549fdc
Packit 549fdc
@example
Packit 549fdc
$ certtool --generate-crl --load-ca-privkey x509-ca-key.pem \
Packit 549fdc
           --load-ca-certificate x509-ca.pem
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
To create a CRL that contains some revoked certificates, place the
Packit 549fdc
certificates in a file and use @code{--load-certificate} as follows:
Packit 549fdc
Packit 549fdc
@example
Packit 549fdc
$ certtool --generate-crl --load-ca-privkey x509-ca-key.pem \
Packit 549fdc
  --load-ca-certificate x509-ca.pem --load-certificate revoked-certs.pem
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
To verify a Certificate Revocation List (CRL) do:
Packit 549fdc
Packit 549fdc
@example
Packit 549fdc
$ certtool --verify-crl --load-ca-certificate x509-ca.pem < crl.pem
Packit 549fdc
@end example
Packit 549fdc
_EOT_;
Packit 549fdc
};
Packit 549fdc
Packit 549fdc
Packit 549fdc
doc-section = {
Packit 549fdc
  ds-type = 'FILES';
Packit 549fdc
  ds-format = 'texi';
Packit 549fdc
  ds-text   = <<-_EOT_
Packit 549fdc
@subheading Certtool's template file format
Packit 549fdc
A template file can be used to avoid the interactive questions of
Packit 549fdc
certtool. Initially create a file named 'cert.cfg' that contains the information
Packit 549fdc
about the certificate. The template can be used as below:
Packit 549fdc
Packit 549fdc
@example
Packit 549fdc
$ certtool --generate-certificate --load-privkey key.pem  \
Packit 549fdc
   --template cert.cfg --outfile cert.pem \
Packit 549fdc
   --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
An example certtool template file that can be used to generate a certificate
Packit 549fdc
request or a self signed certificate follows.
Packit 549fdc
Packit 549fdc
@example
Packit 549fdc
# X.509 Certificate options
Packit 549fdc
#
Packit 549fdc
# DN options
Packit 549fdc
Packit 549fdc
# The organization of the subject.
Packit 549fdc
organization = "Koko inc."
Packit 549fdc
Packit 549fdc
# The organizational unit of the subject.
Packit 549fdc
unit = "sleeping dept."
Packit 549fdc
Packit 549fdc
# The locality of the subject.
Packit 549fdc
# locality =
Packit 549fdc
Packit 549fdc
# The state of the certificate owner.
Packit 549fdc
state = "Attiki"
Packit 549fdc
Packit 549fdc
# The country of the subject. Two letter code.
Packit 549fdc
country = GR
Packit 549fdc
Packit 549fdc
# The common name of the certificate owner.
Packit 549fdc
cn = "Cindy Lauper"
Packit 549fdc
Packit 549fdc
# A user id of the certificate owner.
Packit 549fdc
#uid = "clauper"
Packit 549fdc
Packit 549fdc
# Set domain components
Packit 549fdc
#dc = "name"
Packit 549fdc
#dc = "domain"
Packit 549fdc
Packit 549fdc
# If the supported DN OIDs are not adequate you can set
Packit 549fdc
# any OID here.
Packit 549fdc
# For example set the X.520 Title and the X.520 Pseudonym
Packit 549fdc
# by using OID and string pairs.
Packit 549fdc
#dn_oid = "2.5.4.12 Dr."
Packit 549fdc
#dn_oid = "2.5.4.65 jackal"
Packit 549fdc
Packit 549fdc
# This is deprecated and should not be used in new
Packit 549fdc
# certificates.
Packit 549fdc
# pkcs9_email = "none@@none.org"
Packit 549fdc
Packit 549fdc
# An alternative way to set the certificate's distinguished name directly
Packit 549fdc
# is with the "dn" option. The attribute names allowed are:
Packit 549fdc
# C (country), street, O (organization), OU (unit), title, CN (common name),
Packit 549fdc
# L (locality), ST (state), placeOfBirth, gender, countryOfCitizenship, 
Packit 549fdc
# countryOfResidence, serialNumber, telephoneNumber, surName, initials, 
Packit 549fdc
# generationQualifier, givenName, pseudonym, dnQualifier, postalCode, name, 
Packit 549fdc
# businessCategory, DC, UID, jurisdictionOfIncorporationLocalityName, 
Packit 549fdc
# jurisdictionOfIncorporationStateOrProvinceName,
Packit 549fdc
# jurisdictionOfIncorporationCountryName, XmppAddr, and numeric OIDs.
Packit 549fdc
Packit 549fdc
#dn = "cn = Nikos,st = New\, Something,C=GR,surName=Mavrogiannopoulos,2.5.4.9=Arkadias"
Packit 549fdc
Packit 549fdc
# The serial number of the certificate
Packit 549fdc
# Comment the field for a time-based serial number.
Packit 549fdc
serial = 007
Packit 549fdc
Packit 549fdc
# In how many days, counting from today, this certificate will expire.
Packit 549fdc
# Use -1 if there is no expiration date.
Packit 549fdc
expiration_days = 700
Packit 549fdc
Packit 549fdc
# Alternatively you may set concrete dates and time. The GNU date string 
Packit 549fdc
# formats are accepted. See:
Packit 549fdc
# http://www.gnu.org/software/tar/manual/html_node/Date-input-formats.html
Packit 549fdc
Packit 549fdc
#activation_date = "2004-02-29 16:21:42"
Packit 549fdc
#expiration_date = "2025-02-29 16:24:41"
Packit 549fdc
Packit 549fdc
# X.509 v3 extensions
Packit 549fdc
Packit 549fdc
# A dnsname in case of a WWW server.
Packit 549fdc
#dns_name = "www.none.org"
Packit 549fdc
#dns_name = "www.morethanone.org"
Packit 549fdc
Packit 549fdc
# An othername defined by an OID and a hex encoded string
Packit 549fdc
#other_name = "1.3.6.1.5.2.2 302ca00d1b0b56414e5245494e2e4f5247a11b3019a006020400000002a10f300d1b047269636b1b0561646d696e"
Packit 549fdc
#other_name_utf8 = "1.2.4.5.6 A UTF8 string"
Packit 549fdc
#other_name_octet = "1.2.4.5.6 A string that will be encoded as ASN.1 octet string"
Packit 549fdc
Packit 549fdc
# Allows writing an XmppAddr Identifier
Packit 549fdc
#xmpp_name = juliet@@im.example.com
Packit 549fdc
Packit 549fdc
# Names used in PKINIT
Packit 549fdc
#krb5_principal = user@@REALM.COM
Packit 549fdc
#krb5_principal = HTTP/user@@REALM.COM
Packit 549fdc
Packit 549fdc
# A subject alternative name URI
Packit 549fdc
#uri = "http://www.example.com"
Packit 549fdc
Packit 549fdc
# An IP address in case of a server.
Packit 549fdc
#ip_address = "192.168.1.1"
Packit 549fdc
Packit 549fdc
# An email in case of a person
Packit 549fdc
email = "none@@none.org"
Packit 549fdc
Packit 549fdc
# TLS feature (rfc7633) extension. That can is used to indicate mandatory TLS
Packit 549fdc
# extension features to be provided by the server. In practice this is used
Packit 549fdc
# to require the Status Request (extid: 5) extension from the server. That is,
Packit 549fdc
# to require the server holding this certificate to provide a stapled OCSP response.
Packit 549fdc
# You can have multiple lines for multiple TLS features.
Packit 549fdc
Packit 549fdc
# To ask for OCSP status request use:
Packit 549fdc
#tls_feature = 5
Packit 549fdc
Packit 549fdc
# Challenge password used in certificate requests
Packit 549fdc
challenge_password = 123456
Packit 549fdc
Packit 549fdc
# Password when encrypting a private key
Packit 549fdc
#password = secret
Packit 549fdc
Packit 549fdc
# An URL that has CRLs (certificate revocation lists)
Packit 549fdc
# available. Needed in CA certificates.
Packit 549fdc
#crl_dist_points = "http://www.getcrl.crl/getcrl/"
Packit 549fdc
Packit 549fdc
# Whether this is a CA certificate or not
Packit 549fdc
#ca
Packit 549fdc
Packit 549fdc
# Subject Unique ID (in hex)
Packit 549fdc
#subject_unique_id = 00153224
Packit 549fdc
Packit 549fdc
# Issuer Unique ID (in hex)
Packit 549fdc
#issuer_unique_id = 00153225
Packit 549fdc
Packit 549fdc
#### Key usage
Packit 549fdc
Packit 549fdc
# The following key usage flags are used by CAs and end certificates
Packit 549fdc
Packit 549fdc
# Whether this certificate will be used to sign data (needed
Packit 549fdc
# in TLS DHE ciphersuites). This is the digitalSignature flag
Packit 549fdc
# in RFC5280 terminology.
Packit 549fdc
signing_key
Packit 549fdc
Packit 549fdc
# Whether this certificate will be used to encrypt data (needed
Packit 549fdc
# in TLS RSA ciphersuites). Note that it is preferred to use different
Packit 549fdc
# keys for encryption and signing. This is the keyEncipherment flag
Packit 549fdc
# in RFC5280 terminology.
Packit 549fdc
encryption_key
Packit 549fdc
Packit 549fdc
# Whether this key will be used to sign other certificates. The
Packit 549fdc
# keyCertSign flag in RFC5280 terminology.
Packit 549fdc
#cert_signing_key
Packit 549fdc
Packit 549fdc
# Whether this key will be used to sign CRLs. The
Packit 549fdc
# cRLSign flag in RFC5280 terminology.
Packit 549fdc
#crl_signing_key
Packit 549fdc
Packit 549fdc
# The keyAgreement flag of RFC5280. It's purpose is loosely
Packit 549fdc
# defined. Not use it unless required by a protocol.
Packit 549fdc
#key_agreement
Packit 549fdc
Packit 549fdc
# The dataEncipherment flag of RFC5280. It's purpose is loosely
Packit 549fdc
# defined. Not use it unless required by a protocol.
Packit 549fdc
#data_encipherment
Packit 549fdc
Packit 549fdc
# The nonRepudiation flag of RFC5280. It's purpose is loosely
Packit 549fdc
# defined. Not use it unless required by a protocol.
Packit 549fdc
#non_repudiation
Packit 549fdc
Packit 549fdc
#### Extended key usage (key purposes)
Packit 549fdc
Packit 549fdc
# The following extensions are used in an end certificate
Packit 549fdc
# to clarify its purpose. Some CAs also use it to indicate
Packit 549fdc
# the types of certificates they are purposed to sign.
Packit 549fdc
Packit 549fdc
Packit 549fdc
# Whether this certificate will be used for a TLS client;
Packit 549fdc
# this sets the id-kp-serverAuth (1.3.6.1.5.5.7.3.1) of 
Packit 549fdc
# extended key usage.
Packit 549fdc
#tls_www_client
Packit 549fdc
Packit 549fdc
# Whether this certificate will be used for a TLS server;
Packit 549fdc
# This sets the id-kp-clientAuth (1.3.6.1.5.5.7.3.2) of 
Packit 549fdc
# extended key usage.
Packit 549fdc
#tls_www_server
Packit 549fdc
Packit 549fdc
# Whether this key will be used to sign code. This sets the
Packit 549fdc
# id-kp-codeSigning (1.3.6.1.5.5.7.3.3) of extended key usage
Packit 549fdc
# extension.
Packit 549fdc
#code_signing_key
Packit 549fdc
Packit 549fdc
# Whether this key will be used to sign OCSP data. This sets the
Packit 549fdc
# id-kp-OCSPSigning (1.3.6.1.5.5.7.3.9) of extended key usage extension.
Packit 549fdc
#ocsp_signing_key
Packit 549fdc
Packit 549fdc
# Whether this key will be used for time stamping. This sets the
Packit 549fdc
# id-kp-timeStamping (1.3.6.1.5.5.7.3.8) of extended key usage extension.
Packit 549fdc
#time_stamping_key
Packit 549fdc
Packit 549fdc
# Whether this key will be used for email protection. This sets the
Packit 549fdc
# id-kp-emailProtection (1.3.6.1.5.5.7.3.4) of extended key usage extension.
Packit 549fdc
#email_protection_key
Packit 549fdc
Packit 549fdc
# Whether this key will be used for IPsec IKE operations (1.3.6.1.5.5.7.3.17).
Packit 549fdc
#ipsec_ike_key
Packit 549fdc
Packit 549fdc
## adding custom key purpose OIDs
Packit 549fdc
Packit 549fdc
# for microsoft smart card logon
Packit 549fdc
# key_purpose_oid = 1.3.6.1.4.1.311.20.2.2
Packit 549fdc
Packit 549fdc
# for email protection
Packit 549fdc
# key_purpose_oid = 1.3.6.1.5.5.7.3.4
Packit 549fdc
Packit 549fdc
# for any purpose (must not be used in intermediate CA certificates)
Packit 549fdc
# key_purpose_oid = 2.5.29.37.0
Packit 549fdc
Packit 549fdc
### end of key purpose OIDs
Packit 549fdc
Packit 549fdc
### Adding arbitrary extensions
Packit 549fdc
# This requires to provide the extension OIDs, as well as the extension data in
Packit 549fdc
# hex format. The following two options are available since GnuTLS 3.5.3.
Packit 549fdc
#add_extension = "1.2.3.4 0x0AAB01ACFE"
Packit 549fdc
Packit 549fdc
# As above but encode the data as an octet string
Packit 549fdc
#add_extension = "1.2.3.4 octet_string(0x0AAB01ACFE)"
Packit 549fdc
Packit 549fdc
# For portability critical extensions shouldn't be set to certificates.
Packit 549fdc
#add_critical_extension = "5.6.7.8 0x1AAB01ACFE"
Packit 549fdc
Packit 549fdc
# When generating a certificate from a certificate
Packit 549fdc
# request, then honor the extensions stored in the request
Packit 549fdc
# and store them in the real certificate.
Packit 549fdc
#honor_crq_extensions
Packit 549fdc
Packit 549fdc
# Alternatively only specific extensions can be copied.
Packit 549fdc
#honor_crq_ext = 2.5.29.17
Packit 549fdc
#honor_crq_ext = 2.5.29.15
Packit 549fdc
Packit 549fdc
# Path length contraint. Sets the maximum number of
Packit 549fdc
# certificates that can be used to certify this certificate.
Packit 549fdc
# (i.e. the certificate chain length)
Packit 549fdc
#path_len = -1
Packit 549fdc
#path_len = 2
Packit 549fdc
Packit 549fdc
# OCSP URI
Packit 549fdc
# ocsp_uri = http://my.ocsp.server/ocsp
Packit 549fdc
Packit 549fdc
# CA issuers URI
Packit 549fdc
# ca_issuers_uri = http://my.ca.issuer
Packit 549fdc
Packit 549fdc
# Certificate policies
Packit 549fdc
#policy1 = 1.3.6.1.4.1.5484.1.10.99.1.0
Packit 549fdc
#policy1_txt = "This is a long policy to summarize"
Packit 549fdc
#policy1_url = http://www.example.com/a-policy-to-read
Packit 549fdc
Packit 549fdc
#policy2 = 1.3.6.1.4.1.5484.1.10.99.1.1
Packit 549fdc
#policy2_txt = "This is a short policy"
Packit 549fdc
#policy2_url = http://www.example.com/another-policy-to-read
Packit 549fdc
Packit 549fdc
# The number of additional certificates that may appear in a
Packit 549fdc
# path before the anyPolicy is no longer acceptable.
Packit 549fdc
#inhibit_anypolicy_skip_certs 1
Packit 549fdc
Packit 549fdc
# Name constraints
Packit 549fdc
Packit 549fdc
# DNS
Packit 549fdc
#nc_permit_dns = example.com
Packit 549fdc
#nc_exclude_dns = test.example.com
Packit 549fdc
Packit 549fdc
# EMAIL
Packit 549fdc
#nc_permit_email = "nmav@@ex.net"
Packit 549fdc
Packit 549fdc
# Exclude subdomains of example.com
Packit 549fdc
#nc_exclude_email = .example.com
Packit 549fdc
Packit 549fdc
# Exclude all e-mail addresses of example.com
Packit 549fdc
#nc_exclude_email = example.com
Packit 549fdc
Packit 549fdc
# IP
Packit 549fdc
#nc_permit_ip = 192.168.0.0/16
Packit 549fdc
#nc_exclude_ip = 192.168.5.0/24
Packit 549fdc
#nc_permit_ip = fc0a:eef2:e7e7:a56e::/64
Packit 549fdc
Packit 549fdc
Packit 549fdc
# Options for proxy certificates
Packit 549fdc
#proxy_policy_language = 1.3.6.1.5.5.7.21.1
Packit 549fdc
Packit 549fdc
Packit 549fdc
# Options for generating a CRL
Packit 549fdc
Packit 549fdc
# The number of days the next CRL update will be due.
Packit 549fdc
# next CRL update will be in 43 days
Packit 549fdc
#crl_next_update = 43
Packit 549fdc
Packit 549fdc
# this is the 5th CRL by this CA
Packit 549fdc
# Comment the field for a time-based number.
Packit 549fdc
#crl_number = 5
Packit 549fdc
Packit 549fdc
# Specify the update dates more precisely.
Packit 549fdc
#crl_this_update_date = "2004-02-29 16:21:42"
Packit 549fdc
#crl_next_update_date = "2025-02-29 16:24:41"
Packit 549fdc
Packit 549fdc
# The date that the certificates will be made seen as
Packit 549fdc
# being revoked.
Packit 549fdc
#crl_revocation_date = "2025-02-29 16:24:41"
Packit 549fdc
Packit 549fdc
@end example
Packit 549fdc
Packit 549fdc
_EOT_;
Packit 549fdc
};
Packit 549fdc