Download the Cryptlib manual

Transcript
200
Certificates in Detail
CRYPT_Reduced level of compliance with X.509 and
COMPLIANCELEVEL_ PKIX standards. This omits handling of
PKIX_PARTIAL
problematic extensions such as name and policy
constraints, whose semantics no-one can quite
agree on, and a few other problematic
extensions defined in various certificate
standards, but checks and enforces all other
PKIX requirements. As with CRYPT_COMLPIANCELEVEL_PKIX_FULL, this
level of checking will reject a number of
certificates in use today.
CRYPT_Moderate level of checking equivalent to that
COMPLIANCELEVEL_ performed by most software in use today. Many
STANDARD
of the more complex and/or obscure extensions
are ignored, which makes it possible to process
certificates generated by other software that
similarly ignores them. In addition many X.509
and PKIX compliance requirements are
significantly relaxed, so that (for example) the
mandatory key usage extension, if absent, may
be synthesised from other information present in
the certificate.
CRYPT_Minimal level of checking required to handle
COMPLIANCELEVEL_ severely broken certificates. All extensions
REDUCED
except the ones controlling certificate and
certificate key usage are ignored, allowing
certificates with invalid or garbled contents to
be processed.
CRYPT_No checking of certificate contents except for a
COMPLIANCELEVEL_ minimal check of the certificate key usage. This
OBLIVIOUS
level of checking merely confirms that the
object looks vaguely like a certificate, and that
its signature verifies. This allows expired and
otherwise invalid certificates to be processed.
These reduced levels of checking are required in order to successfully process
certificates generated by other software. Although cryptlib-generated certificates can
be processed at the CRYPT_COMPLIANCELEVEL_PKIX_FULL compliance level,
it may be necessary to lower the level all the way down to CRYPT_COMPLIANCELEVEL_OBLIVIOUS in order to handle certificates from other
applications. If you encounter a certificate that can’t be processed at a given
compliance level, for example one that generates a CRYPT_ERROR_BADDATA on
import or a CRYPT_ERROR_INVALID when checked, you can either request that
the originator of the certificate fix it (this is unlikely to happen) or lower the
compliance level until the certificate can be imported/checked.
At reduced compliance levels, cryptlib skips potentially problematic certificate
extensions, so that these will seem to disappear from the certificate as the compliance
level is lowered. For example, the name constraints extension will be decoded at
CRYPT_COMPLIANCELEVEL_PKIX_FULL, but not at any lower level, so that
unless the certificate is processed at that level the extension will appear to be absent.
In some rare cases CAs may place the user’s email address in the subject altName
instead of the subject DN. Setting the compliance level to one where this extension is
skipped will cause the email address to appear to vanish from the certificate, which
you need to take into account when you add the certificate to a keyset, since you’ll no
longer be able to fetch it from the keyset based on the email address. Conversely,
extra extensions that were skipped at lower levels may appear as the compliance level
is increased and they are processed by cryptlib.