=pod

=head1 NAME

verify - Utility to verify certificates

=head1 SYNOPSIS

B<openssl> B<verify>
[B<-help>]
[B<-CAfile file>]
[B<-CApath directory>]
[B<-no-CAfile>]
[B<-no-CApath>]
[B<-allow_proxy_certs>]
[B<-attime timestamp>]
[B<-check_ss_sig>]
[B<-CRLfile file>]
[B<-crl_download>]
[B<-crl_check>]
[B<-crl_check_all>]
[B<-engine id>]
[B<-explicit_policy>]
[B<-extended_crl>]
[B<-ignore_critical>]
[B<-inhibit_any>]
[B<-inhibit_map>]
[B<-no_check_time>]
[B<-partial_chain>]
[B<-policy arg>]
[B<-policy_check>]
[B<-policy_print>]
[B<-purpose purpose>]
[B<-suiteB_128>]
[B<-suiteB_128_only>]
[B<-suiteB_192>]
[B<-trusted_first>]
[B<-no_alt_chains>]
[B<-untrusted file>]
[B<-trusted file>]
[B<-use_deltas>]
[B<-verbose>]
[B<-auth_level level>]
[B<-verify_depth num>]
[B<-verify_email email>]
[B<-verify_hostname hostname>]
[B<-verify_ip ip>]
[B<-verify_name name>]
[B<-x509_strict>]
[B<-show_chain>]
[B<->]
[certificates]

=head1 DESCRIPTION

The B<verify> command verifies certificate chains.

=head1 OPTIONS

=over 4

=item B<-help>

Print out a usage message.

=item B<-CAfile file>

A B<file> of trusted certificates.
The file should contain one or more certificates in PEM format.

=item B<-CApath directory>

A directory of trusted certificates. The certificates should have names
of the form: hash.0 or have symbolic links to them of this
form ("hash" is the hashed certificate subject name: see the B<-hash> option
of the B<x509> utility). Under Unix the B<c_rehash> script will automatically
create symbolic links to a directory of certificates.

=item B<-no-CAfile>

Do not load the trusted CA certificates from the default file location

=item B<-no-CApath>

Do not load the trusted CA certificates from the default directory location

=item B<-allow_proxy_certs>

Allow the verification of proxy certificates

=item B<-attime timestamp>

Perform validation checks using time specified by B<timestamp> and not
current system time. B<timestamp> is the number of seconds since
01.01.1970 (UNIX time).

=item B<-check_ss_sig>

Verify the signature on the self-signed root CA. This is disabled by default
because it doesn't add any security.

=item B<-CRLfile file>

The B<file> should contain one or more CRLs in PEM format.
This option can be specified more than once to include CRLs from multiple
B<files>.

=item B<-crl_download>

Attempt to download CRL information for this certificate.

=item B<-crl_check>

Checks end entity certificate validity by attempting to look up a valid CRL.
If a valid CRL cannot be found an error occurs.

=item B<-crl_check_all>

Checks the validity of B<all> certificates in the chain by attempting
to look up valid CRLs.

=item B<-engine id>

Specifying an engine B<id> will cause L<verify(1)> to attempt to load the
specified engine.
The engine will then be set as the default for all its supported algorithms.
If you want to load certificates or CRLs that require engine support via any of
the B<-trusted>, B<-untrusted> or B<-CRLfile> options, the B<-engine> option
must be specified before those options.

=item B<-explicit_policy>

Set policy variable require-explicit-policy (see RFC5280).

=item B<-extended_crl>

Enable extended CRL features such as indirect CRLs and alternate CRL
signing keys.

=item B<-ignore_critical>

Normally if an unhandled critical extension is present which is not
supported by OpenSSL the certificate is rejected (as required by RFC5280).
If this option is set critical extensions are ignored.

=item B<-inhibit_any>

Set policy variable inhibit-any-policy (see RFC5280).

=item B<-inhibit_map>

Set policy variable inhibit-policy-mapping (see RFC5280).

=item B<-no_check_time>

This option suppresses checking the validity period of certificates and CRLs
against the current time. If option B<-attime timestamp> is used to specify
a verification time, the check is not suppressed.

=item B<-partial_chain>

Allow verification to succeed even if a I<complete> chain cannot be built to a
self-signed trust-anchor, provided it is possible to construct a chain to a
trusted certificate that might not be self-signed.

=item B<-policy arg>

Enable policy processing and add B<arg> to the user-initial-policy-set (see
RFC5280). The policy B<arg> can be an object name an OID in numeric form.
This argument can appear more than once.

=item B<-policy_check>

Enables certificate policy processing.

=item B<-policy_print>

Print out diagnostics related to policy processing.

=item B<-purpose purpose>

The intended use for the certificate. If this option is not specified,
B<verify> will not consider certificate purpose during chain verification.
Currently accepted uses are B<sslclient>, B<sslserver>, B<nssslserver>,
B<smimesign>, B<smimeencrypt>. See the B<VERIFY OPERATION> section for more
information.

=item B<-suiteB_128_only>, B<-suiteB_128>, B<-suiteB_192>

enable the Suite B mode operation at 128 bit Level of Security, 128 bit or
192 bit, or only 192 bit Level of Security respectively.
See RFC6460 for details. In particular the supported signature algorithms are
reduced to support only ECDSA and SHA256 or SHA384 and only the elliptic curves
P-256 and P-384.

=item B<-trusted_first>

When constructing the certificate chain, use the trusted certificates specified
via B<-CAfile>, B<-CApath> or B<-trusted> before any certificates specified via
B<-untrusted>.
This can be useful in environments with Bridge or Cross-Certified CAs.
As of OpenSSL 1.1.0 this option is on by default and cannot be disabled.

=item B<-no_alt_chains>

By default, unless B<-trusted_first> is specified, when building a certificate
chain, if the first certificate chain found is not trusted, then OpenSSL will
attempt to replace untrusted issuer certificates with certificates from the
trust store to see if an alternative chain can be found that is trusted.
As of OpenSSL 1.1.0, with B<-trusted_first> always on, this option has no
effect.

=item B<-untrusted file>

A B<file> of additional untrusted certificates (intermediate issuer CAs) used
to construct a certificate chain from the subject certificate to a trust-anchor.
The B<file> should contain one or more certificates in PEM format.
This option can be specified more than once to include untrusted certificates
from multiple B<files>.

=item B<-trusted file>

A B<file> of trusted certificates, which must be self-signed, unless the
B<-partial_chain> option is specified.
The B<file> contains one or more certificates in PEM format.
With this option, no additional (e.g., default) certificate lists are
consulted.
That is, the only trust-anchors are those listed in B<file>.
This option can be specified more than once to include trusted certificates
from multiple B<files>.
This option implies the B<-no-CAfile> and B<-no-CApath> options.
This option cannot be used in combination with either of the B<-CAfile> or
B<-CApath> options.

=item B<-use_deltas>

Enable support for delta CRLs.

=item B<-verbose>

Print extra information about the operations being performed.

=item B<-auth_level level>

Set the certificate chain authentication security level to B<level>.
The authentication security level determines the acceptable signature and
public key strength when verifying certificate chains.
For a certificate chain to validate, the public keys of all the certificates
must meet the specified security B<level>.
The signature algorithm security level is enforced for all the certificates in
the chain except for the chain's I<trust anchor>, which is either directly
trusted or validated by means other than its signature.
See L<SSL_CTX_set_security_level(3)> for the definitions of the available
levels.
The default security level is -1, or "not set".
At security level 0 or lower all algorithms are acceptable.
Security level 1 requires at least 80-bit-equivalent security and is broadly
interoperable, though it will, for example, reject MD5 signatures or RSA keys
shorter than 1024 bits.

=item B<-verify_depth num>

Limit the certificate chain to B<num> intermediate CA certificates.
A maximal depth chain can have up to B<num+2> certificates, since neither the
end-entity certificate nor the trust-anchor certificate count against the
B<-verify_depth> limit.

=item B<-verify_email email>

Verify if the B<email> matches the email address in Subject Alternative Name or
the email in the subject Distinguished Name.

=item B<-verify_hostname hostname>

