Bonjour, Le 22/08/2013 14:56, Peter1234 a écrit :
You misunderstand how it’s supposed to work. OpenSSL does not prevent you from signing anything. It can’t; for example, you could use other software and generate the signature.Instead, when the recipient gets a certificate, and verifies the chain, it should reject the chain because the signing CA was not legitimate (pathlen exceeded). Hi Rich, following lines are copied from RFC 5280: The pathLenConstraint field is meaningful only if the cA boolean is asserted and the key usage extension, if present, asserts the keyCertSign bit (Section 4.2.1.3). In this case, it gives the maximum number of non-self-issued intermediate certificates that may follow this certificate in a valid certification path. (Note: The last certificate in the certification path is not an intermediate certificate, and is not included in this limit. Usually, the last certificate is an end entity certificate, but it can be a CA certificate.) A pathLenConstraint of zero indicates that no non- self-issued intermediate CA certificates may follow in a valid certification path. Where it appears, the pathLenConstraint field MUST be greater than or equal to zero. Where pathLenConstraint does not appear, no limit is imposed. I assumed openssl would conform to RFC standards and therfore supposed that it takes care of pathlengths specified in CA certificates.
This applies to "relying parties", i.e. the entity that performs the certificate validation. As Rich wrote, anybody having the private key could sign anything (even without OpenSSL), and it's the relying party duty to verify that the certificate chain matches constraints. In that role, OpenSSL correctly checks those constraints.
Take your CA3 example, sign another certificate below it, and ask OpenSSL to verify the chain.
______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List [email protected] Automated List Manager [email protected]
