[Pkg-openssl-devel] Bug#642314: Bug#628780: Wrong hash link to cacert.org.pem and wron certificat hash handling at all
Loïc Minier
lool at dooz.org
Wed Sep 21 13:49:06 UTC 2011
Hi
The patch from Debian #628780 caused a regression with certificates
using CRLF line-endings, which prompted me to take a look at the
discussion here. (Debian #642314 is the regression.)
Outside of CRLF line-endings, there seems to be potential for more
regressions in this patch:
a) link_hash_cert() only searches for "BEGIN CERTIFICATE", not for
"BEGIN X509 CERTIFICATE" or "BEGIN TRUSTED CERTIFICATE" which are
allowed in other parts of the file
b) this requires a tempdir with write permissions, which might be a
problem for certain deployments calling c_rehash
c) this causes a lot of writes (each certificate is written to a
tempfile which gets deleted); again, this might be a problem if some
deployments run c_rehash on a large number of certificates
I'm particularly worried about c) because the whole point of c_rehash
is to speed up lookup when there is a large number of certificates
(e.g. client certificates). If there is a large number of
certificates, then writing each of them to a tempfile is going to be
time consuming. If there are many certificates, one can also imagine
that certificates are added/removed frequently, requiring frequent runs
of c_rehash.
The root problem here is really that the openssl command-line doesn't
support multiple certificates in a single file, so why not fix that
instead? e.g. we could add a flag to x509 to output information about
ALL certificates (it already has tons of other random options). This
would allow -fingerprint and -hash or even -text to be useful on files
with multiple certificates. Then ca-certificates would get updated to
use this flag (which probably wouldn't be the default for
backwards-compatibility reasons.)
In my eyes, the drawbacks of the patch are quite bad; perhaps it would
be a better idea to:
* split cacert.org.crt in two files, one per certificate; this would
also allow administrators to enable certificates selectively in
/etc/ca-certificates.conf
* document the limitation in openssl / ca-certificates that only the
first certificate gets picked up
* optionally, we could let ca-certificates or c_rehash fail (if some
flag is set and) if multiple certificates are in a single file
Cheers,
--
Loïc Minier
More information about the Pkg-openssl-devel
mailing list