The second handshake message in frame 18 (Certificate Request) has an empty certificate_authorities record (shown as "Distinguished Names Length: 0" in the dump). TLS v1.0 specifies that this record must contain at least 3 entries:
struct { ClientCertificateType certificate_types<1..2^8-1>; DistinguishedName certificate_authorities<3..2^16-1>; } CertificateRequest; I've come across implementations like this before, and one that didn't even include anything in the certificate_types field. Surprisingly, there are other implementations that just see the CertificateRequest and reply with the Certificate, and things work even though it should result in a fatal failure. IE will do client authentication with certificate_authorities missing, but not with certificate_types also missing, even though "openssl s_client" will successfully reply with it's client Certificate if both fields are empty. Whichever component is sending the CertificateRequest is not compilant with TLS v1.0. Regards, Steven -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Bob Bramwell Sent: Thursday, 25 August 2005 4:44 AM To: openssl-users@openssl.org Subject: TLS handshake failure: who's right? Greetings Group Gurus, I am trying to get a device that purportedly talks TLSv1 to connect to a system running OpenSSL 0.9.6. After the ServerHelloDone the other device reports: No TLS session key in Client Key Exchange The SSL/TLS implementation on said device (a VOIP phone) is of unknown pedigree; pretty sure it is NOT OpenSSL. Can anyone shed any light on what might be going wrong? Following is the complete ethereal dump (minus a certificate or two). Many thanks. [many snips] No. Time Source Sport Destination Dport Protocol Info 18 22.560146 66.166.206.78 5061 199.166.37.22 2075 TLS Server Hello, Certificate, Certificate Request, Server Hello Done Frame 18 (1354 bytes on wire, 1354 bytes captured) Arrival Time: Aug 23, 2005 16:53:00.046739000 Time delta from previous packet: 0.000825000 seconds Time since reference or first frame: 22.560146000 seconds Frame Number: 18 Packet Length: 1354 bytes Capture Length: 1354 bytes Ethernet II, Src: 00:90:0b:03:29:4c, Dst: 00:00:c5:a9:6e:9c Destination: 00:00:c5:a9:6e:9c (00:00:c5:a9:6e:9c) Source: 00:90:0b:03:29:4c (00:90:0b:03:29:4c) Type: IP (0x0800) Internet Protocol, Src Addr: 66.166.206.78 (66.166.206.78), Dst Addr: 199.166.37.22 (199.166.37.22) Version: 4 Header length: 20 bytes Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00) 0000 00.. = Differentiated Services Codepoint: Default (0x00) .... ..0. = ECN-Capable Transport (ECT): 0 .... ...0 = ECN-CE: 0 Total Length: 1340 Identification: 0xd58a (54666) Flags: 0x04 (Don't Fragment) 0... = Reserved bit: Not set .1.. = Don't fragment: Set ..0. = More fragments: Not set Fragment offset: 0 Time to live: 64 Protocol: TCP (0x06) Header checksum: 0x6280 (correct) Source: 66.166.206.78 (66.166.206.78) Destination: 199.166.37.22 (199.166.37.22) Transmission Control Protocol, Src Port: 5061 (5061), Dst Port: 2075 (2075), Seq: 2903151812, Ack: 2201575059, Len: 1288 Source port: 5061 (5061) Destination port: 2075 (2075) Sequence number: 2903151812 Next sequence number: 2903153100 Acknowledgement number: 2201575059 Header length: 32 bytes Flags: 0x0018 (PSH, ACK) 0... .... = Congestion Window Reduced (CWR): Not set .0.. .... = ECN-Echo: Not set ..0. .... = Urgent: Not set ...1 .... = Acknowledgment: Set .... 1... = Push: Set .... .0.. = Reset: Not set .... ..0. = Syn: Not set .... ...0 = Fin: Not set Window size: 5792 Checksum: 0x9336 (correct) Options: (12 bytes) NOP NOP Time stamp: tsval 7553361, tsecr 1136805 Secure Socket Layer TLS Record Layer: Server Hello Content Type: Handshake (22) Version: TLS 1.0 (0x0301) Length: 74 Handshake Protocol: Server Hello Handshake Type: Server Hello (2) Length: 70 Version: TLS 1.0 (0x0301) Random.gmt_unix_time: Aug 23, 2005 16:53:00.000000000 Random.bytes Session ID Length: 32 Session ID (32 bytes) Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004) Compression Method: null (0) TLS Record Layer: Certificate Content Type: Handshake (22) Version: TLS 1.0 (0x0301) Length: 1186 Handshake Protocol: Certificate Handshake Type: Certificate (11) Length: 1182 Certificates Length: 1179 Certificates (1179 bytes) TLS Record Layer: Multiple Handshake Messages Content Type: Handshake (22) Version: TLS 1.0 (0x0301) Length: 13 Handshake Protocol: Certificate Request Handshake Type: Certificate Request (13) Length: 5 Certificate types count: 2 Certificate types (2 types) Certificate type: RSA Sign (1) Certificate type: DSS Sign (2) Distinguished Names Length: 0 Handshake Protocol: Server Hello Done Handshake Type: Server Hello Done (14) Length: 0 [a small trim] ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager [EMAIL PROTECTED]