Verify if the B<hostname> matches DNS name in Subject Alternative Name or
Common Name in the subject certificate.

=item B<-verify_ip ip>

Verify if the B<ip> matches the IP address in Subject Alternative Name of
the subject certificate.

=item B<-verify_name name>

Use default verification policies like trust model and required certificate
policies identified by B<name>.
The trust model determines which auxiliary trust or reject OIDs are applicable
to verifying the given certificate chain.
See the B<-addtrust> and B<-addreject> options of the L<x509(1)> command-line
utility.
Supported policy names include: B<default>, B<pkcs7>, B<smime_sign>,
B<ssl_client>, B<ssl_server>.
These mimics the combinations of purpose and trust settings used in SSL, CMS
and S/MIME.
As of OpenSSL 1.1.0, the trust model is inferred from the purpose when not
specified, so the B<-verify_name> options are functionally equivalent to the
corresponding B<-purpose> settings.

=item B<-x509_strict>

For strict X.509 compliance, disable non-compliant workarounds for broken
certificates.

=item B<-show_chain>

Display information about the certificate chain that has been built (if
successful). Certificates in the chain that came from the untrusted list will be
flagged as "untrusted".

=item B<->

Indicates the last option. All arguments following this are assumed to be
certificate files. This is useful if the first certificate filename begins
with a B<->.

=item B<certificates>

One or more certificates to verify. If no certificates are given, B<verify>
will attempt to read a certificate from standard input. Certificates must be
in PEM format.

=back

=head1 VERIFY OPERATION

The B<verify> program uses the same functions as the internal SSL and S/MIME
verification, therefore this description applies to these verify operations
too.

There is one crucial difference between the verify operations performed
by the B<verify> program: wherever possible an attempt is made to continue
after an error whereas normally the verify operation would halt on the
first error. This allows all the problems with a certificate chain to be
determined.

The verify operation consists of a number of separate steps.

Firstly a certificate chain is built up starting from the supplied certificate
and ending in the root CA.
It is an error if the whole chain cannot be built up.
The chain is built up by looking up the issuers certificate of the current
certificate.
If a certificate is found which is its own issuer it is assumed to be the root
CA.

The process of 'looking up the issuers certificate' itself involves a number of
steps.
After all certificates whose subject name matches the issuer name of the current
certificate are subject to further tests.
The relevant authority key identifier components of the current certificate (if
present) must match the subject key identifier (if present) and issuer and
serial number of the candidate issuer, in addition the keyUsage extension of
the candidate issuer (if present) must permit certificate signing.

The lookup first looks in the list of untrusted certificates and if no match
is found the remaining lookups are from the trusted certificates. The root CA
is always looked up in the trusted certificate list: if the certificate to
verify is a root certificate then an exact match must be found in the trusted
list.

The second operation is to check every untrusted certificate's extensions for
consistency with the supplied purpose. If the B<-purpose> option is not included
then no checks are done. The supplied or "leaf" certificate must have extensions
compatible with the supplied purpose and all other certificates must also be valid
CA certificates. The precise extensions required are described in more detail in
the B<CERTIFICATE EXTENSIONS> section of the B<x509> utility.

The third operation is to check the trust settings on the root CA. The root CA
should be trusted for the supplied purpose.
For compatibility with previous versions of OpenSSL, a certificate with no
trust settings is considered to be valid for all purposes.

The final operation is to check the validity of the certificate chain. The validity
period is checked against the current system time and the notBefore and notAfter
dates in the certificate. The certificate signatures are also checked at this
point.

If all operations complete successfully then certificate is considered valid. If
any operation fails then the certificate is not valid.

=head1 DIAGNOSTICS

When a verify operation fails the output messages can be somewhat cryptic. The
general form of the error message is:

 server.pem: /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit)
 error 24 at 1 depth lookup:invalid CA certificate

The first line contains the name of the certificate being verified followed by
the subject name of the certificate. The second line contains the error number
and the depth. The depth is number of the certificate being verified when a
problem was detected starting with zero for the certificate being verified itself
then 1 for the CA that signed the certificate and so on. Finally a text version
of the error number is presented.

