850 lines
28 KiB
HTML
850 lines
28 KiB
HTML
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML><HEAD><TITLE>Man page of VERIFY</TITLE>
|
|
</HEAD><BODY>
|
|
<H1>VERIFY</H1>
|
|
Section: OpenSSL (1SSL)<BR>Updated: 2021-03-22<BR><A HREF="#index">Index</A>
|
|
<A HREF="/cgi-bin/man/man2html">Return to Main Contents</A><HR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<A NAME="lbAB"> </A>
|
|
<H2>NAME</H2>
|
|
|
|
openssl-verify, verify - Utility to verify certificates
|
|
<A NAME="lbAC"> </A>
|
|
<H2>SYNOPSIS</H2>
|
|
|
|
|
|
|
|
<B>openssl</B> <B>verify</B>
|
|
[<B>-help</B>]
|
|
[<B>-CAfile file</B>]
|
|
[<B>-CApath directory</B>]
|
|
[<B>-no-CAfile</B>]
|
|
[<B>-no-CApath</B>]
|
|
[<B>-allow_proxy_certs</B>]
|
|
[<B>-attime timestamp</B>]
|
|
[<B>-check_ss_sig</B>]
|
|
[<B>-CRLfile file</B>]
|
|
[<B>-crl_download</B>]
|
|
[<B>-crl_check</B>]
|
|
[<B>-crl_check_all</B>]
|
|
[<B>-engine id</B>]
|
|
[<B>-explicit_policy</B>]
|
|
[<B>-extended_crl</B>]
|
|
[<B>-ignore_critical</B>]
|
|
[<B>-inhibit_any</B>]
|
|
[<B>-inhibit_map</B>]
|
|
[<B>-nameopt option</B>]
|
|
[<B>-no_check_time</B>]
|
|
[<B>-partial_chain</B>]
|
|
[<B>-policy arg</B>]
|
|
[<B>-policy_check</B>]
|
|
[<B>-policy_print</B>]
|
|
[<B>-purpose purpose</B>]
|
|
[<B>-suiteB_128</B>]
|
|
[<B>-suiteB_128_only</B>]
|
|
[<B>-suiteB_192</B>]
|
|
[<B>-trusted_first</B>]
|
|
[<B>-no_alt_chains</B>]
|
|
[<B>-untrusted file</B>]
|
|
[<B>-trusted file</B>]
|
|
[<B>-use_deltas</B>]
|
|
[<B>-verbose</B>]
|
|
[<B>-auth_level level</B>]
|
|
[<B>-verify_depth num</B>]
|
|
[<B>-verify_email email</B>]
|
|
[<B>-verify_hostname hostname</B>]
|
|
[<B>-verify_ip ip</B>]
|
|
[<B>-verify_name name</B>]
|
|
[<B>-x509_strict</B>]
|
|
[<B>-show_chain</B>]
|
|
[<B>-</B>]
|
|
[certificates]
|
|
<A NAME="lbAD"> </A>
|
|
<H2>DESCRIPTION</H2>
|
|
|
|
|
|
|
|
The <B>verify</B> command verifies certificate chains.
|
|
<A NAME="lbAE"> </A>
|
|
<H2>OPTIONS</H2>
|
|
|
|
|
|
|
|
<DL COMPACT>
|
|
<DT id="1"><B>-help</B><DD>
|
|
|
|
|
|
Print out a usage message.
|
|
<DT id="2"><B>-CAfile file</B><DD>
|
|
|
|
|
|
A <B>file</B> of trusted certificates.
|
|
The file should contain one or more certificates in <FONT SIZE="-1">PEM</FONT> format.
|
|
<DT id="3"><B>-CApath directory</B><DD>
|
|
|
|
|
|
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</B> option
|
|
of the <B>x509</B> utility). Under Unix the <B>c_rehash</B> script will automatically
|
|
create symbolic links to a directory of certificates.
|
|
<DT id="4"><B>-no-CAfile</B><DD>
|
|
|
|
|
|
Do not load the trusted <FONT SIZE="-1">CA</FONT> certificates from the default file location.
|
|
<DT id="5"><B>-no-CApath</B><DD>
|
|
|
|
|
|
Do not load the trusted <FONT SIZE="-1">CA</FONT> certificates from the default directory location.
|
|
<DT id="6"><B>-allow_proxy_certs</B><DD>
|
|
|
|
|
|
Allow the verification of proxy certificates.
|
|
<DT id="7"><B>-attime timestamp</B><DD>
|
|
|
|
|
|
Perform validation checks using time specified by <B>timestamp</B> and not
|
|
current system time. <B>timestamp</B> is the number of seconds since
|
|
01.01.1970 (<FONT SIZE="-1">UNIX</FONT> time).
|
|
<DT id="8"><B>-check_ss_sig</B><DD>
|
|
|
|
|
|
Verify the signature on the self-signed root <FONT SIZE="-1">CA.</FONT> This is disabled by default
|
|
because it doesn't add any security.
|
|
<DT id="9"><B>-CRLfile file</B><DD>
|
|
|
|
|
|
The <B>file</B> should contain one or more CRLs in <FONT SIZE="-1">PEM</FONT> format.
|
|
This option can be specified more than once to include CRLs from multiple
|
|
<B>files</B>.
|
|
<DT id="10"><B>-crl_download</B><DD>
|
|
|
|
|
|
Attempt to download <FONT SIZE="-1">CRL</FONT> information for this certificate.
|
|
<DT id="11"><B>-crl_check</B><DD>
|
|
|
|
|
|
Checks end entity certificate validity by attempting to look up a valid <FONT SIZE="-1">CRL.</FONT>
|
|
If a valid <FONT SIZE="-1">CRL</FONT> cannot be found an error occurs.
|
|
<DT id="12"><B>-crl_check_all</B><DD>
|
|
|
|
|
|
Checks the validity of <B>all</B> certificates in the chain by attempting
|
|
to look up valid CRLs.
|
|
<DT id="13"><B>-engine id</B><DD>
|
|
|
|
|
|
Specifying an engine <B>id</B> will cause <B><A HREF="/cgi-bin/man/man2html?1+verify">verify</A></B>(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>, <B>-untrusted</B> or <B>-CRLfile</B> options, the <B>-engine</B> option
|
|
must be specified before those options.
|
|
<DT id="14"><B>-explicit_policy</B><DD>
|
|
|
|
|
|
Set policy variable require-explicit-policy (see <FONT SIZE="-1">RFC5280</FONT>).
|
|
<DT id="15"><B>-extended_crl</B><DD>
|
|
|
|
|
|
Enable extended <FONT SIZE="-1">CRL</FONT> features such as indirect CRLs and alternate <FONT SIZE="-1">CRL</FONT>
|
|
signing keys.
|
|
<DT id="16"><B>-ignore_critical</B><DD>
|
|
|
|
|
|
Normally if an unhandled critical extension is present which is not
|
|
supported by OpenSSL the certificate is rejected (as required by <FONT SIZE="-1">RFC5280</FONT>).
|
|
If this option is set critical extensions are ignored.
|
|
<DT id="17"><B>-inhibit_any</B><DD>
|
|
|
|
|
|
Set policy variable inhibit-any-policy (see <FONT SIZE="-1">RFC5280</FONT>).
|
|
<DT id="18"><B>-inhibit_map</B><DD>
|
|
|
|
|
|
Set policy variable inhibit-policy-mapping (see <FONT SIZE="-1">RFC5280</FONT>).
|
|
<DT id="19"><B>-nameopt option</B><DD>
|
|
|
|
|
|
Option which determines how the subject or issuer names are displayed. The
|
|
<B>option</B> argument can be a single option or multiple options separated by
|
|
commas. Alternatively the <B>-nameopt</B> switch may be used more than once to
|
|
set multiple options. See the <B><A HREF="/cgi-bin/man/man2html?1+x509">x509</A></B>(1) manual page for details.
|
|
<DT id="20"><B>-no_check_time</B><DD>
|
|
|
|
|
|
This option suppresses checking the validity period of certificates and CRLs
|
|
against the current time. If option <B>-attime timestamp</B> is used to specify
|
|
a verification time, the check is not suppressed.
|
|
<DT id="21"><B>-partial_chain</B><DD>
|
|
|
|
|
|
Allow verification to succeed even if a <I>complete</I> 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.
|
|
<DT id="22"><B>-policy arg</B><DD>
|
|
|
|
|
|
Enable policy processing and add <B>arg</B> to the user-initial-policy-set (see
|
|
<FONT SIZE="-1">RFC5280</FONT>). The policy <B>arg</B> can be an object name an <FONT SIZE="-1">OID</FONT> in numeric form.
|
|
This argument can appear more than once.
|
|
<DT id="23"><B>-policy_check</B><DD>
|
|
|
|
|
|
Enables certificate policy processing.
|
|
<DT id="24"><B>-policy_print</B><DD>
|
|
|
|
|
|
Print out diagnostics related to policy processing.
|
|
<DT id="25"><B>-purpose purpose</B><DD>
|
|
|
|
|
|
The intended use for the certificate. If this option is not specified,
|
|
<B>verify</B> will not consider certificate purpose during chain verification.
|
|
Currently accepted uses are <B>sslclient</B>, <B>sslserver</B>, <B>nssslserver</B>,
|
|
<B>smimesign</B>, <B>smimeencrypt</B>. See the <B></B><FONT SIZE="-1"><B>VERIFY OPERATION</B></FONT><B></B> section for more
|
|
information.
|
|
<DT id="26"><B>-suiteB_128_only</B>, <B>-suiteB_128</B>, <B>-suiteB_192</B><DD>
|
|
|
|
|
|
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 <FONT SIZE="-1">RFC6460</FONT> for details. In particular the supported signature algorithms are
|
|
reduced to support only <FONT SIZE="-1">ECDSA</FONT> and <FONT SIZE="-1">SHA256</FONT> or <FONT SIZE="-1">SHA384</FONT> and only the elliptic curves
|
|
P-256 and P-384.
|
|
<DT id="27"><B>-trusted_first</B><DD>
|
|
|
|
|
|
When constructing the certificate chain, use the trusted certificates specified
|
|
via <B>-CAfile</B>, <B>-CApath</B> or <B>-trusted</B> before any certificates specified via
|
|
<B>-untrusted</B>.
|
|
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.
|
|
<DT id="28"><B>-no_alt_chains</B><DD>
|
|
|
|
|
|
By default, unless <B>-trusted_first</B> 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</B> always on, this option has no
|
|
effect.
|
|
<DT id="29"><B>-untrusted file</B><DD>
|
|
|
|
|
|
A <B>file</B> of additional untrusted certificates (intermediate issuer CAs) used
|
|
to construct a certificate chain from the subject certificate to a trust-anchor.
|
|
The <B>file</B> should contain one or more certificates in <FONT SIZE="-1">PEM</FONT> format.
|
|
This option can be specified more than once to include untrusted certificates
|
|
from multiple <B>files</B>.
|
|
<DT id="30"><B>-trusted file</B><DD>
|
|
|
|
|
|
A <B>file</B> of trusted certificates, which must be self-signed, unless the
|
|
<B>-partial_chain</B> option is specified.
|
|
The <B>file</B> contains one or more certificates in <FONT SIZE="-1">PEM</FONT> 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</B>.
|
|
This option can be specified more than once to include trusted certificates
|
|
from multiple <B>files</B>.
|
|
This option implies the <B>-no-CAfile</B> and <B>-no-CApath</B> options.
|
|
This option cannot be used in combination with either of the <B>-CAfile</B> or
|
|
<B>-CApath</B> options.
|
|
<DT id="31"><B>-use_deltas</B><DD>
|
|
|
|
|
|
Enable support for delta CRLs.
|
|
<DT id="32"><B>-verbose</B><DD>
|
|
|
|
|
|
Print extra information about the operations being performed.
|
|
<DT id="33"><B>-auth_level level</B><DD>
|
|
|
|
|
|
Set the certificate chain authentication security level to <B>level</B>.
|
|
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</B>.
|
|
The signature algorithm security level is enforced for all the certificates in
|
|
the chain except for the chain's <I>trust anchor</I>, which is either directly
|
|
trusted or validated by means other than its signature.
|
|
See <B><A HREF="/cgi-bin/man/man2html?3+SSL_CTX_set_security_level">SSL_CTX_set_security_level</A></B>(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 <FONT SIZE="-1">MD5</FONT> signatures or <FONT SIZE="-1">RSA</FONT> keys
|
|
shorter than 1024 bits.
|
|
<DT id="34"><B>-verify_depth num</B><DD>
|
|
|
|
|
|
Limit the certificate chain to <B>num</B> intermediate <FONT SIZE="-1">CA</FONT> certificates.
|
|
A maximal depth chain can have up to <B>num+2</B> certificates, since neither the
|
|
end-entity certificate nor the trust-anchor certificate count against the
|
|
<B>-verify_depth</B> limit.
|
|
<DT id="35"><B>-verify_email email</B><DD>
|
|
|
|
|
|
Verify if the <B>email</B> matches the email address in Subject Alternative Name or
|
|
the email in the subject Distinguished Name.
|
|
<DT id="36"><B>-verify_hostname hostname</B><DD>
|
|
|
|
|
|
Verify if the <B>hostname</B> matches <FONT SIZE="-1">DNS</FONT> name in Subject Alternative Name or
|
|
Common Name in the subject certificate.
|
|
<DT id="37"><B>-verify_ip ip</B><DD>
|
|
|
|
|
|
Verify if the <B>ip</B> matches the <FONT SIZE="-1">IP</FONT> address in Subject Alternative Name of
|
|
the subject certificate.
|
|
<DT id="38"><B>-verify_name name</B><DD>
|
|
|
|
|
|
Use default verification policies like trust model and required certificate
|
|
policies identified by <B>name</B>.
|
|
The trust model determines which auxiliary trust or reject OIDs are applicable
|
|
to verifying the given certificate chain.
|
|
See the <B>-addtrust</B> and <B>-addreject</B> options of the <B><A HREF="/cgi-bin/man/man2html?1+x509">x509</A></B>(1) command-line
|
|
utility.
|
|
Supported policy names include: <B>default</B>, <B>pkcs7</B>, <B>smime_sign</B>,
|
|
<B>ssl_client</B>, <B>ssl_server</B>.
|
|
These mimics the combinations of purpose and trust settings used in <FONT SIZE="-1">SSL, CMS</FONT>
|
|
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</B> options are functionally equivalent to the
|
|
corresponding <B>-purpose</B> settings.
|
|
<DT id="39"><B>-x509_strict</B><DD>
|
|
|
|
|
|
For strict X.509 compliance, disable non-compliant workarounds for broken
|
|
certificates.
|
|
<DT id="40"><B>-show_chain</B><DD>
|
|
|
|
|
|
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''.
|
|
<DT id="41"><B>-</B><DD>
|
|
|
|
|
|
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>-</B>.
|
|
<DT id="42"><B>certificates</B><DD>
|
|
|
|
|
|
One or more certificates to verify. If no certificates are given, <B>verify</B>
|
|
will attempt to read a certificate from standard input. Certificates must be
|
|
in <FONT SIZE="-1">PEM</FONT> format.
|
|
</DL>
|
|
<A NAME="lbAF"> </A>
|
|
<H2>VERIFY OPERATION</H2>
|
|
|
|
|
|
|
|
The <B>verify</B> program uses the same functions as the internal <FONT SIZE="-1">SSL</FONT> and S/MIME
|
|
verification, therefore this description applies to these verify operations
|
|
too.
|
|
<P>
|
|
|
|
There is one crucial difference between the verify operations performed
|
|
by the <B>verify</B> 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.
|
|
<P>
|
|
|
|
The verify operation consists of a number of separate steps.
|
|
<P>
|
|
|
|
Firstly a certificate chain is built up starting from the supplied certificate
|
|
and ending in the root <FONT SIZE="-1">CA.</FONT>
|
|
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
|
|
<FONT SIZE="-1">CA.</FONT>
|
|
<P>
|
|
|
|
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.
|
|
<P>
|
|
|
|
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 <FONT SIZE="-1">CA</FONT>
|
|
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.
|
|
<P>
|
|
|
|
The second operation is to check every untrusted certificate's extensions for
|
|
consistency with the supplied purpose. If the <B>-purpose</B> 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
|
|
<FONT SIZE="-1">CA</FONT> certificates. The precise extensions required are described in more detail in
|
|
the <B></B><FONT SIZE="-1"><B>CERTIFICATE EXTENSIONS</B></FONT><B></B> section of the <B>x509</B> utility.
|
|
<P>
|
|
|
|
The third operation is to check the trust settings on the root <FONT SIZE="-1">CA.</FONT> The root <FONT SIZE="-1">CA</FONT>
|
|
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.
|
|
<P>
|
|
|
|
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.
|
|
<P>
|
|
|
|
If all operations complete successfully then certificate is considered valid. If
|
|
any operation fails then the certificate is not valid.
|
|
<A NAME="lbAG"> </A>
|
|
<H2>DIAGNOSTICS</H2>
|
|
|
|
|
|
|
|
When a verify operation fails the output messages can be somewhat cryptic. The
|
|
general form of the error message is:
|
|
<P>
|
|
|
|
|
|
|
|
<PRE>
|
|
server.pem: /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit)
|
|
error 24 at 1 depth lookup:invalid CA certificate
|
|
|
|
</PRE>
|
|
|
|
|
|
<P>
|
|
|
|
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 <FONT SIZE="-1">CA</FONT> that signed the certificate and so on. Finally a text version
|
|
of the error number is presented.
|
|
<P>
|
|
|
|
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''.
|
|
<DL COMPACT>
|
|
<DT id="43"><B>X509_V_OK</B><DD>
|
|
|
|
|
|
The operation was successful.
|
|
<DT id="44"><B>X509_V_ERR_UNSPECIFIED</B><DD>
|
|
|
|
|
|
Unspecified error; should not happen.
|
|
<DT id="45"><B>X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT</B><DD>
|
|
|
|
|
|
The issuer certificate of a looked up certificate could not be found. This
|
|
normally means the list of trusted certificates is not complete.
|
|
<DT id="46"><B>X509_V_ERR_UNABLE_TO_GET_CRL</B><DD>
|
|
|
|
|
|
The <FONT SIZE="-1">CRL</FONT> of a certificate could not be found.
|
|
<DT id="47"><B>X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE</B><DD>
|
|
|
|
|
|
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 <FONT SIZE="-1">RSA</FONT> keys.
|
|
<DT id="48"><B>X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE</B><DD>
|
|
|
|
|
|
The <FONT SIZE="-1">CRL</FONT> 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.
|
|
<DT id="49"><B>X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY</B><DD>
|
|
|
|
|
|
The public key in the certificate SubjectPublicKeyInfo could not be read.
|
|
<DT id="50"><B>X509_V_ERR_CERT_SIGNATURE_FAILURE</B><DD>
|
|
|
|
|
|
The signature of the certificate is invalid.
|
|
<DT id="51"><B>X509_V_ERR_CRL_SIGNATURE_FAILURE</B><DD>
|
|
|
|
|
|
The signature of the certificate is invalid.
|
|
<DT id="52"><B>X509_V_ERR_CERT_NOT_YET_VALID</B><DD>
|
|
|
|
|
|
The certificate is not yet valid: the notBefore date is after the
|
|
current time.
|
|
<DT id="53"><B>X509_V_ERR_CERT_HAS_EXPIRED</B><DD>
|
|
|
|
|
|
The certificate has expired: that is the notAfter date is before the
|
|
current time.
|
|
<DT id="54"><B>X509_V_ERR_CRL_NOT_YET_VALID</B><DD>
|
|
|
|
|
|
The <FONT SIZE="-1">CRL</FONT> is not yet valid.
|
|
<DT id="55"><B>X509_V_ERR_CRL_HAS_EXPIRED</B><DD>
|
|
|
|
|
|
The <FONT SIZE="-1">CRL</FONT> has expired.
|
|
<DT id="56"><B>X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD</B><DD>
|
|
|
|
|
|
The certificate notBefore field contains an invalid time.
|
|
<DT id="57"><B>X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD</B><DD>
|
|
|
|
|
|
The certificate notAfter field contains an invalid time.
|
|
<DT id="58"><B>X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD</B><DD>
|
|
|
|
|
|
The <FONT SIZE="-1">CRL</FONT> lastUpdate field contains an invalid time.
|
|
<DT id="59"><B>X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD</B><DD>
|
|
|
|
|
|
The <FONT SIZE="-1">CRL</FONT> nextUpdate field contains an invalid time.
|
|
<DT id="60"><B>X509_V_ERR_OUT_OF_MEM</B><DD>
|
|
|
|
|
|
An error occurred trying to allocate memory. This should never happen.
|
|
<DT id="61"><B>X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT</B><DD>
|
|
|
|
|
|
The passed certificate is self-signed and the same certificate cannot
|
|
be found in the list of trusted certificates.
|
|
<DT id="62"><B>X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN</B><DD>
|
|
|
|
|
|
The certificate chain could be built up using the untrusted certificates
|
|
but the root could not be found locally.
|
|
<DT id="63"><B>X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY</B><DD>
|
|
|
|
|
|
The issuer certificate could not be found: this occurs if the issuer
|
|
certificate of an untrusted certificate cannot be found.
|
|
<DT id="64"><B>X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE</B><DD>
|
|
|
|
|
|
No signatures could be verified because the chain contains only one
|
|
certificate and it is not self signed.
|
|
<DT id="65"><B>X509_V_ERR_CERT_CHAIN_TOO_LONG</B><DD>
|
|
|
|
|
|
The certificate chain length is greater than the supplied maximum
|
|
depth. Unused.
|
|
<DT id="66"><B>X509_V_ERR_CERT_REVOKED</B><DD>
|
|
|
|
|
|
The certificate has been revoked.
|
|
<DT id="67"><B>X509_V_ERR_INVALID_CA</B><DD>
|
|
|
|
|
|
A <FONT SIZE="-1">CA</FONT> certificate is invalid. Either it is not a <FONT SIZE="-1">CA</FONT> or its extensions
|
|
are not consistent with the supplied purpose.
|
|
<DT id="68"><B>X509_V_ERR_PATH_LENGTH_EXCEEDED</B><DD>
|
|
|
|
|
|
The basicConstraints pathlength parameter has been exceeded.
|
|
<DT id="69"><B>X509_V_ERR_INVALID_PURPOSE</B><DD>
|
|
|
|
|
|
The supplied certificate cannot be used for the specified purpose.
|
|
<DT id="70"><B>X509_V_ERR_CERT_UNTRUSTED</B><DD>
|
|
|
|
|
|
The root <FONT SIZE="-1">CA</FONT> is not marked as trusted for the specified purpose.
|
|
<DT id="71"><B>X509_V_ERR_CERT_REJECTED</B><DD>
|
|
|
|
|
|
The root <FONT SIZE="-1">CA</FONT> is marked to reject the specified purpose.
|
|
<DT id="72"><B>X509_V_ERR_SUBJECT_ISSUER_MISMATCH</B><DD>
|
|
|
|
|
|
Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
|
|
<B>-issuer_checks</B> option.
|
|
<DT id="73"><B>X509_V_ERR_AKID_SKID_MISMATCH</B><DD>
|
|
|
|
|
|
Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
|
|
<B>-issuer_checks</B> option.
|
|
<DT id="74"><B>X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH</B><DD>
|
|
|
|
|
|
Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
|
|
<B>-issuer_checks</B> option.
|
|
<DT id="75"><B>X509_V_ERR_KEYUSAGE_NO_CERTSIGN</B><DD>
|
|
|
|
|
|
Not used as of OpenSSL 1.1.0 as a result of the deprecation of the
|
|
<B>-issuer_checks</B> option.
|
|
<DT id="76"><B>X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER</B><DD>
|
|
|
|
|
|
Unable to get <FONT SIZE="-1">CRL</FONT> issuer certificate.
|
|
<DT id="77"><B>X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION</B><DD>
|
|
|
|
|
|
Unhandled critical extension.
|
|
<DT id="78"><B>X509_V_ERR_KEYUSAGE_NO_CRL_SIGN</B><DD>
|
|
|
|
|
|
Key usage does not include <FONT SIZE="-1">CRL</FONT> signing.
|
|
<DT id="79"><B>X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION</B><DD>
|
|
|
|
|
|
Unhandled critical <FONT SIZE="-1">CRL</FONT> extension.
|
|
<DT id="80"><B>X509_V_ERR_INVALID_NON_CA</B><DD>
|
|
|
|
|
|
Invalid non-CA certificate has <FONT SIZE="-1">CA</FONT> markings.
|
|
<DT id="81"><B>X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED</B><DD>
|
|
|
|
|
|
Proxy path length constraint exceeded.
|
|
<DT id="82"><B>X509_V_ERR_PROXY_SUBJECT_INVALID</B><DD>
|
|
|
|
|
|
Proxy certificate subject is invalid. It <FONT SIZE="-1">MUST</FONT> be the same as the issuer
|
|
with a single <FONT SIZE="-1">CN</FONT> component added.
|
|
<DT id="83"><B>X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE</B><DD>
|
|
|
|
|
|
Key usage does not include digital signature.
|
|
<DT id="84"><B>X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED</B><DD>
|
|
|
|
|
|
Proxy certificates not allowed, please use <B>-allow_proxy_certs</B>.
|
|
<DT id="85"><B>X509_V_ERR_INVALID_EXTENSION</B><DD>
|
|
|
|
|
|
Invalid or inconsistent certificate extension.
|
|
<DT id="86"><B>X509_V_ERR_INVALID_POLICY_EXTENSION</B><DD>
|
|
|
|
|
|
Invalid or inconsistent certificate policy extension.
|
|
<DT id="87"><B>X509_V_ERR_NO_EXPLICIT_POLICY</B><DD>
|
|
|
|
|
|
No explicit policy.
|
|
<DT id="88"><B>X509_V_ERR_DIFFERENT_CRL_SCOPE</B><DD>
|
|
|
|
|
|
Different <FONT SIZE="-1">CRL</FONT> scope.
|
|
<DT id="89"><B>X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE</B><DD>
|
|
|
|
|
|
Unsupported extension feature.
|
|
<DT id="90"><B>X509_V_ERR_UNNESTED_RESOURCE</B><DD>
|
|
|
|
|
|
<FONT SIZE="-1">RFC 3779</FONT> resource not subset of parent's resources.
|
|
<DT id="91"><B>X509_V_ERR_PERMITTED_VIOLATION</B><DD>
|
|
|
|
|
|
Permitted subtree violation.
|
|
<DT id="92"><B>X509_V_ERR_EXCLUDED_VIOLATION</B><DD>
|
|
|
|
|
|
Excluded subtree violation.
|
|
<DT id="93"><B>X509_V_ERR_SUBTREE_MINMAX</B><DD>
|
|
|
|
|
|
Name constraints minimum and maximum not supported.
|
|
<DT id="94"><B>X509_V_ERR_APPLICATION_VERIFICATION</B><DD>
|
|
|
|
|
|
Application verification failure. Unused.
|
|
<DT id="95"><B>X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE</B><DD>
|
|
|
|
|
|
Unsupported name constraint type.
|
|
<DT id="96"><B>X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX</B><DD>
|
|
|
|
|
|
Unsupported or invalid name constraint syntax.
|
|
<DT id="97"><B>X509_V_ERR_UNSUPPORTED_NAME_SYNTAX</B><DD>
|
|
|
|
|
|
Unsupported or invalid name syntax.
|
|
<DT id="98"><B>X509_V_ERR_CRL_PATH_VALIDATION_ERROR</B><DD>
|
|
|
|
|
|
<FONT SIZE="-1">CRL</FONT> path validation error.
|
|
<DT id="99"><B>X509_V_ERR_PATH_LOOP</B><DD>
|
|
|
|
|
|
Path loop.
|
|
<DT id="100"><B>X509_V_ERR_SUITE_B_INVALID_VERSION</B><DD>
|
|
|
|
|
|
Suite B: certificate version invalid.
|
|
<DT id="101"><B>X509_V_ERR_SUITE_B_INVALID_ALGORITHM</B><DD>
|
|
|
|
|
|
Suite B: invalid public key algorithm.
|
|
<DT id="102"><B>X509_V_ERR_SUITE_B_INVALID_CURVE</B><DD>
|
|
|
|
|
|
Suite B: invalid <FONT SIZE="-1">ECC</FONT> curve.
|
|
<DT id="103"><B>X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM</B><DD>
|
|
|
|
|
|
Suite B: invalid signature algorithm.
|
|
<DT id="104"><B>X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED</B><DD>
|
|
|
|
|
|
Suite B: curve not allowed for this <FONT SIZE="-1">LOS.</FONT>
|
|
<DT id="105"><B>X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256</B><DD>
|
|
|
|
|
|
Suite B: cannot sign P-384 with P-256.
|
|
<DT id="106"><B>X509_V_ERR_HOSTNAME_MISMATCH</B><DD>
|
|
|
|
|
|
Hostname mismatch.
|
|
<DT id="107"><B>X509_V_ERR_EMAIL_MISMATCH</B><DD>
|
|
|
|
|
|
Email address mismatch.
|
|
<DT id="108"><B>X509_V_ERR_IP_ADDRESS_MISMATCH</B><DD>
|
|
|
|
|
|
<FONT SIZE="-1">IP</FONT> address mismatch.
|
|
<DT id="109"><B>X509_V_ERR_DANE_NO_MATCH</B><DD>
|
|
|
|
|
|
<FONT SIZE="-1">DANE TLSA</FONT> authentication is enabled, but no <FONT SIZE="-1">TLSA</FONT> records matched the
|
|
certificate chain.
|
|
This error is only possible in <B><A HREF="/cgi-bin/man/man2html?1+s_client">s_client</A></B>(1).
|
|
<DT id="110"><B>X509_V_ERR_EE_KEY_TOO_SMALL</B><DD>
|
|
|
|
|
|
<FONT SIZE="-1">EE</FONT> certificate key too weak.
|
|
<DT id="111"><B>X509_ERR_CA_KEY_TOO_SMALL</B><DD>
|
|
|
|
|
|
<FONT SIZE="-1">CA</FONT> certificate key too weak.
|
|
<DT id="112"><B>X509_ERR_CA_MD_TOO_WEAK</B><DD>
|
|
|
|
|
|
<FONT SIZE="-1">CA</FONT> signature digest algorithm too weak.
|
|
<DT id="113"><B>X509_V_ERR_INVALID_CALL</B><DD>
|
|
|
|
|
|
nvalid certificate verification context.
|
|
<DT id="114"><B>X509_V_ERR_STORE_LOOKUP</B><DD>
|
|
|
|
|
|
Issuer certificate lookup error.
|
|
<DT id="115"><B>X509_V_ERR_NO_VALID_SCTS</B><DD>
|
|
|
|
|
|
Certificate Transparency required, but no valid SCTs found.
|
|
<DT id="116"><B>X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION</B><DD>
|
|
|
|
|
|
Proxy subject name violation.
|
|
<DT id="117"><B>X509_V_ERR_OCSP_VERIFY_NEEDED</B><DD>
|
|
|
|
|
|
Returned by the verify callback to indicate an <FONT SIZE="-1">OCSP</FONT> verification is needed.
|
|
<DT id="118"><B>X509_V_ERR_OCSP_VERIFY_FAILED</B><DD>
|
|
|
|
|
|
Returned by the verify callback to indicate <FONT SIZE="-1">OCSP</FONT> verification failed.
|
|
<DT id="119"><B>X509_V_ERR_OCSP_CERT_UNKNOWN</B><DD>
|
|
|
|
|
|
Returned by the verify callback to indicate that the certificate is not recognized
|
|
by the <FONT SIZE="-1">OCSP</FONT> responder.
|
|
</DL>
|
|
<A NAME="lbAH"> </A>
|
|
<H2>BUGS</H2>
|
|
|
|
|
|
|
|
Although the issuer checks are a considerable improvement over the old
|
|
technique they still suffer from limitations in the underlying X509_LOOKUP
|
|
<FONT SIZE="-1">API.</FONT> One consequence of this is that trusted certificates with matching
|
|
subject name must either appear in a file (as specified by the <B>-CAfile</B>
|
|
option) or a directory (as specified by <B>-CApath</B>). If they occur in
|
|
both then only the certificates in the file will be recognised.
|
|
<P>
|
|
|
|
Previous versions of OpenSSL assume certificates with matching subject
|
|
name are identical and mishandled them.
|
|
<P>
|
|
|
|
Previous versions of this documentation swapped the meaning of the
|
|
<B>X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT</B> and
|
|
<B>X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY</B> error codes.
|
|
<A NAME="lbAI"> </A>
|
|
<H2>SEE ALSO</H2>
|
|
|
|
|
|
|
|
<B><A HREF="/cgi-bin/man/man2html?1+x509">x509</A></B>(1)
|
|
<A NAME="lbAJ"> </A>
|
|
<H2>HISTORY</H2>
|
|
|
|
|
|
|
|
The <B>-show_chain</B> option was added in OpenSSL 1.1.0.
|
|
<P>
|
|
|
|
The <B>-issuer_checks</B> option is deprecated as of OpenSSL 1.1.0 and
|
|
is silently ignored.
|
|
<A NAME="lbAK"> </A>
|
|
<H2>COPYRIGHT</H2>
|
|
|
|
|
|
|
|
Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved.
|
|
<P>
|
|
|
|
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 <FONT SIZE="-1">LICENSE</FONT> in the source distribution or at
|
|
<<A HREF="https://www.openssl.org/source/license.html">https://www.openssl.org/source/license.html</A>>.
|
|
<P>
|
|
|
|
<HR>
|
|
<A NAME="index"> </A><H2>Index</H2>
|
|
<DL>
|
|
<DT id="120"><A HREF="#lbAB">NAME</A><DD>
|
|
<DT id="121"><A HREF="#lbAC">SYNOPSIS</A><DD>
|
|
<DT id="122"><A HREF="#lbAD">DESCRIPTION</A><DD>
|
|
<DT id="123"><A HREF="#lbAE">OPTIONS</A><DD>
|
|
<DT id="124"><A HREF="#lbAF">VERIFY OPERATION</A><DD>
|
|
<DT id="125"><A HREF="#lbAG">DIAGNOSTICS</A><DD>
|
|
<DT id="126"><A HREF="#lbAH">BUGS</A><DD>
|
|
<DT id="127"><A HREF="#lbAI">SEE ALSO</A><DD>
|
|
<DT id="128"><A HREF="#lbAJ">HISTORY</A><DD>
|
|
<DT id="129"><A HREF="#lbAK">COPYRIGHT</A><DD>
|
|
</DL>
|
|
<HR>
|
|
This document was created by
|
|
<A HREF="/cgi-bin/man/man2html">man2html</A>,
|
|
using the manual pages.<BR>
|
|
Time: 00:05:29 GMT, March 31, 2021
|
|
</BODY>
|
|
</HTML>
|