Re: [exim] GnuTLS / OpenSSL interop problems

Top Page
Delete this message
Reply to this message
Author: Tony Finch
Date:  
To: exim-users
Subject: Re: [exim] GnuTLS / OpenSSL interop problems
Viktor Dukhovni <exim-users@???> wrote:
>
> Does this happen during data transmission, or during the handshake?


Based on a few samples it occurs well into the connection, either at end
of the message data (i.e. <CRLF>.<CRLF>) or at the end of the envelope.
OpenSSL gets upset by something and sends an alert which aborts the
connection.

OpenSSL 1.0.1e 11 Feb 2013
built on: Wed Feb 27 18:30:33 GMT 2013
platform: linux-x86_64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/opt/OpenSSL-1.0.1e+0/etc"

On the server (OpenSSL end) I see:

2014-03-03 18:28:23 +0000 1WKXbD-0006CZ-Dm TLS error (SSL_read): error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac
2014-03-03 18:28:23 +0000 SMTP connection from pip.srcf.societies.cam.ac.uk [131.111.179.83]:39651 I=[131.111.8.135]:25 lost while reading message data

On the client (GnuTLS end) I see:

        TLS error on connection to ppsw.cam.ac.uk [131.111.8.135] (recv):
        A TLS fatal alert has been received.: Bad record MAC


This has occurred with at least GnuTLS 2.8.6-1+squeeze2 (Debian) and
2.12.14-5ubuntu3.6

With the latter client they negotiate TLS 1.0 and cipher suite
TLS_RSA_WITH_AES_256_CBC_SHA

There's a pcap of the connection corresponding to the failure above, plus
a throwaway private key for decrypting the stream at
http://www-uxsup.csx.cam.ac.uk/~fanf2/tmp/

Tony.
--
<fanf@???> <dot@???> http://dotat.at/ ${sg{\N${sg{\
N\}{([^N]*)(.)(.)(.*)}{\$1\$3\$2\$1\$3\n\$2\$3\$4\$3\n\$3\$2\$4}}\
\N}{([^N]*)(.)(.)(.*)}{\$1\$3\$2\$1\$3\n\$2\$3\$4\$3\n\$3\$2\$4}}