=pod

=head1 NAME

verify - Utility to verify certificates.

=head1 SYNOPSIS

B<openssl> B<verify>
[B<-CApath directory>]
[B<-CAfile file>]
[B<-purpose purpose>]
[B<-untrusted file>]
[B<-help>]
[B<-issuer_checks>]
[B<-verbose>]
[B<->]
[certificates]


=head1 DESCRIPTION

The B<verify> command verifies certificate chains.

=head1 COMMAND OPTIONS

=over 4

=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<-CAfile file>

A file of trusted certificates. The file should contain multiple certificates
in PEM format concatenated together.

=item B<-untrusted file>

A file of untrusted certificates. The file should contain multiple certificates

=item B<-purpose purpose>

the intended use for the certificate. Without this option no chain verification
will be done. 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<-help>

prints out a usage message.

=item B<-verbose>

print extra information about the operations being performed.

=item B<-issuer_checks>

print out diagnostics relating to searches for the issuer certificate
of the current certificate. This shows why each candidate issuer
certificate was rejected. However the presence of rejection messages
does not itself imply that anything is wrong: during the normal
verify process several rejections may take place.

=item B<->

marks 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 certificate filenames are included
then an attempt is made to read a certificate from standard input. They should
all 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. In versions of OpenSSL before 0.9.5a the first certificate whose
subject name matched the issuer of the current certificate was assumed to be
the issuers certificate. In OpenSSL 0.9.6 and later 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 SSLeay and 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.

An exhaustive 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<0 X509_V_OK: ok>

the operation was successful.

=item B<2 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: unable to get issuer certificate>

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

=item B<3 X509_V_ERR_UNABLE_TO_GET_CRL: unable to get certificate CRL>

the CRL of a certificate could not be found. Unused.

=item B<4 X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE: unable to decrypt certificate's 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<5 X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE: unable to decrypt CRL's 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<6 X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY: unable to decode issuer public key>

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

=item B<7 X509_V_ERR_CERT_SIGNATURE_FAILURE: certificate signature failure>

the signature of the certificate is invalid.

=item B<8 X509_V_ERR_CRL_SIGNATURE_FAILURE: CRL signature failure>

the signature of the certificate is invalid. Unused.

=item B<9 X509_V_ERR_CERT_NOT_YET_VALID: certificate is not yet valid>

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

=item B<10 X509_V_ERR_CERT_HAS_EXPIRED: certificate has expired>

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

=item B<11 X509_V_ERR_CRL_NOT_YET_VALID: CRL is not yet valid>

the CRL is not yet valid. Unused.

=item B<12 X509_V_ERR_CRL_HAS_EXPIRED: CRL has expired>

the CRL has expired. Unused.

=item B<13 X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD: format error in certificate's notBefore field>

the certificate notBefore field contains an invalid time.

=item B<14 X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD: format error in certificate's notAfter field>

the certificate notAfter field contains an invalid time.

=item B<15 X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD: format error in CRL's lastUpdate field>

the CRL lastUpdate field contains an invalid time. Unused.

=item B<16 X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD: format error in CRL's nextUpdate field>

the CRL nextUpdate field contains an invalid time. Unused.

=item B<17 X509_V_ERR_OUT_OF_MEM: out of memory>

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

=item B<18 X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: self signed certificate>

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

=item B<19 X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: self signed certificate in certificate chain>

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

=item B<20 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY: unable to get local issuer certificate>

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

=item B<21 X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: unable to verify the first certificate>

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

=item B<22 X509_V_ERR_CERT_CHAIN_TOO_LONG: certificate chain too long>

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

=item B<23 X509_V_ERR_CERT_REVOKED: certificate revoked>

the certificate has been revoked. Unused.

=item B<24 X509_V_ERR_INVALID_CA: invalid CA certificate>

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

=item B<25 X509_V_ERR_PATH_LENGTH_EXCEEDED: path length constraint exceeded>

the basicConstraints pathlength parameter has been exceeded.

=item B<26 X509_V_ERR_INVALID_PURPOSE: unsupported certificate purpose>

the supplied certificate cannot be used for the specified purpose.

=item B<27 X509_V_ERR_CERT_UNTRUSTED: certificate not trusted>

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

=item B<28 X509_V_ERR_CERT_REJECTED: certificate rejected>

the root CA is marked to reject the specified purpose.

=item B<29 X509_V_ERR_SUBJECT_ISSUER_MISMATCH: subject issuer mismatch>

the current candidate issuer certificate was rejected because its subject name
did not match the issuer name of the current certificate. Only displayed when
the B<-issuer_checks> option is set.

=item B<30 X509_V_ERR_AKID_SKID_MISMATCH: authority and subject key identifier mismatch>

the current candidate issuer certificate was rejected because its subject key
identifier was present and did not match the authority key identifier current
certificate. Only displayed when the B<-issuer_checks> option is set.

=item B<31 X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH: authority and issuer serial number mismatch>

the current candidate issuer certificate was rejected because its issuer name
and serial number was present and did not match the authority key identifier
of the current certificate. Only displayed when the B<-issuer_checks> option is set.

=item B<32 X509_V_ERR_KEYUSAGE_NO_CERTSIGN:key usage does not include certificate signing>

the current candidate issuer certificate was rejected because its keyUsage extension
does not permit certificate signing.

=item B<50 X509_V_ERR_APPLICATION_VERIFICATION: application verification failure>

an application specific error. Unused.

=back

=head1 BUGS

Although the issuer checks are a considerably 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.

=head1 SEE ALSO

L<x509(1)|x509(1)>

=cut