A partial list of the error codes and messages is shown below, this also
includes the name of the error code as defined in the header file x509_vfy.h
Some of the error codes are defined but never returned: these are described
as "unused".

=over 4

=item B<X509_V_OK>

The operation was successful.

=item B<X509_V_ERR_UNSPECIFIED>

Unspecified error; should not happen.

=item B<X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT>

The issuer certificate of a looked up certificate could not be found. This
normally means the list of trusted certificates is not complete.

=item B<X509_V_ERR_UNABLE_TO_GET_CRL>

The CRL of a certificate could not be found.

=item B<X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE>

The certificate signature could not be decrypted. This means that the actual signature value
could not be determined rather than it not matching the expected value, this is only
meaningful for RSA keys.

=item B<X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE>

The CRL signature could not be decrypted: this means that the actual signature value
could not be determined rather than it not matching the expected value. Unused.

=item B<X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY>

The public key in the certificate SubjectPublicKeyInfo could not be read.

=item B<X509_V_ERR_CERT_SIGNATURE_FAILURE>

The signature of the certificate is invalid.

=item B<X509_V_ERR_CRL_SIGNATURE_FAILURE>

The signature of the certificate is invalid.

=item B<X509_V_ERR_CERT_NOT_YET_VALID>

The certificate is not yet valid: the notBefore date is after the current time.

=item B<X509_V_ERR_CERT_HAS_EXPIRED>

The certificate has expired: that is the notAfter date is before the current time.

=item B<X509_V_ERR_CRL_NOT_YET_VALID>

The CRL is not yet valid.

=item B<X509_V_ERR_CRL_HAS_EXPIRED>

The CRL has expired.

=item B<X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD>

The certificate notBefore field contains an invalid time.

=item B<X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD>

The certificate notAfter field contains an invalid time.

=item B<X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD>

The CRL lastUpdate field contains an invalid time.

=item B<X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD>

The CRL nextUpdate field contains an invalid time.

=item B<X509_V_ERR_OUT_OF_MEM>

An error occurred trying to allocate memory. This should never happen.

=item B<X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT>

The passed certificate is self-signed and the same certificate cannot be found in the list of
trusted certificates.

=item B<X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN>

The certificate chain could be built up using the untrusted certificates but the root could not
be found locally.

=item B<X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY>

The issuer certificate could not be found: this occurs if the issuer
certificate of an untrusted certificate cannot be found.

=item B<X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE>

No signatures could be verified because the chain contains only one certificate and it is not
self signed.

=item B<X509_V_ERR_CERT_CHAIN_TOO_LONG>

The certificate chain length is greater than the supplied maximum depth. Unused.

=item B<X509_V_ERR_CERT_REVOKED>

The certificate has been revoked.

=item B<X509_V_ERR_INVALID_CA>

A CA certificate is invalid. Either it is not a CA or its extensions are not consistent
with the supplied purpose.

=item B<X509_V_ERR_PATH_LENGTH_EXCEEDED>

The basicConstraints pathlength parameter has been exceeded.

=item B<X509_V_ERR_INVALID_PURPOSE>

The supplied certificate cannot be used for the specified purpose.

=item B<X509_V_ERR_CERT_UNTRUSTED>

the root CA is not marked as trusted for the specified purpose.

=item B<X509_V_ERR_CERT_REJECTED>

The root CA is marked to reject the specified purpose.

=item B<X509_V_ERR_SUBJECT_ISSUER_MISMATCH>

not used as of OpenSSL 1.1.0 as a result of the deprecation of the
B<-issuer_checks> option.

=item B<X509_V_ERR_AKID_SKID_MISMATCH>

Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
B<-issuer_checks> option.

=item B<X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH>

Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
B<-issuer_checks> option.

=item B<X509_V_ERR_KEYUSAGE_NO_CERTSIGN>

Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
B<-issuer_checks> option.

=item B<X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER>

Unable to get CRL issuer certificate.

=item B<X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION>

Unhandled critical extension.

=item B<X509_V_ERR_KEYUSAGE_NO_CRL_SIGN>

