Daniel Silverstone & I have been trying to get some debug output of
this bug during the Manchester BSP. 

It strongly appears to be a bug in the gnutls library, rather than curl
and is also restricted to client certificates only. gnutls is failing
in the rehandshake for client certificates. This section of gtls.c:

  if(ret == GNUTLS_E_REHANDSHAKE) {
    /* BLOCKING call, this is bad but a work-around for now. Fixing
this "the proper way" takes a whole lot of work. */
    CURLcode rc = handshake(conn, num, FALSE, FALSE);
    if(rc)
      /* handshake() writes error message on its own */
      *curlcode = rc;
    else
      *curlcode = CURLE_AGAIN; /* then return as if this was a
wouldblock */ return -1;
  }

Performing a manual glutls-cli does not work for client certificates
when the equivalent command with openssl s_client does work.

Tested with:

gnutls-cli --insecure -p 443
--x509certfile /etc/apt/client-certs/test-client.apt-test.aviatis.com.crt
--x509keyfile /etc/apt/client-certs/test-client.apt-test.aviatis.com.key
apt-test.aviatis.com

Also tested with libgnutls26 (2.10.2-1) from experimental.

Entering the data:
GET /apt-cacher/ftp.us.debian.org/debian/dists/squeeze/Release HTTP/1.1
Host: apt-test.aviatis.com

Gives:

*** Non fatal error: Rehandshake was requested by the peer.
*** Received rehandshake request

*** Fatal error: Unsafe renegotiation denied.
*** Rehandshake Failed.
*** Fatal error: An unexpected TLS packet was received.
*** Server has terminated the connection abnormally.

openssl command:
openssl s_client -key test-client.apt-test.aviatis.com.key -cert
test-client.apt-test.aviatis.com.crt -connect apt-test.aviatis.com:https

-- 


Neil Williams
=============
http://www.linux.codehelp.co.uk/

Attachment: pgpZKHG2KeqcS.pgp
Description: PGP signature

Reply via email to