Bodo Moeller wrote:
> 
> 
> To do this, you can first create both CAs as usual (including their
> self-signed certs) and then do "openssl ca -ss_cert
> cacert_of_2nd_level_ca.pem ..."  (using "-ss_cert <filename>" instead
> of "-in <filename>" means that the input is a X.509 self-signed
> certificate rather than the usual certificate request).  In an
> additional step, you'd probably have to use Steve Henson's ca-fix
> utility in order to make CA #2's certificate issued by CA #1 a valid
> X.509v3 CA certificate ("-caset" option).  (In this very moment you'll
> be violating the X.509 standard because two different certificates
> from the same issuer will exist sharing the same serial number [AFAIK
> ca-fix does not change the serial number -- correct me if I'm wrong].

Yes you are correct ca-fix doesn't change the serial number. The serial
conflict can be avoided by either creating a certificate request for CA
#2 or converting its certificate into a request and then have CA #1 sign
it.

> Really the "ca" utility ought to have an option allowing the signer to
> set basic contraints [i.e. "cA" and "pathLenConstraint"]; maybe you
> can already do this somehow by putting appropriate entries in oid.cnf
> and ssleay.cnf?)
> 

You can't currently do this but I'm developing some extension handling
code to allow this to be done. You would end up adding a line like this:

basicConstraints=critical, CA:TRUE, pathlen:10

for example.

> Note however that, if your certicate accepting software is
> SSLeay/OpenSSL based, it usually shouldn't be configured to accept
> non-flat hierarchies (i.e. CAs other than root CAs): The libary itself
> does, as far as I know, not parse X.509v3 extensions and ignores them
> even if they are marked critical.  If you allow a depth of more than 1,
> then any holder of a ("user") certificate situated at a lower depth
> can issue certificates that OpenSSL will accept as valid, even though
> that user certificate typically was never intended as a CA certificate.

Some software gets round this by not doing chain verification: so that
all subordinate CA's need to be trusted as well.

This is a kludge and the proper thing is to have chain verification in
the verify routines. This is on my list of "things to do".

Steve.
-- 
Dr Stephen N. Henson. UK based freelance Cryptographic Consultant. 
For info see homepage at http://www.drh-consultancy.demon.co.uk/
Email: [EMAIL PROTECTED]
NOTE NEW (13/12/98) PGP key: via homepage.

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to