Key usage does not include CRL signing.

=item B<X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION>

Unhandled critical CRL extension.

=item B<X509_V_ERR_INVALID_NON_CA>

Invalid non-CA certificate has CA markings.

=item B<X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED>

Proxy path length constraint exceeded.

=item B<X509_V_ERR_PROXY_SUBJECT_INVALID>

Proxy certificate subject is invalid.  It MUST be the same as the issuer
with a single CN component added.

=item B<X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE>

Key usage does not include digital signature.

=item B<X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED>

Proxy certificates not allowed, please use B<-allow_proxy_certs>.

=item B<X509_V_ERR_INVALID_EXTENSION>

Invalid or inconsistent certificate extension.

=item B<X509_V_ERR_INVALID_POLICY_EXTENSION>

Invalid or inconsistent certificate policy extension.

=item B<X509_V_ERR_NO_EXPLICIT_POLICY>

No explicit policy.

=item B<X509_V_ERR_DIFFERENT_CRL_SCOPE>

Different CRL scope.

=item B<X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE>

Unsupported extension feature.

=item B<X509_V_ERR_UNNESTED_RESOURCE>

RFC 3779 resource not subset of parent's resources.

=item B<X509_V_ERR_PERMITTED_VIOLATION>

Permitted subtree violation.

=item B<X509_V_ERR_EXCLUDED_VIOLATION>

Excluded subtree violation.

=item B<X509_V_ERR_SUBTREE_MINMAX>

Name constraints minimum and maximum not supported.

=item B<X509_V_ERR_APPLICATION_VERIFICATION>

Application verification failure. Unused.

=item B<X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE>

Unsupported name constraint type.

=item B<X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX>

Unsupported or invalid name constraint syntax.

=item B<X509_V_ERR_UNSUPPORTED_NAME_SYNTAX>

Unsupported or invalid name syntax.

=item B<X509_V_ERR_CRL_PATH_VALIDATION_ERROR>

CRL path validation error.

=item B<X509_V_ERR_PATH_LOOP>

Path loop.

=item B<X509_V_ERR_SUITE_B_INVALID_VERSION>

Suite B: certificate version invalid.

=item B<X509_V_ERR_SUITE_B_INVALID_ALGORITHM>

Suite B: invalid public key algorithm.

=item B<X509_V_ERR_SUITE_B_INVALID_CURVE>

Suite B: invalid ECC curve.

=item B<X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM>

Suite B: invalid signature algorithm.

=item B<X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED>

Suite B: curve not allowed for this LOS.

=item B<X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256>

Suite B: cannot sign P-384 with P-256.

=item B<X509_V_ERR_HOSTNAME_MISMATCH>

Hostname mismatch.

=item B<X509_V_ERR_EMAIL_MISMATCH>

Email address mismatch.

=item B<X509_V_ERR_IP_ADDRESS_MISMATCH>

IP address mismatch.

=item B<X509_V_ERR_DANE_NO_MATCH>

DANE TLSA authentication is enabled, but no TLSA records matched the
certificate chain.
This error is only possible in L<s_client(1)>.

=back

=head1 BUGS

Although the issuer checks are a considerable improvement over the old technique they still
suffer from limitations in the underlying X509_LOOKUP API. One consequence of this is that
trusted certificates with matching subject name must either appear in a file (as specified by the
B<-CAfile> option) or a directory (as specified by B<-CApath>). If they occur in both then only
the certificates in the file will be recognised.

Previous versions of OpenSSL assume certificates with matching subject name are identical and
mishandled them.

Previous versions of this documentation swapped the meaning of the
B<X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT> and
B<X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY> error codes.

=head1 SEE ALSO

L<x509(1)>

=head1 HISTORY

The B<-show_chain> option was first added to OpenSSL 1.1.0.

The B<-issuer_checks> option is deprecated as of OpenSSL 1.1.0 and
is silently ignored.

=head1 COPYRIGHT

Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (the "License").  You may not use
this file except in compliance with the License.  You can obtain a copy
in the file LICENSE in the source distribution or at
L<https://www.openssl.org/source/license.html>.

=cut
