It seems that the PEM-encoded certificate coming out of OpenSSL (0.9.8a in
my case) contains new lines without leading space, which is interpreted as a
new HTTP header.
Even more important, the last empty line leads to 2 new lines without
leading space, which is interpreted as the end of all HTTP headers.

This could be fixed by removing all new lines in the PEM-encoded
certificate, in ssl_engine_vars.c:

static char *ssl_var_lookup_ssl_cert_PEM(apr_pool_t *p, X509 *xs)
{
   ...
   BIO_free(bio);

+ /* remove all new lines (CR & LF) */
+ {
+  char *source, *target;
+  for ( source = target = result; *source; source++ ) {
+   if ( (*source != 0x0A) && (*source != 0x0D) ) *target++ = *source;
+  }
+  *target = NUL;
+ }

   return result;
}


Remark: the test
  if ( (*source != 0x0A) && (*source != 0x0D) )
could also be replaced by a more general one:
  if ( *source <= ' ' )


Reply via email to