On Sun, Aug 18, 2002 at 09:32:43PM -0400, Tom Zerucha wrote:
> I hope everyone has heard by now of the IE SSL Certificate problem:
>
> http://online.securityfocus.com/archive/1/286895/2002-08-08/2002-08-14/1
> http://www.theregister.co.uk/content/4/26620.html
>
> Some time ago, the certificates and the directory would be
> automatically installed and included when I did something like
> s_client, it would display the cert chain and information and it
> usually found things and verified it properly. Now it doesn't work.
> ANYWHERE. Apple's Mac OS X / Darwin, Linux, etc.
I do not understand your statement. OpenSSL never installed any certificates.
> I can't find any implementation that has the certificates properly
> installed. Even if all the applications work properly, they will all
> fail because the root certs won't be there to validate the chain.
I do not understand your statement. What kind of applications are you
looking for?
>
> Curl and lynx-ssl both have cert bugs, probably more severe than IE
> since they don't seem to do anything to check the certs (I have
> contacted the authors and supplied patches). I haven't checked
> wget-ssl, links-ssl, and others, but I suspect they are broken too.
See below.
> I thought Open Source was supposed to be better than Microsoft,
> especially on issues like security.
It is.
> I just spent a while searching for implementation information about
> how to CORRECTLY write the cert callback on openssl.org. I even had
> trouble finding this list. No news. No information. Nothing. A few
> sparse docs. Some links, some broken.
Here is one of the problems. Before I wrote the manual page about
for SSL_CTX_set_verify() (including verify_callback()) there was no
documentation and the example code in s_cb.c is bad in the sense that
it does not properly handle verification failures.
I discovered this while writing Postfix/TLS.
> First, the certs and hashes aren't installed by default so things
> won't work even if implemented correctly. Right now the problems with
> the applications can't be fixed with a useful result since it requires
> the signing certs to do validation. I have to do "make rehash" then
> copy the contents of the directory.
OpenSSL does not ship with root certificates. The selection of these
root certificates is a political issue that should be handled by the
application.
> Second, SSL_CTX_set_default_verify_paths(conn->ssl.ctx) isn't being
> called. There are no default paths, so many apps couldn't find them
> anyway.
There is no problem in not finding certificates. Each application developer
should decide himself which root CAs to trust.
Microsoft has the model of a central CA store. OpenSSL has no such model.
> Third, even if the callback returns "not ok", the SSL_connect function
> returns and the SSL_get_error doesn't say anything about cert errors.
This I doubt. Did you read the manual pages I wrote?
> The default callback seems to check things, but doesn't report
> anything and doesn't prevent the connection. As far as I can tell,
> the only way to pass the information from the callback to the main
> routine is via a global variable and you have to use that to exit
> after the call to SSL_connect.
>
> I don't know what the historic reasons for doing things a particular
> way, but I would suggest the following (in order of importance):
>
> 1. Install the certs by default, or if there are nontechnical reasons
> not to, add something prominent to the readmes and make process so
> that the certs directory will be populated by the users or the
> distributor creators.
We should discuss the usefulness of such a model first.
> 1a. Add the rehash function to the tools/apps that are installed.
serv01 21: ls -al /usr/local/ssl/bin
total 812
drwxr-xr-x 2 root sys 96 Aug 12 15:04 .
drwxr-xr-x 9 root sys 1024 Aug 12 15:04 ..
-rwxr-xr-x 1 root sys 3597 Aug 12 13:22 c_rehash
-rwxr-xr-x 1 root sys 409902 Aug 12 13:22 openssl
It is installed by default.
> 1b. Create an "add-on" archive for just the certs directory or
> certs.pem file so no rebuilds would be necessary.
mod_ssl used to come with a root CA bundle extracted from Netscape(?).
I remember having read information, that some CAs even consider there
CA certificates to be "protected by copyright".
> Without 1, even if everything is fixed on the app level, it would just
> render the application unusable in most cases. This might be the
> reason most applications don't bother to check security - they can't.
That's nonsense. I wrote an application myself. It can check.
> 2. Have SSL_connect FAIL UNLESS a non-default verify callback forces
> ok to be true. Have the default verify callback check the cert chain
> properly.
SSL_connect() failes, as soon as SSL_VERIFY_PEER is set by the application
and it requires a verify_callback() to override this behaviour.
> Here, the idea is that with anything to do with security, the best
> thing to do is to fail unless explicitly told not to. Either it can
> be done once here, or every app using it for browsing will need
> fixing.
This already is OpenSSL's default.
> 3. (this would be optional, but it would break more things if not
> done) Make the default paths load upon context creation, have the user
> set these to NULL if that is what is wanted.
No. The application should explicitely call it.
Best regards,
Lutz
--
Lutz Jaenicke [EMAIL PROTECTED]
http://www.aet.TU-Cottbus.DE/personen/jaenicke/
BTU Cottbus, Allgemeine Elektrotechnik
Universitaetsplatz 3-4, D-03044 Cottbus
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]