IE had a bug reported:
http://online.securityfocus.com/archive/1/286895/2002-08-08/2002-08-14/1
http://www.theregister.co.uk/content/4/26620.html
The problem exists in wget.
Openssl doesn't install the certs in the proper directory by default.
Use "openssl ca" to find the directory - the path up to the last part
is the directory that should have a certs directory. Doing "make
rehash" when building openssl, and copying the contents of the certs
directory to the target will fix this.
If Openssl is broken, e.g. no certs installed, this will cause wget not
to work.
Attached is a patch that correctly handles cert verification. You may
want to add better error messages or a command line override.
Alternately you can include your own cert chain file and set the
directory or paths, etc. but this is a quick fix and openssl should be
set up properly anyway.
diff -Bbur wget-1.8.2/src/gen_sslfunc.c wget-1.8.2-fix/src/gen_sslfunc.c
--- wget-1.8.2/src/gen_sslfunc.c 2002-05-17 23:14:48.000000000 -0400
+++ wget-1.8.2-fix/src/gen_sslfunc.c 2002-08-18 22:05:34.000000000 -0400
@@ -135,6 +135,7 @@
meth = SSLv23_client_method ();
*ctx = SSL_CTX_new (meth);
SSL_CTX_set_verify (*ctx, verify, verify_callback);
+ SSL_CTX_set_default_verify_paths (*ctx);
if (*ctx == NULL) return SSLERRCTXCREATE;
if (opt.sslcertfile)
{
@@ -154,6 +155,9 @@
Returns 0 if everything went right
Returns 1 if something went wrong ----- TODO: More exit codes
*/
+
+static int goodcert;
+
int
connect_ssl (SSL **con, SSL_CTX *ctx, int fd)
{
@@ -161,6 +165,8 @@
SSL_set_fd (*con, fd);
SSL_set_connect_state (*con);
SSL_connect (*con);
+ if( !goodcert )
+ return 1;
if ((*con)->state != SSL_ST_OK)
return 1;
/*while((SSLerror=ERR_get_error())!=0)
@@ -188,6 +194,7 @@
{
char *s, buf[256];
s = X509_NAME_oneline (X509_get_subject_name (ctx->current_cert),
buf, 256);
+ goodcert = ok;
if (ok == 0) {
switch (ctx->error) {
case X509_V_ERR_CERT_NOT_YET_VALID: